[Scummvm-git-logs] scummvm branch-3-0 -> 65b8d2f0e93187cd16ecffb3e3f0b7a0481613d4

lephilousophe noreply at scummvm.org
Sat Jan 17 11:38:36 UTC 2026


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:
4c8175a13e M4: Fix spanish text rendering
47a6ecbb85 ANDROID: Build non-NEON release in the release script
65b8d2f0e9 BLADERUNNER: Avoid overflow errors with VQA files


Commit: 4c8175a13e361c2daf0908eee29669ac2b298398
    https://github.com/scummvm/scummvm/commit/4c8175a13e361c2daf0908eee29669ac2b298398
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2026-01-17T12:36:28+01:00

Commit Message:
M4: Fix spanish text rendering

An ASCII converter is put in place for this release.

Changed paths:
    engines/m4/riddle/vars.cpp
    engines/m4/riddle/vars.h


diff --git a/engines/m4/riddle/vars.cpp b/engines/m4/riddle/vars.cpp
index b6f31d71f78..738732802b0 100644
--- a/engines/m4/riddle/vars.cpp
+++ b/engines/m4/riddle/vars.cpp
@@ -24,12 +24,55 @@
 #include "m4/riddle/inventory.h"
 #include "m4/gui/gui_sys.h"
 #include "m4/platform/keys.h"
