[Scummvm-git-logs] scummvm master -> ed780bc7a4bf9b603d87d153eba75acee1e0c000

digitall noreply at scummvm.org
Mon Apr 18 00:04:58 UTC 2022


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

Summary:
ed780bc7a4 TINSEL: Add complete opcode mappings for v3


Commit: ed780bc7a4bf9b603d87d153eba75acee1e0c000
    https://github.com/scummvm/scummvm/commit/ed780bc7a4bf9b603d87d153eba75acee1e0c000
Author: Jakob Wagner (wobakj at web.de)
Date: 2022-04-18T01:04:55+01:00

Commit Message:
TINSEL: Add complete opcode mappings for v3

Stub INVENTORY3 and NOTEBOOKADDHYPERLINK libcodes.
This allows the game to reach the first scene when PCM playback is disabled.
Add warning messages when stubbed libcodes are executed.

Changed paths:
    engines/tinsel/tinlib.cpp


diff --git a/engines/tinsel/tinlib.cpp b/engines/tinsel/tinlib.cpp
index 9bc2be934b5..f34fd1026bf 100644
--- a/engines/tinsel/tinlib.cpp
+++ b/engines/tinsel/tinlib.cpp
@@ -4274,16 +4274,43 @@ NoirMapping translateNoirLibCode(int libCode, int32 *pp) {
 	// this is convenient for debug.
 	NoirMapping mapping;
 	switch (libCode) {
+	case 0:
+		error("NoFunction isn't a real function");
+		break;
+	case 1:
+		mapping = NoirMapping{"ACTORBRIGHTNESS", ACTORBRIGHTNESS, 2};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(%d, 0x%08X)", mapping.name, pp[0], pp[1]);
+		break;
+	case 2:
+		mapping = NoirMapping{"ACTORDIRECTION", ACTORDIRECTION, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X)", mapping.name, pp[0]);
+		break;
 	case 3:
 		mapping = NoirMapping{"ACTORPRIORITY", ACTORPRIORITY, 2};
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(%d, 0x%08X)", mapping.name, pp[0], pp[1]);
 		break;
+	case 4:
+		mapping = NoirMapping{"ACTORREF", ACTORREF, 0};
+		debug(7, "%s()", mapping.name);
+		break;
 	case 5:
 		mapping = NoirMapping{"ACTORRGB", ACTORRGB, 2};
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(%d, 0x%08X)", mapping.name, pp[0], pp[1]);
 		break;
+	case 6:
+		mapping = NoirMapping{"ACTORXPOS", ACTORXPOS, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X)", mapping.name, pp[0]);
+		break;
+	case 7:
+		mapping = NoirMapping{"ACTORYPOS", ACTORYPOS, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X)", mapping.name, pp[0]);
+		break;
 	case 8:
 		mapping = NoirMapping{"ADDNOTEBOOK", ADDNOTEBOOK, 1};
 		pp -= mapping.numArgs - 1;
@@ -4294,36 +4321,133 @@ NoirMapping translateNoirLibCode(int libCode, int32 *pp) {
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(0x%08X)", mapping.name, pp[0]);
 		break;
+	case 10:
+		mapping = NoirMapping{"ADDHIGHLIGHT", ADDHIGHLIGHT, 2};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X, 0x%08X)", mapping.name, pp[0], pp[1]);
+		break;
+	case 11:
+		error("Unsupported libCode %d ADDINV 8", libCode);
 	case 12:
 		mapping = NoirMapping{"ADDINV1", ADDINV1, 1};
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(0x%08X)", mapping.name, pp[0]);
 		break;
+	case 13:
+		mapping = NoirMapping{"ADDINV2", ADDINV2, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X)", mapping.name, pp[0]);
+		break;
+	case 14:
+		error("Unsupported libCode %d ADDINV 7", libCode);
+	case 15:
+		error("Unsupported libCode %d ADDINV 4", libCode);
 	case 16:
 		mapping = NoirMapping{"ADDINV3", ADDINV3, 1};
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(%08X)", mapping.name, pp[0]);
 		break;
+	case 17:
+		mapping = NoirMapping{"ADDTOPIC", ADDTOPIC, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(%08X)", mapping.name, pp[0]);
+		break;
 	case 18:
 		mapping = NoirMapping{"BACKGROUND", BACKGROUND, 1};
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(0x%08X)", mapping.name, pp[0]);
 		break;
-	case 37:
-		mapping = NoirMapping{"CONTROL", CONTROL, 1};
+	case 19: // 1 param, calls SetSysVar(ISV_NO_BLOCKING_T3, param == 0)
+		error("Unsupported libCode %d set_isv_blocking", libCode);
+	case 20: // 3 params, assigns values to three globals
+		error("Unsupported libCode %d", libCode);
+	case 21:
+		mapping = NoirMapping{"CALLACTOR", CALLACTOR, 2};
 		pp -= mapping.numArgs - 1;
-		debug(7, "%s(%08X)", mapping.name, pp[0]);
+		debug(7, "%s(0x%08X, 0x%08X)", mapping.name, pp[0], pp[1]);
+		break;
+	case 22:
+		mapping = NoirMapping{"CALLGLOBALPROCESS", CALLGLOBALPROCESS, 2};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X, 0x%08X)", mapping.name, pp[0], pp[1]);
+		break;
+	case 23:
+		mapping = NoirMapping{"CALLOBJECT", CALLOBJECT, 2};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X, 0x%08X)", mapping.name, pp[0], pp[1]);
+		break;
+	case 24:
+		mapping = NoirMapping{"CALLPROCESS", CALLPROCESS, 2};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X, 0x%08X)", mapping.name, pp[0], pp[1]);
+		break;
+	case 25:
+		mapping = NoirMapping{"CALLSCENE", CALLSCENE, 0};
+		debug(7, "%s()", mapping.name);
 		break;
 	case 26:
 		mapping = NoirMapping{"CALLTAG", CALLTAG, 2};
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(0x%08X, 0x%08X)", mapping.name, pp[0], pp[1]);
 		break;
