[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 ¶ms) {
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 ¶ms);
void oPlaytoons_printText(FuncParams ¶ms);
void o7_oemToANSI(FuncParams ¶ms);
+ void o7_ansiToOEM(FuncParams ¶ms);
void oPlaytoons_freeSprite(FuncParams ¶ms);
};
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 ¶ms)
skip(1);
}
+void Script_v7::o7_ansiToOEM(FuncParams ¶ms)
+{
+ startFunc(params);
+ print("&var8_%d", 4 * readUint16());
+ endFunc();
+}
+
void Script_v7::o7_oemToANSI(FuncParams ¶ms)
{
startFunc(params);
+ print("&var8_%d", 4 * readUint16());
endFunc();
- skip(2);
}
void Script_v7::oPlaytoons_freeSprite(FuncParams ¶ms)
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