+#include "m4/m4.h"
 
 namespace M4 {
 namespace Riddle {
 
 Vars *g_vars;
 
+/**
+ * Structure for accented character replacement
+ */
+struct ConverterEntry {
+	const char *_find;
+	byte _replace;
+};
+static const ConverterEntry SPANISH_ASCII_CONVERTERS[] = {
+	{ "\xc7", 1 },
+	{ "\xfc", 2 },
+	{ "\xe9", 3 },
+	{ "\xe2", 4 },
+	{ "\xe4", 5 },
+	{ "\xe0", 6 },
+	{ "\xe7", 0x0C },
+	{ "\xea", 0x0D },
+	{ "\xeb", 0x0E },
+	{ "\xe8", 0x0F },
+	{ "\xef", 0x69 },
+	{ "\xee", 0x25 },
+	{ "\xec", 0x12 },
+	{ "\xc1", 0x23 },
+	{ "\xc9", 0x14 },
+	{ "\xf4", 0x15 },
+	{ "\xf6", 0x16 },
+	{ "\xf2", 0x17 },
+	{ "\xfb", 0x18 },
+	{ "\xf9", 0x19 },
+	{ "\xcd", 0x3C },
+	{ "\xd3", 0x3E },
+	{ "\xda", 0x1C },
+	{ "\xe1", 0x1D },
+	{ "\xed", 0x1E },
+	{ "\xf3", 0x1F },
+	{ "\xfa", 0x40 },
+	{ "\xf1", 0x5F },
+	{ "\xd1", 0x7E },
+	{ "\xbf", 0x7C },
+	{ "\xa1", 0x7F },
+	{ nullptr, 0 }
+};
+
 Vars::Vars() {
 	g_vars = this;
 
@@ -60,6 +103,10 @@ void Vars::main_cold_data_init() {
 
 	initMouseSeries("cursor", nullptr);
 	conv_set_default_text_colour(7, 8);
+
+	if (g_engine->getLanguage() == Common::ES_ESP) {
+		_custom_ascii_converter = spanish_ascii_converter_proc;
+	}
 }
 
 void Vars::global_menu_system_init() {
@@ -79,5 +126,14 @@ void Vars::initialize_game() {
 	_G(flags).reset();
 }
 
+void Vars::spanish_ascii_converter_proc(char *string) {
+	char *str;
+
+	for (const auto *entry = SPANISH_ASCII_CONVERTERS; entry->_find; entry++) {
+		while ((str = strstr(string, entry->_find)) != nullptr)
+			*str = entry->_replace;
+	}
+}
+
 } // namespace Riddle
 } // namespace M4
diff --git a/engines/m4/riddle/vars.h b/engines/m4/riddle/vars.h
index 8f0d0a1e5be..568e49dbda5 100644
--- a/engines/m4/riddle/vars.h
+++ b/engines/m4/riddle/vars.h
@@ -41,6 +41,9 @@ enum global_triggers {
 };
 
 class Vars : public M4::Vars {
+private:
+	static void spanish_ascii_converter_proc(char *string);
+
 protected:
 	void main_cold_data_init() override;
 


Commit: 47a6ecbb859de44d66ce03107ebe86c16d29df3f
    https://github.com/scummvm/scummvm/commit/47a6ecbb859de44d66ce03107ebe86c16d29df3f
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2026-01-17T12:37:20+01:00

Commit Message:
ANDROID: Build non-NEON release in the release script

Also rename the assets using the version name.

Changed paths:
    backends/platform/android/build-release.sh


diff --git a/backends/platform/android/build-release.sh b/backends/platform/android/build-release.sh
index cb2c3202908..a83d694895d 100755
--- a/backends/platform/android/build-release.sh
+++ b/backends/platform/android/build-release.sh
@@ -16,6 +16,9 @@ VERSION_CODE=$(sed -n -e '/versionCode /s/[\t ]*versionCode //p' "${ROOT}/dists/
 # Make sure the last digit is 0
 VERSION_CODE=$((${VERSION_CODE} / 10 * 10))
 
+# Get the version name to name assets
+VERSION_NAME=$(sed -n -e '/versionName /s/[\t ]*versionName "\(.*\)"$/\1/p' "${ROOT}/dists/android/build.gradle")
+
 patch_version() {
 	local dir
 	dir=$2
@@ -38,6 +41,8 @@ patch_version ${VERSION_CODE}
 # Build an AAB bundle with games
 make -j${NPROC} androidfatbundlerelease GAMES_BUNDLE_DIRECTORY="$GAMES_FOLDER"
 
+mv ScummVM-release.aab scummvm-${VERSION_NAME}-android.aab
+
 # For APK strip out the games
 if [ -n "$GAMES_FOLDER" ]; then
 	rm -rf "./android_project/mainAssets/src/main/assets/assets/games"
@@ -58,7 +63,7 @@ plat_build() {
 	fi
 	patch_version $((${VERSION_CODE} + ${subcode})) "${subbuild}"
 	make -j${NPROC} -C ${subbuild} androidrelease
-	mv ${subbuild}/ScummVM-release-unsigned.apk ScummVM-release-unsigned-${subarch}.apk
+	mv ${subbuild}/ScummVM-release-unsigned.apk scummvm-${VERSION_NAME}-android-${subarch}-unsigned.apk
 }
 
 # Build ARMv7a with versionCode 1
@@ -72,3 +77,14 @@ plat_build 3 x86
 
 # Build x86_64 with versionCode 4
 plat_build 4 x86_64
+
+# Finally build ARMv7a without NEON with versionCode 1
+
+# Configure...
+mkdir -p build-androidarmeabi-v7a-nn
+cd build-androidarmeabi-v7a-nn
+"${ROOT}/configure" --host=android-arm-v7a --disable-ext-neon --disable-debug --enable-release
+cd ..
+
+# ...build like the others
+plat_build 1 armeabi-v7a-nn


Commit: 65b8d2f0e93187cd16ecffb3e3f0b7a0481613d4
    https://github.com/scummvm/scummvm/commit/65b8d2f0e93187cd16ecffb3e3f0b7a0481613d4
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2026-01-17T12:37:31+01:00

Commit Message:
BLADERUNNER: Avoid overflow errors with VQA files

Changed paths:
    engines/bladerunner/vqa_decoder.cpp


diff --git a/engines/bladerunner/vqa_decoder.cpp b/engines/bladerunner/vqa_decoder.cpp
index 2647a25f978..0aa76dbb245 100644
--- a/engines/bladerunner/vqa_decoder.cpp
+++ b/engines/bladerunner/vqa_decoder.cpp
@@ -710,9 +710,9 @@ VQADecoder::VQAVideoTrack::VQAVideoTrack(VQADecoder *vqaDecoder) {
 	_offsetX   = header->offsetX;
 	_offsetY   = header->offsetY;
 
-	_maxVPTRSize = header->maxVPTRSize;
-	_maxCBFZSize = header->maxCBFZSize;
-	_maxZBUFChunkSize = vqaDecoder->_maxZBUFChunkSize;
+	_maxVPTRSize = roundup(header->maxVPTRSize);
+	_maxCBFZSize = roundup(header->maxCBFZSize);
+	_maxZBUFChunkSize = roundup(vqaDecoder->_maxZBUFChunkSize);
 
 	_codebook = nullptr;
 	_cbfz     = nullptr;
@@ -723,7 +723,7 @@ VQADecoder::VQAVideoTrack::VQAVideoTrack(VQADecoder *vqaDecoder) {
 	_curFrame = -1;
 
 	_zbufChunkSize = 0;
-	_zbufChunk     = new uint8[roundup(_maxZBUFChunkSize)];
+	_zbufChunk     = new uint8[_maxZBUFChunkSize];
 
 	_viewDataSize = 0;
 	_viewData     = nullptr;
@@ -844,7 +844,7 @@ bool VQADecoder::VQAVideoTrack::readCBFZ(Common::SeekableReadStream *s, uint32 s
 	codebookInfo.data = new uint8[roundup(codebookSize)];
 
 	if (!_cbfz) {
-		_cbfz = new uint8[roundup(_maxCBFZSize)];
+		_cbfz = new uint8[_maxCBFZSize];
 	}
 
 	s->read(_cbfz, roundup(size));
@@ -871,7 +871,7 @@ bool VQADecoder::VQAVideoTrack::readCBPZ(Common::SeekableReadStream* s, uint32 s
 	}
 
 	if (!_cbfzNext) {
-		_cbfzNext = new uint8[roundup(_maxCBFZSize)];
+		_cbfzNext = new uint8[_maxCBFZSize];
 		_codebookInfoNext = new CodebookInfo();
 		_codebookInfoNext->frame = 0;
 		_codebookInfoNext->data = new uint8[roundup(_cbParts * _maxBlocks)];
@@ -883,20 +883,21 @@ bool VQADecoder::VQAVideoTrack::readCBPZ(Common::SeekableReadStream* s, uint32 s
 	s->read(_cbfzNext + _accumulatedCBPZsizeToCBF, roundup(size));
 
 	_accumulatedCBPZsizeToCBF += size;
-	assert(_accumulatedCBPZsizeToCBF <= roundup(_maxCBFZSize));
+	assert(_accumulatedCBPZsizeToCBF <= _maxCBFZSize);
 	++_countOfCBPsToCBF;
 	return true;
 }
 
 bool VQADecoder::VQAVideoTrack::readZBUF(Common::SeekableReadStream *s, uint32 size) {
-	if (size > _maxZBUFChunkSize) {
+	uint32 roundedSize = roundup(size);
+	if (roundedSize > _maxZBUFChunkSize) {
 		warning("VQA ERROR: ZBUF chunk size: %08x > %08x", size, _maxZBUFChunkSize);
-		s->skip(roundup(size));
+		s->skip(roundedSize);
 		return false;
 	}
 
 	_zbufChunkSize = size;
-	s->read(_zbufChunk, roundup(size));
+	s->read(_zbufChunk, roundedSize);
 
 	return true;
 }
@@ -1061,7 +1062,7 @@ bool VQADecoder::VQAVideoTrack::readVPTZ(Common::SeekableReadStream* s, uint32 s
 		return false;
 
 	if (!_vptz) {
-		_vptz = new uint8[roundup(_maxVPTRSize)];
+		_vptz = new uint8[_maxVPTRSize];
 	}
 
 	s->read(_vptz, roundup(size));
@@ -1084,7 +1085,7 @@ bool VQADecoder::VQAVideoTrack::readVPTR(Common::SeekableReadStream *s, uint32 s
 		return false;
 
 	if (!_vpointer) {
-		_vpointer = new uint8[roundup(_maxVPTRSize)];
+		_vpointer = new uint8[_maxVPTRSize];
 	}
 
 	_vpointerSize = size;




More information about the Scummvm-git-logs mailing list