+	case 27:
+		mapping = NoirMapping{"CAMERA", CAMERA, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X)", mapping.name, pp[0]);
+		break;
 	case 28:
 		mapping = NoirMapping{"CDCHANGESCENE", CDCHANGESCENE, 1};
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(0x%08X)", mapping.name, pp[0]);
 		break;
+	case 29:
+		mapping = NoirMapping{"CDDOCHANGE", CDDOCHANGE, 0};
+		debug(7, "%s()", mapping.name);
+		break;
+	case 30:
+		mapping = NoirMapping{"CDENDACTOR", CDENDACTOR, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X)", mapping.name, pp[0]);
+		break;
+	case 31:
+		mapping = NoirMapping{"CDLOAD", CDLOAD, 2};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X, 0x%08X)", mapping.name, pp[0], pp[1]);
+		break;
+	case 32:
+		mapping = NoirMapping{"CDPLAY", CDPLAY, 0};
+		debug(7, "%s()", mapping.name);
+		break;
+	case 33: // Disassembly just returns -1 for this opcode, so map it to ZZZZZZ
+		mapping = NoirMapping{"OP33_NOP", ZZZZZZ, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X)", mapping.name, pp[0]);
+		break;
+	case 34:
+		mapping = NoirMapping{"CLEARHOOKSCENE", CLEARHOOKSCENE, 0};
+		debug(7, "%s()", mapping.name);
+		break;
+	case 35: // 0 params, closes open inventory if it is 1 or 2
+		error("Unsupported libCode %d to close inventory", libCode);
+	case 36: // 0 params, closes open inventory if it is 3
+		error("Unsupported libCode %d to close inventory", libCode);
+	case 37:
+		mapping = NoirMapping{"CONTROL", CONTROL, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(%08X)", mapping.name, pp[0]);
+		break;
+	case 38:
+		mapping = NoirMapping{"CONVERSATION", CONVERSATION, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(%08X)", mapping.name, pp[0]);
+		break;
+	case 39: // 1 param
+		error("Unsupported libCode %d to set_notebook _entry_bool", libCode);
+	case 40:
+		mapping = NoirMapping{"CURSOR", CURSOR, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(%08X)", mapping.name, pp[0]);
+		break;
 	case 41:
 		mapping = NoirMapping{"CURSORXPOS", CURSORXPOS, 0};
 		debug(7, "%s()", mapping.name);
@@ -4338,6 +4462,7 @@ NoirMapping translateNoirLibCode(int libCode, int32 *pp) {
 		debug(7, "%s(0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X)", mapping.name, pp[0], pp[1], pp[2], pp[3], pp[4], pp[5], pp[6], pp[7]);
 		break;
 	case 44: // Changed in Noir
+		warning("TODO: Implement DECINV2 v3");
 		mapping = NoirMapping{"DECINV2", DECINV2, 8};
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X)", mapping.name, pp[0], pp[1], pp[2], pp[3], pp[4], pp[5], pp[6], pp[7]);
@@ -4367,55 +4492,252 @@ NoirMapping translateNoirLibCode(int libCode, int32 *pp) {
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(0x%08X)", mapping.name, pp[0]);
 		break;
+	case 50: // 1 parameter, calls RemFromInventory variant of TinselV1
+		error("Unsupported libCode %d del_inv3_item", libCode);
+	case 51: // 1 parameter
+		error("Unsupported libCode %d DELTOPIC variant", libCode);
+	case 52:
+		mapping = NoirMapping{"DIMMUSIC", DIMMUSIC, 0};
+		debug(7, "%s()", mapping.name);
+		break;
+	case 53:
+		mapping = NoirMapping{"DROP", DROP, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X)", mapping.name, pp[0]);
+		break;
+	case 54:
+		mapping = NoirMapping{"DROPEVERYTHING", DROPEVERYTHING, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X)", mapping.name, pp[0]);
+		break;
+	case 55:
+		mapping = NoirMapping{"DROPOUT", DROPOUT, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X)", mapping.name, pp[0]);
+		break;
+	case 56:
+		mapping = NoirMapping{"EFFECTACTOR", EFFECTACTOR, 0};
+		debug(7, "%s()", mapping.name);
+		break;
+	case 57:
+		mapping = NoirMapping{"ENABLEMENU", ENABLEMENU, 0};
+		debug(7, "%s()", mapping.name);
+		break;
 	case 58:
 		mapping = NoirMapping{"ENDACTOR", ENDACTOR, 1};
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(0x%08X)", mapping.name, pp[0]);
 		break;
+	case 59:
+		mapping = NoirMapping{"ESCAPEOFF", ESCAPEOFF, 0};
+		debug(7, "%s()", mapping.name);
+		break;
+	case 60:
+		mapping = NoirMapping{"ESCAPEON", ESCAPEON, 0};
+		debug(7, "%s()", mapping.name);
+		break;
 	case 61:
 		mapping = NoirMapping{"EVENT", EVENT, 0};
 		debug(7, "%s()", mapping.name);
 		break;
+	case 62:
+		mapping = NoirMapping{"FACETAG", FACETAG, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X)", mapping.name, pp[0]);
+		break;
+	case 63:
+		mapping = NoirMapping{"FADEIN", FADEIN, 0};
+		debug(7, "%s()", mapping.name);
+		break;
 	case 64:
 		mapping = NoirMapping{"FADEMUSIC", FADEMUSIC, 2};
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(%08X, %d)", mapping.name, pp[0], pp[1]);
 		break;
+	case 65:
+		mapping = NoirMapping{"FADEOUT", FADEOUT, 0};
+		debug(7, "%s()", mapping.name);
+		break;
+	case 66: // Disassembly just returns -1 for this opcode, so map it to ZZZZZZ
+		mapping = NoirMapping{"OP66_NOP", ZZZZZZ, 1};
+		debug(7, "%s()", mapping.name);
+		break;
+	case 67:
+		mapping = NoirMapping{"FREEZECURSOR", FREEZECURSOR, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(%d)", mapping.name, pp[0]);
+		break;
+	case 68:
+		mapping = NoirMapping{"GETINVLIMIT", GETINVLIMIT, 0};
+		debug(7, "%s()", mapping.name);
+		break;
+	case 69:
+		mapping = NoirMapping{"GHOST", GHOST, 3};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X, 0x%08X, 0x%08X)", mapping.name, pp[0], pp[1], pp[2]);
+		break;
+	case 70:
+		mapping = NoirMapping{"GLOBALVAR", GLOBALVAR, 0};
+		debug(7, "%s()", mapping.name);
+		break;
+	case 71:
+		error("You'll have to ask John to put this back in!");
+	case 72:
+		mapping = NoirMapping{"HAILSCENE", HAILSCENE, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(%d)", mapping.name, pp[0]);
+		break;
+	case 73:
+		mapping = NoirMapping{"HASRESTARTED", HASRESTARTED, 0};
+		debug(7, "%s()", mapping.name);
+		break;
 	case 74:
 		mapping = NoirMapping{"HAVE", HAVE, 1};
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(%d)", mapping.name, pp[0]);
 		break;
+	case 75: // 0 parameters, returns icon of topic or held object
+		error("Unsupported libCode %d", libCode);
+	case 76: // 0 parameters, returns enum depending on a bitfield value on held object
+		error("Unsupported libCode %d", libCode);
 	case 77:
 		mapping = NoirMapping{"HIDEACTOR", HIDEACTOR, 1};
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(%d)", mapping.name, pp[0]);
 		break;
+	case 78:
+		mapping = NoirMapping{"HIDEBLOCK", HIDEBLOCK, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(%d)", mapping.name, pp[0]);
+		break;
+	case 79:
+		mapping = NoirMapping{"HIDEEFFECT", HIDEEFFECT, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(%d)", mapping.name, pp[0]);
+		break;
+	case 80:
+		mapping = NoirMapping{"HIDEPATH", HIDEPATH, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(%d)", mapping.name, pp[0]);
+		break;
+	case 81:
+		mapping = NoirMapping{"HIDEREFER", HIDEREFER, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(%d)", mapping.name, pp[0]);
+		break;
+	case 82: // hide poly type 6
+		error("Unsupported libCode %d hide_poly_type_6", libCode);
 	case 83:
 		mapping = NoirMapping{"HIDETAG", HIDETAG, 1};
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(%d)", mapping.name, pp[0]);
 		break;
-	case 86:
-		mapping = NoirMapping{"OP86", ZZZZZZ, 2};
+	case 84:
+		mapping = NoirMapping{"HOLD", HOLD, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(%d)", mapping.name, pp[0]);
+		break;
+	case 85:
+		mapping = NoirMapping{"HOOKSCENE", HOOKSCENE, 3};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X, 0x%08X, 0x%08X)", mapping.name, pp[0], pp[1], pp[2]);
+		break;
+	case 86: // 2 parameters
+		warning("TODO: Implement notebook_add_hyperlink");
+		mapping = NoirMapping{"NODEBOOKADDHYPERLINK", ZZZZZZ, 2};
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(0x%08X, 0x%08X)", mapping.name, pp[0], pp[1]);
 		break;
+		break;
+	case 87:
+		mapping = NoirMapping{"IDLETIME", IDLETIME, 0};
+		debug(7, "%s()", mapping.name);
+		break;
+	case 88:
+		mapping = NoirMapping{"INSTANTSCROLL", INSTANTSCROLL, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(%d)", mapping.name, pp[0]);
+		break;
+	case 89:
+		mapping = NoirMapping{"INVENTORY", INVENTORY, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(%d)", mapping.name, pp[0]);
+		break;
+	case 90: // play anim based on item
+		error("Unsupported libCode %d", libCode);
+	case 91:
+		mapping = NoirMapping{"INWHICHINV", INWHICHINV, 0};
+		debug(7, "%s()", mapping.name);
+		break;
+	case 92:
+		mapping = NoirMapping{"KILLACTOR", KILLACTOR, 0};
+		debug(7, "%s()", mapping.name);
+		break;
+	case 93:
+		mapping = NoirMapping{"KILLGLOBALPROCESS", KILLGLOBALPROCESS, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(%d)", mapping.name, pp[0]);
+		break;
 	case 94:
 		mapping = NoirMapping{"KILLPROCESS", KILLPROCESS, 1};
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(0x%08X)", mapping.name, pp[0]);
 		break;
+	case 95:
+		mapping = NoirMapping{"LOCALVAR", LOCALVAR, 0};
+		debug(7, "%s()", mapping.name);
+		break;
 	case 96:
 		mapping = NoirMapping{"MOVECURSOR", MOVECURSOR, 2};
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(%d, %d)", mapping.name, pp[0], pp[1]);
 		break;
+	case 97: // MoveTag with additional logic
+		error("Unsupported libCode %d MOVETAG variant", libCode);
+	case 98: // MoveTagTo with additional logic
+		error("Unsupported libCode %d MOVETAGTO variant", libCode);
 	case 99:
 		mapping = NoirMapping{"NEWSCENE", NEWSCENE, 3};
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(0x%08X, 0x%08X, 0x%08X)", mapping.name, pp[0], pp[1], pp[2]);
 		break;
+	case 100:
+		mapping = NoirMapping{"NOBLOCKING", NOBLOCKING, 0};
+		debug(7, "%s()", mapping.name);
+		break;
+	case 101:
+		mapping = NoirMapping{"NOPAUSE", NOPAUSE, 0};
+		debug(7, "%s()", mapping.name);
+		break;
+	case 102:
+		mapping = NoirMapping{"NOSCROLL", NOSCROLL, 4};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X, 0x%08X, 0x%08X, 0x%08X)", mapping.name, pp[0], pp[1], pp[2], pp[3]);
+		break;
+	case 103: // 0 parameters
+		error("Unsupported libCode %d open_notebook", libCode);
+	case 104: // 1 parameter
+		error("Unsupported libCode %d OFFSET variant", libCode);
+	case 105: // 0 parameters
+		error("Unsupported libCode %d INVENTORY4", libCode);
+	case 106: // 0 parameters
+		warning("TODO: Implement INVENTORY3");
+		mapping = NoirMapping{"INVENTORY3", ZZZZZZ, 0};
+		debug(7, "%s()", mapping.name);
+		break;
+	case 107:
+		mapping = NoirMapping{"OTHEROBJECT", OTHEROBJECT, 0};
+		debug(7, "%s()", mapping.name);
+		break;
+	case 108:
+		mapping = NoirMapping{"PAUSE", PAUSE, 0};
+		debug(7, "%s()", mapping.name);
+		break;
+	case 109:
+		mapping = NoirMapping{"OBJECTHELD", OBJECTHELD, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X)", mapping.name, pp[0]);
+		break;
 	case 110:
 		mapping = NoirMapping{"PLAY", PLAY, 2};
 		pp -= mapping.numArgs - 1;
@@ -4436,26 +4758,94 @@ NoirMapping translateNoirLibCode(int libCode, int32 *pp) {
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(0x%08X)", mapping.name, pp[0]);
 		break;
+	case 115:
+		mapping = NoirMapping{"POINTTAG", POINTTAG, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X)", mapping.name, pp[0]);
+		break;
+	case 116:
+		mapping = NoirMapping{"POSTACTOR", POSTACTOR, 2};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X, 0x%08X)", mapping.name, pp[0], pp[1]);
+		break;
+	case 117:
+		error("Unsupported libCode %d POSTPOLY", libCode);
+	case 118:
+		mapping = NoirMapping{"POSTGLOBALPROCESS", POSTGLOBALPROCESS, 2};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X, 0x%08X)", mapping.name, pp[0], pp[1]);
+		break;
+	case 119:
+		mapping = NoirMapping{"POSTOBJECT", POSTOBJECT, 2};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X, 0x%08X)", mapping.name, pp[0], pp[1]);
+		break;
+	case 120:
+		mapping = NoirMapping{"POSTPROCESS", POSTPROCESS, 2};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X, 0x%08X)", mapping.name, pp[0], pp[1]);
+		break;
 	case 121:
 		mapping = NoirMapping{"POSTTAG", POSTTAG, 2};
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(0x%08X, 0x%08X)", mapping.name, pp[0], pp[1]);
 		break;
+	case 122: // Something movie-related
+		error("Unsupported libCode %d, movie-related", libCode);
+	case 123:
+		mapping = NoirMapping{"PRINT", PRINT, 5};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X)", mapping.name, pp[0], pp[1], pp[2], pp[3], pp[4]);
+		break;
 	case 124:
 		mapping = NoirMapping{"PRINTCURSOR", PRINTCURSOR, 1};
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(%d)", mapping.name, pp[0]);
 		break;
+	case 125:
+		mapping = NoirMapping{"PRINTOBJ", PRINTOBJ, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(%d)", mapping.name, pp[0]);
+		break;
 	case 126:
 		mapping = NoirMapping{"PRINTTAG", PRINTTAG, 1};
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(%d)", mapping.name, pp[0]);
 		break;
+	case 127:
+		mapping = NoirMapping{"QUITGAME", QUITGAME, 0};
+		debug(7, "%s()", mapping.name);
+		break;
 	case 128:
 		mapping = NoirMapping{"RANDOM", RANDOM, 3};
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(%d, %d, %d)", mapping.name, pp[0], pp[1], pp[2]);
 		break;
+	case 129:
+		mapping = NoirMapping{"RESETIDLETIME", RESETIDLETIME, 0};
+		debug(7, "%s()", mapping.name);
+		break;
+	case 130:
+		mapping = NoirMapping{"RESTARTGAME", RESTARTGAME, 0};
+		debug(7, "%s()", mapping.name);
+		break;
+	case 131:
+		mapping = NoirMapping{"RESTORESCENE", RESTORESCENE, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(%d)", mapping.name, pp[0]);
+		break;
+	case 132:
+		mapping = NoirMapping{"RESUMELASTGAME", RESUMELASTGAME, 0};
+		debug(7, "%s()", mapping.name);
+		break;
+	case 133:
+		mapping = NoirMapping{"RUNMODE", RUNMODE, 0};
+		debug(7, "%s()", mapping.name);
+		break;
+	case 134:
+		mapping = NoirMapping{"SAVESCENE", SAVESCENE, 0};
+		debug(7, "%s()", mapping.name);
+		break;
 	case 135:
 	case 221:
 	case 222:
@@ -4464,6 +4854,76 @@ NoirMapping translateNoirLibCode(int libCode, int32 *pp) {
 		pp -= mapping.numArgs - 2;
 		debug(7, "%s_%2Xh(%d, %d)", mapping.name, libCode, pp[0], pp[1]);
 		break;
+	case 136:
+		mapping = NoirMapping{"SAYAT", SAYAT, 5};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X)", mapping.name, pp[0], pp[1], pp[2], pp[3], pp[4]);
+		break;
+	case 137:
+		mapping = NoirMapping{"SCREENXPOS", SCREENXPOS, 0};
+		debug(7, "%s()", mapping.name);
+		break;
+	case 138:
+		mapping = NoirMapping{"SCREENYPOS", SCREENYPOS, 0};
+		debug(7, "%s()", mapping.name);
+		break;
+	case 139: // new scroll with 1, 3 or 5 parameters
+		error("Unsupported libCode %d SCROLL variant", libCode);
+	case 140:
+		mapping = NoirMapping{"SCROLLPARAMETERS", SCROLLPARAMETERS, 7};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X)", mapping.name, pp[0], pp[1], pp[2], pp[3], pp[4], pp[5], pp[6]);
+		break;
+	case 141:
+		mapping = NoirMapping{"SENDACTOR", SENDACTOR, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(%d)", mapping.name, pp[0]);
+		break;
+	case 142:
+		mapping = NoirMapping{"SENDGLOBALPROCESS", SENDGLOBALPROCESS, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(%d)", mapping.name, pp[0]);
+		break;
+	case 143:
+		mapping = NoirMapping{"SENDOBJECT", SENDOBJECT, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(%d)", mapping.name, pp[0]);
+		break;
+	case 144:
+		mapping = NoirMapping{"SENDPROCESS", SENDPROCESS, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(%d)", mapping.name, pp[0]);
+		break;
+	case 145:
+		mapping = NoirMapping{"SENDTAG", SENDTAG, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(%d)", mapping.name, pp[0]);
+		break;
+	case 146: //calls function which is a nop
+		mapping = NoirMapping{"OP146_NOP", ZZZZZZ, 3};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X, 0x%08X, 0x%08X)", mapping.name, pp[0], pp[1], pp[2]);
+		break;
+	case 147:
+		mapping = NoirMapping{"SETINVLIMIT", SETINVLIMIT, 2};
+		pp -= mapping.numArgs - 2;
+		debug(7, "%s_%2Xh(%d, %d)", mapping.name, libCode, pp[0], pp[1]);
+		break;
+	case 148:
+		mapping = NoirMapping{"SETINVSIZE", SETINVSIZE, 7};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X)", mapping.name, pp[0], pp[1], pp[2], pp[3], pp[4], pp[5], pp[6]);
+		break;
+	case 149:
+		mapping = NoirMapping{"SETLANGUAGE", SETLANGUAGE, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(%d)", mapping.name, pp[0]);
+		break;
+	case 150: // 3 parameters, calls function calling GetEscEvents not changing state
+		mapping = NoirMapping{"OP150_NOP", ZZZZZZ, 3};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X, 0x%08X, 0x%08X)", mapping.name, pp[0], pp[1], pp[2]);
+		break;
 	case 151:
 		mapping = NoirMapping{"SETSYSTEMREEL", SETSYSTEMREEL, 2};
 		pp -= mapping.numArgs - 1;
@@ -4484,15 +4944,41 @@ NoirMapping translateNoirLibCode(int libCode, int32 *pp) {
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(%d, 0x%08X)", mapping.name, pp[0], pp[1]);
 		break;
+	case 155:
+		mapping = NoirMapping{"SHELL", SHELL, 0};
+		debug(7, "%s()", mapping.name);
+		break;
 	case 156:
 		mapping = NoirMapping{"SHOWACTOR", SHOWACTOR, 1};
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(%d)", mapping.name, pp[0]);
 		break;
+	case 157:
+		mapping = NoirMapping{"SHOWBLOCK", SHOWBLOCK, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(%d)", mapping.name, pp[0]);
+		break;
+	case 158:
+		mapping = NoirMapping{"SHOWEFFECT", SHOWEFFECT, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(%d)", mapping.name, pp[0]);
+		break;
 	case 159:
 		mapping = NoirMapping{"SHOWMENU", SHOWMENU, 0};
 		debug(7, "%s()", mapping.name);
 		break;
+	case 160:
+		mapping = NoirMapping{"SHOWPATH", SHOWPATH, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(%d)", mapping.name, pp[0]);
+		break;
+	case 161:
+		mapping = NoirMapping{"SHOWREFER", SHOWREFER, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(%d)", mapping.name, pp[0]);
+		break;
+	case 162: // show poly type 6
+		error("Unsupported libCode %d show_poly_type_6", libCode);
 	case 163:
 		mapping = NoirMapping{"SHOWTAG", SHOWTAG, 1};
 		pp -= mapping.numArgs - 1;
@@ -4503,44 +4989,230 @@ NoirMapping translateNoirLibCode(int libCode, int32 *pp) {
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(0x%08X, 0x%08X, 0x%08X, 0x%08X)", mapping.name, pp[0], pp[1], pp[2], pp[3]);
 		break;
+	case 165:
+		mapping = NoirMapping{"STANDTAG", STANDTAG, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(%d)", mapping.name, pp[0]);
+		break;
+	case 166:
+		mapping = NoirMapping{"STARTGLOBALPROCESS", STARTGLOBALPROCESS, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X)", mapping.name, pp[0]);
+		break;
 	case 167:
 		mapping = NoirMapping{"STARTPROCESS", STARTPROCESS, 1};
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(0x%08X)", mapping.name, pp[0]);
 		break;
+	case 168:
+		mapping = NoirMapping{"STARTTIMER", STARTTIMER, 4};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X, 0x%08X, 0x%08X, 0x%08X)", mapping.name, pp[0], pp[1], pp[2], pp[3]);
+		break;
+	case 169: // 0 parameters, passes
+		error("Unsupported libCode %d audio-related", libCode);
+	case 170:
+		mapping = NoirMapping{"STOPSAMPLE", STOPSAMPLE, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X)", mapping.name, pp[0]);
+		break;
+	case 171:
+		mapping = NoirMapping{"STOPWALK", STOPWALK, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X)", mapping.name, pp[0]);
+		break;
+	case 172:
+		mapping = NoirMapping{"SUBTITLES", SUBTITLES, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X)", mapping.name, pp[0]);
+		break;
+	case 173:
+		mapping = NoirMapping{"SWALK", SWALK, 6};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X)", mapping.name, pp[0], pp[1], pp[2], pp[3], pp[4], pp[5]);
+		break;
+	case 174:
+		mapping = NoirMapping{"SWALKZ", SWALKZ, 7};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X)", mapping.name, pp[0], pp[1], pp[2], pp[3], pp[4], pp[5], pp[6]);
+		break;
 	case 175:
 		mapping = NoirMapping{"SYSTEMVAR", SYSTEMVAR, 0};
 		debug(7, "%s(%d)", mapping.name, pp[0]);
 		break;
+	// These 4 are a fallthrough in the disassembly
+	// Assume they still have the same order for clarity of log output
+	case 176:
+		mapping = NoirMapping{"TAGTAGXPOS", TAGTAGXPOS, 0};
+		debug(7, "%s(%d)", mapping.name, pp[0]);
+		break;
+	case 177:
+		mapping = NoirMapping{"TAGTAGYPOS", TAGTAGYPOS, 0};
+		debug(7, "%s(%d)", mapping.name, pp[0]);
+		break;
+	case 178:
+		mapping = NoirMapping{"TAGWALKXPOS", TAGWALKXPOS, 0};
+		debug(7, "%s(%d)", mapping.name, pp[0]);
+		break;
+	case 179:
+		mapping = NoirMapping{"TAGWALKYPOS", TAGWALKYPOS, 0};
+		debug(7, "%s(%d)", mapping.name, pp[0]);
+		break;
+	case 180: // 2 parameters, talkorsay has been modified vor v3
+	case 218:
+	case 219:
+	case 220:
+		error("Unsupported libCode %d TALK with unsupported speech type", libCode);
+	case 181: // talkorsay has been modified vor v3
+		warning("TODO: Implement TalkOrSay v3");
+		mapping = NoirMapping{"TALKAT", TALKAT, 5};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X)", mapping.name, pp[0], pp[1], pp[2], pp[3], pp[4]);
+		break;
+	case 182:
+		mapping = NoirMapping{"TALKRGB", TALKRGB, 3};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X, 0x%08X, 0x%08X)", mapping.name, pp[0], pp[1], pp[2]);
+		break;
 	case 183:
 		mapping = NoirMapping{"TALKVIA", TALKVIA, 1};
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(%d)", mapping.name, pp[0]);
 		break;
+	case 184:
+		mapping = NoirMapping{"TEMPTAGFONT", TEMPTAGFONT, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(%d)", mapping.name, pp[0]);
+		break;
+	case 185:
+		mapping = NoirMapping{"TEMPTALKFONT", TEMPTALKFONT, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(%d)", mapping.name, pp[0]);
+		break;
+	case 186:
+		mapping = NoirMapping{"THISOBJECT", THISOBJECT, 0};
+		debug(7, "%s()", mapping.name);
+		break;
+	case 187:
+		mapping = NoirMapping{"THISTAG", THISTAG, 0};
+		debug(7, "%s()", mapping.name);
+		break;
+	case 188:
+		mapping = NoirMapping{"TIMER", TIMER, 0};
+		debug(7, "%s()", mapping.name);
+		break;
+	case 189:
+		mapping = NoirMapping{"TOPIC", TOPIC, 0};
+		debug(7, "%s()", mapping.name);
+		break;
+	case 190:
+		mapping = NoirMapping{"TOPPLAY", TOPPLAY, 4};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X, 0x%08X, 0x%08X, 0x%08X)", mapping.name, pp[0], pp[1], pp[2], pp[3]);
+		break;
+	case 191:
+		mapping = NoirMapping{"TOPWINDOW", TOPWINDOW, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(%d)", mapping.name, pp[0]);
+		break;
+	case 192:
+		mapping = NoirMapping{"UNDIMMUSIC", UNDIMMUSIC, 0};
+		debug(7, "%s()", mapping.name);
+		break;
+	case 193:
+		mapping = NoirMapping{"UNHOOKSCENE", UNHOOKSCENE, 0};
+		debug(7, "%s()", mapping.name);
+		break;
+	case 194:
+		mapping = NoirMapping{"WAITFRAME", WAITFRAME, 2};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(%d, %d)", mapping.name, pp[0], pp[1]);
+		break;
+	case 195:
+		mapping = NoirMapping{"WAITKEY", WAITKEY, 0};
+		debug(7, "%s()", mapping.name);
+		break;
+	case 196:
+		mapping = NoirMapping{"WAITSCROLL", WAITSCROLL, 0};
+		debug(7, "%s()", mapping.name);
+		break;
 	case 197:
 		mapping = NoirMapping{"WAITTIME", WAITTIME, 2};
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(%d, %d)", mapping.name, pp[0], pp[1]);
 		break;
+	case 198:
+		mapping = NoirMapping{"WALK", WALK, 5};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X)", mapping.name, pp[0], pp[1], pp[2], pp[3], pp[4]);
+		break;
+	case 199:
+		mapping = NoirMapping{"WALKED", WALKED, 3};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X, 0x%08X, 0x%08X)", mapping.name, pp[0], pp[1], pp[2]);
+		break;
+	case 200:
+		mapping = NoirMapping{"OP200_NOP", ZZZZZZ, 2};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X, 0x%08X)", mapping.name, pp[0], pp[1]);
+		break;
+	case 201:
+		mapping = NoirMapping{"OP201_NOP", ZZZZZZ, 2};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X, 0x%08X)", mapping.name, pp[0], pp[1]);
+		break;
+	case 202:
+		mapping = NoirMapping{"WALKINGACTOR", WALKINGACTOR, 1};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X)", mapping.name, pp[0]);
+		break;
+	case 203:
+		mapping = NoirMapping{"WALKPOLY", WALKPOLY, 2};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X, 0x%08X)", mapping.name, pp[0], pp[1]);
+		break;
+	case 204:
+		mapping = NoirMapping{"WALKTAG", WALKTAG, 2};
+		pp -= mapping.numArgs - 1;
+		debug(7, "%s(0x%08X, 0x%08X)", mapping.name, pp[0], pp[1]);
+		break;
+	case 205:
+		mapping = NoirMapping{"WALKXPOS", WALKXPOS, 0};
+		debug(7, "%s()", mapping.name);
+		break;
+	case 206:
+		mapping = NoirMapping{"WALKYPOS", WALKYPOS, 0};
+		debug(7, "%s()", mapping.name);
+		break;
 	case 207:
 		mapping = NoirMapping{"WHICHCD", WHICHCD, 0};
 		debug(7, "%s()", mapping.name);
 		break;
-	case 208:
+	case 208: // WhichInventory is implemented differently in v3, checking notebookstate
+		warning("TODO: Implement WHICHINVENTORY v3");
 		mapping = NoirMapping{"WHICHINVENTORY", WHICHINVENTORY, 0};
 		debug(7, "%s()", mapping.name);
 		break;
+	case 209:
+		mapping = NoirMapping{"ZZZZZZ", ZZZZZZ, 0};
+		debug(7, "%s()", mapping.name);
+		break;
 	case 210: // STUBBED
+		warning("TODO: Implement OP210");
 		mapping = NoirMapping{"OP210", ZZZZZZ, 8};
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X)", mapping.name, pp[0], pp[1], pp[2], pp[3], pp[4], pp[5], pp[6], pp[7]);
 		break;
+	case 211: // 4 parameters
+		error("Unsupported libCode %d PLAYSEQUENCE", libCode);
 	case 212: // STUBBED
+		warning("TODO: Implement OP212");
 		mapping = NoirMapping{"OP212", ZZZZZZ, 8};
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X)", mapping.name, pp[0], pp[1], pp[2], pp[3], pp[4], pp[5], pp[6], pp[7]);
 		break;
 	case 213: // STUBBED
+		warning("TODO: Implement OP213");
 		mapping = NoirMapping{"OP213", ZZZZZZ, 8};
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X)", mapping.name, pp[0], pp[1], pp[2], pp[3], pp[4], pp[5], pp[6], pp[7]);
@@ -4550,22 +5222,42 @@ NoirMapping translateNoirLibCode(int libCode, int32 *pp) {
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(0x%08X)", mapping.name, pp[0]);
 		break;
+	case 215: // this case produces "Unsupported library function" error,
+			  // followed by "You cant possibly get here", so map it to an invalid value
+		mapping = NoirMapping{"OP215_USUPPORTED", -1, 0};
+		debug(7, "%s()", mapping.name);
+		break;
+	case 216: // 2 parameters
+		mapping = NoirMapping{"OP216_NOP", ZZZZZZ, 2};
+		debug(7, "%s()", mapping.name);
+		break;
 	case 217:
 		mapping = NoirMapping{"VOICEOVER", VOICEOVER, 1};
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(0x%08X)", mapping.name, pp[0]);
 		break;
+	case 224: // 1 parameter, child function reads model data
+		error("Unsupported libCode %d", libCode);
 	case 111: // no hold frame
 	case 225: // hold frame
 		mapping = NoirMapping{"PLAYMOVIE", PLAYMOVIE, 1};
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(0x%08X)", mapping.name, pp[0]);
 		break;
-	case 228: // STUBBED
+	case 226: // 1 parameter, waits until arg matches an spr related global
+		error("Unsupported libCode %d", libCode);
+	case 227: // 1 parameter, removes icon
+		error("Unsupported libCode %d remoce_conversation_icon", libCode);
+	case 228: // STUBBED, PCM related
+		warning("TODO: Implement OP228, PCM related");
 		mapping = NoirMapping{"OP228", ZZZZZZ, 1};
 		pp -= mapping.numArgs - 1;
 		debug(7, "%s(0x%08X)", mapping.name, pp[0]);
 		break;
+	case 229: // 0 parameters
+		error("Unsupported libCode %d close_notebook", libCode);
+	case 230: // 1 parameter, sets multiobject anim and z
+		error("Unsupported libCode %d", libCode);
 	default:
 		error("Unmapped libCode %d", libCode);
 	}




More information about the Scummvm-git-logs mailing list