[Scummvm-git-logs] scummvm-tools master -> c4759a7f8deea9741aa72c9b49c1c9d4febde1da

sdelamarre noreply at scummvm.org
Thu Apr 24 20:20:47 UTC 2025


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

Summary:
76934568e6 GOB: Append labels from .IDE file to function names in degob
93f152e01b GOB: Add new database opcodes in degob
07529eaeda GOB: Add more Adibou2 stubbed opcodes in degob
f44c4bb04f GOB: Add o7_ansiToOEM/o7_oemToANSI Adibou2 opcodes
c4759a7f8d GOB: Fix some missing opening braces in degob's expression parser output


Commit: 76934568e62e442e29fc6fe13d175d0b2dad3f06
    https://github.com/scummvm/scummvm-tools/commit/76934568e62e442e29fc6fe13d175d0b2dad3f06
Author: Simon Delamarre (simon.delamarre14 at gmail.com)
Date: 2025-04-24T22:01:56+02:00

Commit Message:
GOB: Append labels from .IDE file to function names in degob

Syntax: sub_<function offset>[_<function name>]

Changed paths:
    engines/gob/degob_script.cpp
    engines/gob/degob_script_v1.cpp


diff --git a/engines/gob/degob_script.cpp b/engines/gob/degob_script.cpp
index 05b8a42e..22026ba4 100644
--- a/engines/gob/degob_script.cpp
+++ b/engines/gob/degob_script.cpp
@@ -953,15 +953,26 @@ void Script::deGob(int32 offset, bool isLib) {
 }
 
 void Script::deGobFunction() {
+	uint32 pos = getPos();
+	updateOffsetPos(pos);
+	printIndent();
+
+	const char* func_name = nullptr;
 	if (!_funcOffsetsNames.empty()) {
-		auto it = _funcOffsetsNames.find(getPos());
+		auto it = _funcOffsetsNames.find(pos);
 		if (it != _funcOffsetsNames.end()) {
-			print("--- %s ---\n", it->second.c_str());
+			func_name = it->second.c_str();
+			// Skip lib name
+			if (const char* p = strchr(func_name, ' ')) {
+				func_name = p + 1;
+			}
 		}
 	}
-	updateOffsetPos(getPos());
-	printIndent();
-	print("sub_%d {\n", getPos());
+
+	print("sub_%d%s%s {\n",
+		  pos,
+		  func_name ? "_" : "",
+		  func_name ? func_name : "");
 	incIndent();
 
 	funcBlock(2);
diff --git a/engines/gob/degob_script_v1.cpp b/engines/gob/degob_script_v1.cpp
index ed25302f..7f6ddc6d 100644
--- a/engines/gob/degob_script_v1.cpp
+++ b/engines/gob/degob_script_v1.cpp
@@ -880,8 +880,23 @@ void Script_v1::o1_callSub(FuncParams &params) {
 
 	seek(offset);
 
+	const char* func_name = nullptr;
+	if (!_funcOffsetsNames.empty()) {
+		auto it = _funcOffsetsNames.find(offset);
+		if (it != _funcOffsetsNames.end()) {
+			func_name = it->second.c_str();
+			// Skip lib name
+			if (const char* p = strchr(func_name, ' ')) {
+				func_name = p + 1;
+			}
+		}
+	}
+
 	if (peekUint8() == 1) {
-		print("sub_%d();\n", offset);
+		print("sub_%d%s%s();\n",
+			  offset,
+			  func_name ? "_" : "",
+			  func_name ? func_name : "");
 		if (offset >= 128)
 			addFuncOffset(offset);
 	} else if (peekUint8() == 2) {


Commit: 93f152e01b9810482952c58132a8ad9e67b0489a
    https://github.com/scummvm/scummvm-tools/commit/93f152e01b9810482952c58132a8ad9e67b0489a
Author: Simon Delamarre (simon.delamarre14 at gmail.com)
Date: 2025-04-24T22:01:56+02:00

Commit Message:
GOB: Add new database opcodes in degob

Changed paths:
    engines/gob/degob_script_v7.cpp


diff --git a/engines/gob/degob_script_v7.cpp b/engines/gob/degob_script_v7.cpp
index 7bc39ef8..35228ee1 100644
--- a/engines/gob/degob_script_v7.cpp
+++ b/engines/gob/degob_script_v7.cpp
@@ -329,22 +329,22 @@ void Script_v7::setupOpcodes() {
 		/* A8 */
 		{TYPE_NONE, 0, 0, {PARAM_NONE}},
 		{TYPE_NONE, 0, 0, {PARAM_NONE}},
-		{OPCODET(o7_draw0xAA), {PARAM_EXPR, PARAM_EXPR}},
+		{OPCODET(o7_openDatabase), {PARAM_EXPR, PARAM_EXPR}},
 		{TYPE_NONE, 0, 0, {PARAM_NONE}},
 		/* AC */
-		{OPCODET(o7_draw0xAC), {PARAM_EXPR, PARAM_EXPR, PARAM_EXPR}},
-		{OPCODET(o7_draw0xAD), {PARAM_EXPR, PARAM_EXPR}},
+		{OPCODET(o7_openDatabaseTable), {PARAM_EXPR, PARAM_EXPR, PARAM_EXPR}},
+		{OPCODET(o7_closeDatabaseTable), {PARAM_EXPR, PARAM_EXPR}},
 		{OPCODET(o7_draw0xAE), {PARAM_EXPR, PARAM_EXPR}},
-		{OPCODET(o7_draw0xAF), {PARAM_EXPR, PARAM_EXPR, PARAM_EXPR}},
+		{OPCODET(o7_openDatabaseIndex), {PARAM_EXPR, PARAM_EXPR, PARAM_EXPR}},
 		/* B0 */
-		{OPCODET(o7_draw0xB0), {PARAM_EXPR, PARAM_EXPR, PARAM_EXPR}},
-		{OPCODET(o7_draw0xB1), {PARAM_EXPR, PARAM_EXPR}},
+		{OPCODET(o7_findDatabaseRecord), {PARAM_EXPR, PARAM_EXPR, PARAM_EXPR}},
+		{OPCODET(o7_findNextDabaseRecord), {PARAM_EXPR, PARAM_EXPR}},
 		{TYPE_NONE, 0, 0, {PARAM_NONE}},
 		{TYPE_NONE, 0, 0, {PARAM_NONE}},
 		/* B4 */
-		{OPCODET(o7_draw0xB4), {PARAM_EXPR, PARAM_EXPR, PARAM_EXPR, PARAM_VARINDEX}},
+		{OPCODET(o7_getDatabaseRecordValue), {PARAM_EXPR, PARAM_EXPR, PARAM_EXPR, PARAM_VARINDEX}},
 		{TYPE_NONE, 0, 0, {PARAM_NONE}},
-		{OPCODET(o7_draw0xB6), {PARAM_EXPR, PARAM_EXPR, PARAM_VARINDEX}},
+		{OPCODET(o7_checkAnyDatabaseRecordFound), {PARAM_EXPR, PARAM_EXPR, PARAM_VARINDEX}},
 		{TYPE_NONE, 0, 0, {PARAM_NONE}},
 		/* B8 */
 		{TYPE_NONE, 0, 0, {PARAM_NONE}},
@@ -362,8 +362,8 @@ void Script_v7::setupOpcodes() {
 		{TYPE_NONE, 0, 0, {PARAM_NONE}},
 		{TYPE_NONE, 0, 0, {PARAM_NONE}},
 		/* C4 */
-		{OPCODET(o7_opendBase), {PARAM_EXPR, PARAM_EXPR}},
-		{OPCODET(o7_closedBase), {PARAM_EXPR}},
+		{OPCODET(o7_openTranlsationDB), {PARAM_EXPR, PARAM_EXPR}},
+		{OPCODET(o7_closeTranslationDB), {PARAM_EXPR}},
 		{OPCODET(o7_getDBString), {PARAM_EXPR, PARAM_EXPR, PARAM_EXPR, PARAM_EXPR, PARAM_VARINDEX}},
 		{TYPE_NONE, 0, 0, {PARAM_NONE}},
 		/* C8 */


Commit: 07529eaeda0702c621de5a2a279c04696108bbe4
    https://github.com/scummvm/scummvm-tools/commit/07529eaeda0702c621de5a2a279c04696108bbe4
Author: Simon Delamarre (simon.delamarre14 at gmail.com)
Date: 2025-04-24T22:01:56+02:00

Commit Message:
GOB: Add more Adibou2 stubbed opcodes in degob

Changed paths:
    engines/gob/degob_script_v7.cpp


diff --git a/engines/gob/degob_script_v7.cpp b/engines/gob/degob_script_v7.cpp
index 35228ee1..d933e49d 100644
--- a/engines/gob/degob_script_v7.cpp
+++ b/engines/gob/degob_script_v7.cpp
@@ -207,7 +207,7 @@ void Script_v7::setupOpcodes() {
 		{TYPE_NONE, 0, 0, {PARAM_NONE}},
 		{TYPE_NONE, 0, 0, {PARAM_NONE}},
 		/* 48 */
-		{TYPE_NONE, 0, 0, {PARAM_NONE}},
+		{OPCODET(o7_draw0x48), {PARAM_EXPR, PARAM_EXPR}},
 		{TYPE_NONE, 0, 0, {PARAM_NONE}},
 		{TYPE_NONE, 0, 0, {PARAM_NONE}},
 		{TYPE_NONE, 0, 0, {PARAM_NONE}},
@@ -323,14 +323,14 @@ void Script_v7::setupOpcodes() {
 		{TYPE_NONE, 0, 0, {PARAM_NONE}},
 		/* A4 */
 		{OPCODET(o7_loadIFFPalette), {PARAM_EXPR, PARAM_EXPR, PARAM_EXPR}},
-		{TYPE_NONE, 0, 0, {PARAM_NONE}},
-		{TYPE_NONE, 0, 0, {PARAM_NONE}},
+		{OPCODET(o7_draw0xA5), {PARAM_VARINDEX, PARAM_EXPR, PARAM_EXPR, PARAM_EXPR, PARAM_VARINDEX}},
+		{OPCODET(o7_draw0xA6), {PARAM_VARINDEX, PARAM_EXPR, PARAM_VARINDEX}},
 		{TYPE_NONE, 0, 0, {PARAM_NONE}},
 		/* A8 */
 		{TYPE_NONE, 0, 0, {PARAM_NONE}},
 		{TYPE_NONE, 0, 0, {PARAM_NONE}},
 		{OPCODET(o7_openDatabase), {PARAM_EXPR, PARAM_EXPR}},
-		{TYPE_NONE, 0, 0, {PARAM_NONE}},
+		{OPCODET(o7_draw0xAB), {PARAM_EXPR}},
 		/* AC */
 		{OPCODET(o7_openDatabaseTable), {PARAM_EXPR, PARAM_EXPR, PARAM_EXPR}},
 		{OPCODET(o7_closeDatabaseTable), {PARAM_EXPR, PARAM_EXPR}},
@@ -349,18 +349,18 @@ void Script_v7::setupOpcodes() {
 		/* B8 */
 		{TYPE_NONE, 0, 0, {PARAM_NONE}},
 		{TYPE_NONE, 0, 0, {PARAM_NONE}},
-		{TYPE_NONE, 0, 0, {PARAM_NONE}},
+		{OPCODET(o7_draw0xBA), {PARAM_EXPR, PARAM_EXPR, PARAM_EXPR, PARAM_VARINDEX}},
 		{TYPE_NONE, 0, 0, {PARAM_NONE}},
 		/* BC */
 		{TYPE_NONE, 0, 0, {PARAM_NONE}},
 		{TYPE_NONE, 0, 0, {PARAM_NONE}},
-		{TYPE_NONE, 0, 0, {PARAM_NONE}},
-		{TYPE_NONE, 0, 0, {PARAM_NONE}},
+		{OPCODET(o7_draw0xBE), {PARAM_EXPR}},
+		{OPCODET(o7_draw0xBF), {PARAM_EXPR}},
 		/* C0 */
+		{OPCODET(o7_draw0xC0), {PARAM_EXPR, PARAM_EXPR, PARAM_EXPR, PARAM_VARINDEX}},
+		{OPCODET(o7_draw0xC1), {PARAM_EXPR, PARAM_VARINDEX, PARAM_VARINDEX}},
 		{TYPE_NONE, 0, 0, {PARAM_NONE}},
-		{TYPE_NONE, 0, 0, {PARAM_NONE}},
-		{TYPE_NONE, 0, 0, {PARAM_NONE}},
-		{TYPE_NONE, 0, 0, {PARAM_NONE}},
+		{OPCODET(o7_draw0xC3), {PARAM_EXPR, PARAM_EXPR, PARAM_EXPR, PARAM_EXPR, PARAM_EXPR, PARAM_VARINDEX, PARAM_VARINDEX}},
 		/* C4 */
 		{OPCODET(o7_openTranlsationDB), {PARAM_EXPR, PARAM_EXPR}},
 		{OPCODET(o7_closeTranslationDB), {PARAM_EXPR}},
@@ -407,8 +407,8 @@ void Script_v7::setupOpcodes() {
 		{OPCODET(o7_draw0xE6), {PARAM_VARINDEX, PARAM_VARINDEX, PARAM_VARINDEX, PARAM_VARINDEX}},
 		{OPCODET(o7_draw0xE7), {PARAM_VARINDEX}},
 		/* E8 */
-		{TYPE_NONE, 0, 0, {PARAM_NONE}},
-		{TYPE_NONE, 0, 0, {PARAM_NONE}},
+		{OPCODET(o7_draw0xE8), {PARAM_VARINDEX}},
+		{OPCODET(o7_draw0xE9), {PARAM_VARINDEX, PARAM_VARINDEX}},
 		{TYPE_NONE, 0, 0, {PARAM_NONE}},
 		{TYPE_NONE, 0, 0, {PARAM_NONE}},
 		/* EC */
@@ -417,17 +417,17 @@ void Script_v7::setupOpcodes() {
 		{TYPE_NONE, 0, 0, {PARAM_NONE}},
 		{TYPE_NONE, 0, 0, {PARAM_NONE}},
 		/* F0 */
-		{TYPE_NONE, 0, 0, {PARAM_NONE}},
-		{TYPE_NONE, 0, 0, {PARAM_NONE}},
-		{TYPE_NONE, 0, 0, {PARAM_NONE}},
+		{OPCODET(o7_draw0xF0), {PARAM_VARINDEX}},
+		{OPCODET(o7_draw0xF1), {PARAM_NONE}},
+		{OPCODET(o7_executeModAddEvent), {PARAM_VARINDEX, PARAM_VARINDEX, PARAM_VARINDEX, PARAM_VARINDEX}},
 		{TYPE_NONE, 0, 0, {PARAM_NONE}},
 		/* F4 */
-		{TYPE_NONE, 0, 0, {PARAM_NONE}},
-		{TYPE_NONE, 0, 0, {PARAM_NONE}},
-		{TYPE_NONE, 0, 0, {PARAM_NONE}},
-		{TYPE_NONE, 0, 0, {PARAM_NONE}},
+		{OPCODET(o7_executeModSetLength), {PARAM_VARINDEX, PARAM_VARINDEX, PARAM_VARINDEX, PARAM_VARINDEX}},
+		{OPCODET(o7_executeModStart), {PARAM_VARINDEX}},
+		{OPCODET(o7_setTrackVolume), {PARAM_VARINDEX, PARAM_VARINDEX}},
+		{OPCODET(o7_executeModGetPosition), {PARAM_VARINDEX}},
 		/* F8 */
-		{TYPE_NONE, 0, 0, {PARAM_NONE}},
+		{OPCODET(o7_executeModGetPosition), {PARAM_VARINDEX}},
 		{TYPE_NONE, 0, 0, {PARAM_NONE}},
 		{OPCODET(o7_vmdGetSoundBuffer), {PARAM_VARINDEX}},
 		{OPCODET(o7_vmdReleaseSoundBuffer), {PARAM_EXPR, PARAM_VARINDEX}},


Commit: f44c4bb04f2d81741b565c2a777ae78e1ff3c5b8
    https://github.com/scummvm/scummvm-tools/commit/f44c4bb04f2d81741b565c2a777ae78e1ff3c5b8
Author: Simon Delamarre (simon.delamarre14 at gmail.com)
Date: 2025-04-24T22:01:56+02:00

Commit Message:
GOB: Add o7_ansiToOEM/o7_oemToANSI Adibou2 opcodes

Changed paths:
    engines/gob/degob_script.h
    engines/gob/degob_script_v7.cpp


diff --git a/engines/gob/degob_script.h b/engines/gob/degob_script.h
index 451bf5bf..40f62e8d 100644
--- a/engines/gob/degob_script.h
+++ b/engines/gob/degob_script.h
@@ -672,6 +672,7 @@ protected:
 	void o7_loadCursor(FuncParams &params);
 	void oPlaytoons_printText(FuncParams &params);
 	void o7_oemToANSI(FuncParams &params);
+	void o7_ansiToOEM(FuncParams &params);
 	void oPlaytoons_freeSprite(FuncParams &params);
 };
 
diff --git a/engines/gob/degob_script_v7.cpp b/engines/gob/degob_script_v7.cpp
index d933e49d..22ab1faf 100644
--- a/engines/gob/degob_script_v7.cpp
+++ b/engines/gob/degob_script_v7.cpp
@@ -102,7 +102,8 @@ const int Script_v7::_goblinFuncLookUp[][2] = {
 	{2005, 70},
 	{3, 71},
 	{420, 72},
-	{513, 73}
+	{421, 73},
+	{513, 74}
 };
 
 Script_v7::Script_v7(byte *totData, uint32 totSize, ExtTable *extTable) :
@@ -541,7 +542,7 @@ void Script_v7::setupOpcodes() {
 		{OPCODET(o1_manageDataFile), {PARAM_EXPR}},
 	};
 
-	static const OpcodeGoblinEntryV7 opcodesGoblin[74] = {
+	static const OpcodeGoblinEntryV7 opcodesGoblin[75] = {
 		/* 00 */
 		{OPCODEF(o1_dummy), {PARAM_NONE}},
 		{OPCODET(o2_startInfogrames), {PARAM_UINT16}},
@@ -632,6 +633,7 @@ void Script_v7::setupOpcodes() {
 		{TYPE_NONE, 0, 0, {PARAM_NONE}},
 		{TYPE_NONE, 0, 0, {PARAM_NONE}},
 		{OPCODEF(o1_dummy), {PARAM_NONE}},
+		{OPCODEF(o7_ansiToOEM), {PARAM_NONE}},
 		{OPCODEF(o7_oemToANSI), {PARAM_NONE}},
 		{OPCODET(o7_gob0x201), {PARAM_UINT16}}
 	};
@@ -768,11 +770,18 @@ void  Script_v7::oPlaytoons_printText(FuncParams &params)
 	skip(1);
 }
 
+void Script_v7::o7_ansiToOEM(FuncParams &params)
+{
+	startFunc(params);
+	print("&var8_%d", 4 * readUint16());
+	endFunc();
+}
+
 void Script_v7::o7_oemToANSI(FuncParams &params)
 {
 	startFunc(params);
+	print("&var8_%d", 4 * readUint16());
 	endFunc();
-	skip(2);
 }
 
 void Script_v7::oPlaytoons_freeSprite(FuncParams &params)


Commit: c4759a7f8deea9741aa72c9b49c1c9d4febde1da
    https://github.com/scummvm/scummvm-tools/commit/c4759a7f8deea9741aa72c9b49c1c9d4febde1da
Author: Simon Delamarre (simon.delamarre14 at gmail.com)
Date: 2025-04-24T22:20:13+02:00

Commit Message:
GOB: Fix some missing opening braces in degob's expression parser output

Changed paths:
    engines/gob/degob_script.cpp


diff --git a/engines/gob/degob_script.cpp b/engines/gob/degob_script.cpp
index 22026ba4..c131a354 100644
--- a/engines/gob/degob_script.cpp
+++ b/engines/gob/degob_script.cpp
@@ -390,7 +390,7 @@ std::string Script::readExpr(char stopToken) {
 				skip(dimCount);
 
 				for (int i = 0; i < dimCount; i++)
-					expr += readExpr(12) + "->";
+					expr += "{" + readExpr(12) + "->";
 
 				expr += "#";
 
@@ -461,7 +461,7 @@ std::string Script::readExpr(char stopToken) {
 				arrDesc = _ptr;
 				skip(dimCount);
         for (dim = 0; dim < dimCount; dim++) {
-          expr += readExpr(12) + printStr(" of %d", (int16) arrDesc[dim]);
+          expr += "{" + readExpr(12) + printStr(" of %d", (int16) arrDesc[dim]);
 					if (dim != dimCount - 1)
 						expr += "][";
         }
@@ -650,7 +650,7 @@ std::string Script::readVarIndex(uint16 *arg_0, uint16 *arg_4) {
 			skip(var_A);
 
 			for (int i = 0; i < var_A; i++)
-				pref += readExpr(12) + "->";
+				pref += "{" + readExpr(12) + "->";
 
 			pref += "#";
 
@@ -715,7 +715,7 @@ std::string Script::readVarIndex(uint16 *arg_0, uint16 *arg_4) {
 		arrDesc = _ptr;
 		skip(dimCount);
 		for (dim = 0; dim < dimCount; dim++) {
-			expr += readExpr(12);
+			expr += "{" + readExpr(12);
 			expr += printStr(" of %d", (int16) arrDesc[dim]);
 			if (dim != dimCount - 1)
 				expr += "][";




More information about the Scummvm-git-logs mailing list