[Scummvm-git-logs] scummvm-tools master -> 8665aa1d3221a6cc884026f5ed7144fac512e0e9

mgerhardy noreply at scummvm.org
Thu Sep 3 18:23:25 UTC 2026


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

Summary:
8665aa1d32 MACS2: fixed hotspot names encoding


Commit: 8665aa1d3221a6cc884026f5ed7144fac512e0e9
    https://github.com/scummvm/scummvm-tools/commit/8665aa1d3221a6cc884026f5ed7144fac512e0e9
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2026-08-30T15:38:01+02:00

Commit Message:
MACS2: fixed hotspot names encoding

Changed paths:
    engines/macs2/TRANSLATE.md
    engines/macs2/create_macs2_translation.cpp


diff --git a/engines/macs2/TRANSLATE.md b/engines/macs2/TRANSLATE.md
index 8ac61b7b..3a3be3f3 100644
--- a/engines/macs2/TRANSLATE.md
+++ b/engines/macs2/TRANSLATE.md
@@ -14,7 +14,7 @@ create_macs2_translation extract RESOURCE.MCS macs2.pot
 
 This produces a `.pot` file with all game strings grouped by dialog context. The format uses `msgctxt` to identify the source (scene or object) and `\n` to separate lines within a dialog unit.
 
-Hotspot overlay labels are appended as one entry per unique German noun (`msgctxt "hotspotlabel"`). Object and NPC overlay names use `msgctxt "objectlabel"`. Both lists are embedded in `create_macs2_translation.cpp` and cover the **full game** only (`kSceneHotspotNames[]` and the non-demo branch of `gameobjects.cpp`); the demo reuses the same hotspot label strings for its subset of scene/hotspot indices, but object indices can differ between demo and full game.
+Hotspot overlay labels are appended as one entry per unique German noun (`msgctxt "hotspotlabel"`). Object and NPC overlay names use `msgctxt "objectlabel"`. Both lists are embedded in `create_macs2_translation.cpp` and cover the **full game** only (`kSceneHotspotNames[]` and `kObjectNames[]` in `engines/macs2/hotspot_names.cpp`); the demo reuses the same hotspot label strings for its subset of scene/hotspot indices, but object indices can differ between demo and full game. Keys are CP850 and must match the engine tables exactly.
 
 When packing, hotspot and object labels share one CP850 lookup table in the DAT file (duplicate German strings need only one translation).
 
diff --git a/engines/macs2/create_macs2_translation.cpp b/engines/macs2/create_macs2_translation.cpp
index 2d1d90f0..bd901fe2 100644
--- a/engines/macs2/create_macs2_translation.cpp
+++ b/engines/macs2/create_macs2_translation.cpp
@@ -47,7 +47,7 @@
  * Each msgid groups consecutive strings that form one dialog/description unit.
  * The \n separates individual lines that the engine displays separately.
  * Hotspot and object overlay labels are embedded below (full game only).
- * Keep in sync with engines/macs2/hotspot_names.cpp and gameobjects.cpp.
+ * Keep in sync with engines/macs2/hotspot_names.cpp.
  * UI labels (action bar / HUD chrome) are German source keys; keep in sync
  * with engines/macs2/actionbar.cpp.
  */
@@ -727,6 +727,9 @@ static const char *const kHotspotLabels[] = {
 
 static const uint32_t kHotspotLabelsCount = sizeof(kHotspotLabels) / sizeof(kHotspotLabels[0]);
 
+// Unique object/NPC overlay names (CP850), full game only (kObjectNames[]).
+// Demo object indices can differ; unique label strings are a subset of this list.
+// Sync with ScummVM engines/macs2/hotspot_names.cpp when labels change.
 static const char *const kObjectLabels[] = {
 	"Axt",
 	"Axtklinge",
@@ -759,7 +762,7 @@ static const char *const kObjectLabels[] = {
 	"Figur",
 	"Flaschenzug",
 	"Griff",
-	"Grosser B" "\xe4" "r",
+	"Grosser B" "\x84" "r",
 	"Hackenspitze",
 	"Haken",
 	"Haken und Seil",
@@ -775,14 +778,14 @@ static const char *const kObjectLabels[] = {
 	"Hutschachtel",
 	"Kacheln",
 	"Kakerlake",
-	"Kapit" "\xe4" "n",
+	"Kapit" "\x84" "n",
 	"Kartoffeln",
 	"Kartonschachtel",
 	"Kerze",
 	"Kerzen",
 	"Kieselsteine",
 	"Kleider",
-	"Kleiner B" "\xe4" "r",
+	"Kleiner B" "\x84" "r",
 	"Knallfr" "\x94" "sche",
 	"Koffer",
 	"Kohlenschaufel",
@@ -803,7 +806,7 @@ static const char *const kObjectLabels[] = {
 	"Mrs. Butler",
 	"Murmeln",
 	"Musketen",
-	"M" "\xe4" "dchen",
+	"M" "\x84" "dchen",
 	"Nase",
 	"Old Firehand",
 	"Panther",
@@ -870,7 +873,7 @@ static const char *const kUiLabels[] = {
 static const uint32_t kUiLabelsCount = sizeof(kUiLabels) / sizeof(kUiLabels[0]);
 
 static void extractObjectLabels(FILE *out, int &totalEntries) {
-	fprintf(out, "# Object/NPC overlay labels (unique names, full game, CP850/latin-1 source)\n\n");
+	fprintf(out, "# Object/NPC overlay labels (unique names, full game, CP850 source)\n\n");
 	for (uint32_t i = 0; i < kObjectLabelsCount; ++i) {
 		writePoLabelEntry(out, "objectlabel", kObjectLabels[i]);
 		totalEntries++;




More information about the Scummvm-git-logs mailing list