[Scummvm-cvs-logs] SF.net SVN: scummvm:[34337] tools/trunk
Kirben at users.sourceforge.net
Kirben at users.sourceforge.net
Fri Sep 5 11:24:24 CEST 2008
Revision: 34337
http://scummvm.svn.sourceforge.net/scummvm/?rev=34337&view=rev
Author: Kirben
Date: 2008-09-05 09:24:24 +0000 (Fri, 05 Sep 2008)
Log Message:
-----------
Add basic support for decompiling HE100 scripts, and combine the two HE options.
Modified Paths:
--------------
tools/trunk/descumm-tool.cpp
tools/trunk/descumm.h
tools/trunk/descumm6.cpp
Modified: tools/trunk/descumm-tool.cpp
===================================================================
--- tools/trunk/descumm-tool.cpp 2008-09-04 21:40:32 UTC (rev 34336)
+++ tools/trunk/descumm-tool.cpp 2008-09-05 09:24:24 UTC (rev 34337)
@@ -42,7 +42,6 @@
"\t-6\tInput Script is v6\n"
"\t-7\tInput Script is v7\n"
"\t-8\tInput Script is v8\n"
- "\t-p\tInput Script is from Humongous Entertainment game\n"
"\t-n\tUse Indy3-256 specific hacks\n"
"\t-z\tUse Zak256 specific hacks\n"
"\t-u\tScript is Unblocked/has no header\n"
@@ -183,9 +182,6 @@
g_options.GF_UNBLOCKED = true;
break;
- case 'p':
- g_options.HumongousFlag = true;
- // Fall through
case '6':
g_options.scriptVersion = 6;
g_jump_opcode = 0x73;
@@ -204,8 +200,8 @@
g_options.scriptVersion = 6;
g_jump_opcode = 0x73;
- // Skip two digits for HE version
- s += 2;
+ // Skip three digits for HE version
+ s += 3;
break;
case 'o':
@@ -395,7 +391,9 @@
next_line_V345(outputLineBuffer);
break;
case 6:
- if (g_options.heVersion)
+ if (g_options.heVersion == 100)
+ next_line_HE_V100(outputLineBuffer);
+ else if (g_options.heVersion >= 72)
next_line_HE_V72(outputLineBuffer);
else
next_line_V67(outputLineBuffer);
Modified: tools/trunk/descumm.h
===================================================================
--- tools/trunk/descumm.h 2008-09-04 21:40:32 UTC (rev 34336)
+++ tools/trunk/descumm.h 2008-09-05 09:24:24 UTC (rev 34337)
@@ -119,7 +119,6 @@
bool dontShowOffsets;
bool haltOnError;
- bool HumongousFlag;
bool ZakFlag;
bool IndyFlag;
bool GF_UNBLOCKED;
@@ -181,6 +180,7 @@
extern void next_line_V67(char *buf);
extern void next_line_V8(char *buf);
extern void next_line_HE_V72(char *buf);
+extern void next_line_HE_V100(char *buf);
Modified: tools/trunk/descumm6.cpp
===================================================================
--- tools/trunk/descumm6.cpp 2008-09-04 21:40:32 UTC (rev 34336)
+++ tools/trunk/descumm6.cpp 2008-09-05 09:24:24 UTC (rev 34337)
@@ -1469,6 +1469,1172 @@
}
+#define PRINT_V100HE(name) \
+ do { \
+ ext(output, "x" name "\0" \
+ "\x6pp|XY," \
+ "\xC|center," \
+ "\x12p|right," \
+ "\x14p|color," \
+ "\x15l|colors," \
+ "\x23lps|debug," \
+ "\x2E|left," \
+ "\x33|mumble," \
+ "\x38|overhead," \
+ "\x4Ep|getText," \
+ "\x4Fs|msg," \
+ "\x5B|begin," \
+ "\x5C|end" \
+ ); \
+ } while(0)
+
+void next_line_HE_V100(char *output) {
+ byte code = get_byte();
+ StackEnt *se_a, *se_b;
+
+ //printf("HE_V100 Opcode: 0x0%x\n", code);
+
+ switch (code) {
+ case 0x0:
+ ext(output, "x" "actorOps\0"
+ "\x3ppp|actorSet:3:??,"
+ "\x4p|setAnimSpeed,"
+ "\x6pp|putActor,"
+ "\x8|resetDrawToBackBuf,"
+ "\x9|drawToBackBuf,"
+ "\xEp|charset,"
+ "\x12pppp|setClipRect,"
+ "\x16l|setUserConditions,"
+ "\x19p|setCostume,"
+ "\x1B|init,"
+ "\x20p|setHEFlag,"
+ "\x34h|setName,"
+ "\x35|initLittle,"
+ "\x39pp|setPalette,"
+ "\x3Bp|layer,"
+ "\x3Dp|setPaletteNum,"
+ "\x41p|setScale,"
+ "\x46p|setShadowMode,"
+ "\x4App|setWalkSpeed,"
+ "\x4Ehp|setTalkieSlot,"
+ "\x53pp|setAnimVar,"
+ "\x57p|setAlwayZClip,"
+ "\x59|setNeverZClip,"
+ "\x80pppp|setActorClipRect,"
+ "\x81p|setCurActor,"
+ "\x82l|setSound,"
+ "\x83p|setWidth,"
+ "\x84|setDefAnim,"
+ "\x85p|setElevation,"
+ "\x86|setFollowBoxes,"
+ "\x87|setIgnoreBoxes,"
+ "\x88|setIgnoreTurnsOff,"
+ "\x89|setIgnoreTurnsOn,"
+ "\x8Ap|setInitFrame,"
+ "\x8Bp|setStandFrame,"
+ "\x8Cpp|setTalkFrame,"
+ "\x8Dp|setTalkColor,"
+ "\x8Ep|setTalkCondition,"
+ "\x8Fpp|setTalkPos,"
+ "\x90p|setWalkFrame");
+ break;
+ case 0x1:
+ se_a = pop();
+ se_b = pop();
+ push(se_oper(se_b, 6 + isEqual, se_a));
+ break;
+ case 0x2:
+ ext(output, "pp|faceActor");
+ break;
+
+ case 0x03:
+ ext(output, "x" "sortArray\0"
+ "\x86pppppw|sort,");
+ break;
+ case 0x04:
+ switch (get_byte()) {
+ case 35:
+ se_get_list();
+ pop();
+ se_a = se_get_string_he();
+ writeArray(output, get_word(), NULL, se_a, se_a);
+ break;
+ case 77:
+ se_a = se_get_string_he();
+ writeArray(output, get_word(), NULL, se_a, se_a);
+ break;
+ case 128:
+ se_b = se_get_list();
+ se_a = pop();
+ writeArray(output, get_word(), NULL, se_a, se_b);
+ break;
+ case 129:
+ se_a = pop();
+ se_b = se_get_list();
+ writeArray(output, get_word(), NULL, se_a, se_b);
+ break;
+ case 130:
+ // TODO
+ se_get_list();
+ pop();
+ pop();
+ pop();
+ pop();
+ get_word();
+ break;
+ case 131:
+ // TODO
+ pop();
+ pop();
+ pop();
+ pop();
+ get_word();
+ pop();
+ pop();
+ pop();
+ pop();
+ get_word();
+ break;
+ case 133:
+ // TODO
+ pop();
+ pop();
+ pop();
+ pop();
+ pop();
+ pop();
+ get_word();
+ break;
+ }
+ break;
+ case 0x05:
+ se_a = pop();
+ se_b = pop();
+ push(se_oper(se_b, operBand, se_a));
+ break;
+ case 0x06:
+ se_a = pop();
+ se_b = pop();
+ push(se_oper(se_b, operBor, se_a));
+ break;
+ case 0x07:
+ ext(output, "|breakHere");
+ break;
+ case 0x08:
+ ext(output, "p|delayFrames");
+ break;
+ case 0x09:
+ ext(output, "rpp|shl");
+ break;
+ case 0x0A:
+ ext(output, "rpp|shr");
+ break;
+ case 0x0B:
+ ext(output, "rpp|xor");
+ break;
+ case 0x0C:
+ ext(output, "p|setCameraAt");
+ break;
+ case 0x0D:
+ ext(output, "p|actorFollowCamera");
+ break;
+ case 0x0E:
+ ext(output, "p|loadRoom");
+ break;
+ case 0x0F:
+ ext(output, "p|panCameraTo");
+ break;
+ case 0x10:
+ ext(output, "ppppp|captureWizImage");
+ break;
+ case 0x11:
+ ext(output, "lpi|jumpToScript");
+ break;
+ case 0x12:
+ ext(output, "lp|setClass");
+ break;
+ case 0x13:
+ ext(output, "p|closeFile");
+ break;
+ case 0x14:
+ ext(output, "ppz|loadRoomWithEgo");
+ break;
+ case 0x16:
+ ext(output, "h|createDirectory");
+ break;
+ case 0x17:
+ ext(output, "x" "createSound\0"
+ "\x0p|setId,"
+ "\x35|reset,"
+ "\x5C|dummy,"
+ "\x80p|create");
+ break;
+ case 0x18:
+ ext(output, "l|beginCutscene");
+ break;
+ case 0x19:
+ case 0x53:
+ kill(output, pop());
+ break;
+ case 0x1A:
+ ext(output, "hp|traceStatus");
+ break;
+ case 0x1B:
+ addVar(output, get_word(), -1);
+ break;
+ case 0x1C:
+ addArray(output, get_word(), pop(), -1);
+ break;
+ case 0x1D:
+ ext(output, "h|deleteFile");
+ break;
+ case 0x1E:
+ ext(output, "x" "dim2dimArray\0"
+ "\x29ppw|bit,"
+ "\x2Appw|int,"
+ "\x2Bppw|dword,"
+ "\x2Cppw|nibble,"
+ "\x2Dppw|byte,"
+ "\x4Dppw|string");
+ break;
+ case 0x1F:
+ ext(output, "x" "dimArray\0"
+ "\x29pw|bit,"
+ "\x2Apw|int,"
+ "\x2Bpw|dword,"
+ "\x2Cpw|nibble,"
+ "\x2Dpw|byte,"
+ "\x4Dpw|string,"
+ "\x87w|nukeArray");
+ break;
+ case 0x20:
+ se_a = pop();
+ se_b = pop();
+ push(se_oper(se_b, 9 + isEqual, se_a));
+ break;
+ case 0x21:
+ ext(output, "pp|animateActor");
+ break;
+ case 0x22:
+ ext(output, "pppp|doSentence");
+ break;
+ case 0x23:
+ ext(output, "ppppp|drawBox");
+ break;
+ case 0x24:
+ ext(output, "pppp|drawWizImage");
+ break;
+ case 0x25: // HE80+
+ ext(output, "pp|drawWizPolygon");
+ break;
+ case 0x26:
+ ext(output, "x" "drawLine\0"
+ "\x1pppppp|pixel,"
+ "\x14pppppp|wizImage,"
+ "\x28pppppp|actor");
+ break;
+ case 0x27:
+ ext(output, "x" "drawObject\0"
+ "\x6ppp|setPosition,"
+ "\x7pppp|setup,"
+ "\x28pp|setState");
+ break;
+ case 0x28:
+ se_a = dup(output, pop());
+ push(se_a);
+ push(se_a);
+ break;
+ case 0x2A:
+ ext(output, "|endCutscene");
+ break;
+ case 0x2B:
+ ext(output, "|stopObjectCodeA");
+ break;
+ case 0x2C:
+ ext(output, "|stopObjectCodeB");
+ break;
+ case 0x2D:
+ se_a = pop();
+ se_b = pop();
+ push(se_oper(se_b, 0 + isEqual, se_a));
+ break;
+ case 0x2E:
+ ext(output, "x" "floodFill\0"
+ "\x0p|reset,"
+ "\x6pp|setXY,"
+ "\x12pppp|setBoxRect,"
+ "\x14p|setFlags,"
+ "\x36|dummy,"
+ "\x5C|floodFill");
+ break;
+ case 0x2F:
+ ext(output, "p|freezeUnfreeze");
+ break;
+ case 0x30:
+ se_a = pop();
+ se_b = pop();
+ push(se_oper(se_b, 5 + isEqual, se_a));
+ break;
+ case 0x31:
+ ext(output, "|getDateTime");
+ break;
+ case 0x32:
+ ext(output, "x" "setSpriteGroupInfo\0"
+ "\x0p|setId,"
+ "\x6pp|setPosition,"
+ "\x12pppp|setBounds,"
+ "\x26pp|misc,"
+ "\x28p|setImage,"
+ "\x31pp|move,"
+ "\x34h|stringUnk,"
+ "\x35|reset,"
+ "\x36pp|dummy,"
+ "\x3Bp|setPriority,"
+ "\x3Cpp|setXYScale?,"
+ "\x59|resetBounds");
+ break;
+ case 0x33:
+ se_a = pop();
+ se_b = pop();
+ push(se_oper(se_b, 2 + isEqual, se_a));
+ break;
+ case 0x34:
+ ext(output, "x" "resourceRoutines\0"
+ "\xEp|setCharset,"
+ "\x19p|setCostume,"
+ "\x22p|setFlObject,"
+ "\x28p|setImage,"
+ "\x2F|loadResource,"
+ "\x3Ep|setRoom,"
+ "\x42p|setScript,"
+ "\x48p|setSound,"
+ "\x80|clearHeap,"
+ "\x81|dummy,"
+ "\x84|lockResource,"
+ "\x85|nukeResource,"
+ "\x86|heapUnk1,"
+ "\x87|heapUnk2,"
+ "\x88|queueResource,"
+ "\x89|unlock");
+ break;
+ case 0x35:
+ jumpif(output, pop(), true);
+ break;
+ case 0x36:
+ jumpif(output, pop(), false);
+ break;
+ case 0x37:
+ ext(output, "x" "wizImageOps\0"
+ "\x0p|setImage,"
+ "\x6pp|setPosition,"
+ "\x7p|setSourceImage,"
+ "\xBppppp|setCaptureRect,"
+ "\x15p|processMode6,"
+ "\x1D|processMode1,"
+ "\x24pppp|setClipRect,"
+ "\x27p|setResDefImageHeight,"
+ "\x2Fh|processMode3,"
+ "\x35|processMode8,"
+ "\x36pp|setThickLine,"
+ "\x37ppppp|drawWizImage,"
+ "\x39p|setPalette,"
+ "\x3Appp|processMode7,"
+ "\x40hp|processMode4,"
+ "\x41p|setScale,"
+ "\x43p|setFlags,"
+ "\x44p|setupPolygon,"
+ "\x46p|setShadow,"
+ "\x49p|setImageState,"
+ "\x54p|setResDefImageWidth,"
+ "\x5C|processWizImage,"
+ "\x80pppph|processMode15,"
+ "\x81|processMode14,"
+ "\x82pph|processMode16,"
+ "\x83|processMode13,"
+ "\x84pp|setPosition,"
+ "\x85pppppppp|processMode17,"
+ "\x86ppp|processMode12,"
+ "\x87p|setDstResNum,"
+ "\x88ppppp|processMode10,"
+ "\x89ppp|processMode11,"
+ "\x8Appppp|proxessMode9");
+ break;
+ case 0x38:
+ ext(output, "rlp|isAnyOf2");
+ break;
+ case 0x39:
+ addVar(output, get_word(), 1);
+ break;
+ case 0x3A:
+ addArray(output, get_word(), pop(), 1);
+ break;
+ case 0x3B:
+ jump(output);
+ break;
+ case 0x3C:
+ ext(output, "y" "kernelSetFunctions\0"
+ "\x1|virtScreenLoad,"
+ "\x14|queueAuxBlock,"
+ "\x15|pauseDrawObjects,"
+ "\x16|resumeDrawObjects,"
+ "\x17|clearCharsetMask,"
+ "\x18|pauseActors,"
+ "\x19|resumActors,"
+ "\x1E|actorBottomClipOverride,"
+ "\x2A|setWizImageClip,"
+ "\x2B|setWizImageClipOff,"
+ );
+ break;
+ case 0x3D:
+ se_a = pop();
+ se_b = pop();
+ push(se_oper(se_b, 0xA + isEqual, se_a));
+ break;
+ case 0x3E:
+ se_a = pop();
+ se_b = pop();
+ push(se_oper(se_b, 4 + isEqual, se_a));
+ break;
+ case 0x3F:
+ ext(output, "p|localizeArrayToScript");
+ break;
+ case 0x40:
+ push(se_array(get_word(), NULL, pop()));
+ break;
+ case 0x41:
+ se_a = pop();
+ push(se_array(get_word(), pop(), se_a));
+ break;
+ case 0x42:
+ se_a = pop();
+ se_b = pop();
+ push(se_oper(se_b, 0xB + isEqual, se_a));
+ break;
+ case 0x43:
+ se_a = pop();
+ se_b = pop();
+ push(se_oper(se_b, 3 + isEqual, se_a));
+ break;
+ case 0x44:
+ ext(output, "rpp|mod");
+ break;
+ case 0x45:
+ se_a = pop();
+ se_b = pop();
+ push(se_oper(se_b, 8 + isEqual, se_a));
+ break;
+ case 0x46:
+ se_a = pop();
+ se_b = pop();
+ push(se_oper(se_b, 1 + isEqual, se_a));
+ break;
+ case 0x47:
+ ext(output, "x" "dim2dim2Array\0"
+ "\x29pppppw|bit,"
+ "\x2Apppppw|int,"
+ "\x2Bpppppw|dword,"
+ "\x2Cpppppw|nibble,"
+ "\x2Dpppppw|byte,"
+ "\x4Dpppppw|string");
+ break;
+ case 0x49:
+ ext(output, "x" "redim2dimArray\0"
+ "\x2Appppw|int,"
+ "\x2Bppppw|dword,"
+ "\x2Cppppw|byte");
+ break;
+ case 0x4A:
+ push(se_oper(pop(), isZero));
+ break;
+ case 0x4C:
+ ext(output, "|beginOverride");
+ break;
+ case 0x4D:
+ ext(output, "|endOverride");
+ break;
+ case 0x4E:
+ ext(output, "|resetCutScene");
+ break;
+ case 0x4F:
+ ext(output, "pp|setOwner");
+ break;
+ case 0x50:
+ ext(output, "x" "paletteOps\0"
+ "\x0p|setPaletteNum,"
+ "\x14ppppp|setPaletteColor,"
+ "\x19p|setPaletteFromCostume,"
+ "\x28pp|setPaletteFromImage,"
+ "\x35|restorePalette,"
+ "\x39p|copyPalette,"
+ "\x3Fpp|setPaletteFromRoom,"
+ "\x51ppp|copyPaletteColor,"
+ "\x5C|resetPaletteNum");
+ break;
+ case 0x51:
+ ext(output, "z|pickupObject");
+ break;
+ case 0x52:
+ ext(output, "x" "polygonOps\0"
+ "\x1Cpp|polygonErase,"
+ "\x44ppppppppp|polygonStore,"
+ "\x45ppppppppp|polygonStore");
+ break;
+ case 0x54:
+ PRINT_V100HE("printDebug");
+ break;
+ case 0x55:
+ ext(output, "p|printWizImage");
+ break;
+ case 0x56:
+ PRINT_V100HE("printLine");
+ break;
+ case 0x57:
+ PRINT_V100HE("printSystem");
+ break;
+ case 0x58:
+ PRINT_V100HE("printCursor");
+ break;
+ case 0x59:
+ ext(output, "lppi|jumpToScriptUnk");
+ break;
+ case 0x5A:
+ ext(output, "lppi|startScriptUnk");
+ break;
+ case 0x5B:
+ ext(output, "lp|pseudoRoom");
+ break;
+ case 0x5C:
+ push(se_int(get_byte()));
+ break;
+ case 0x5D:
+ push(se_int(get_dword()));
+ break;
+ case 0x5E:
+ getScriptString();
+ break;
+ case 0x5F:
+ push(se_int(get_word()));
+ break;
+ case 0x60:
+ push(se_var(get_word()));
+ break;
+ case 0x61:
+ ext(output, "zp|putActorAtObject");
+ break;
+ case 0x62:
+ ext(output, "pppp|putActorInXY");
+ break;
+ case 0x64:
+ ext(output, "x" "redimArray\0"
+ "\x2Appw|int,"
+ "\x2Bppw|dword,"
+ "\x2Dppw|byte");
+ break;
+ case 0x65:
+ ext(output, "hh|renameFile");
+ break;
+ case 0x66:
+ ext(output, "|stopObjectCode");
+ break;
+ case 0x67:
+ ext(output, "p|localizeArrayToRoom");
+ break;
+ case 0x68:
+ ext(output, "x" "roomOps\0"
+ "\x3Fpppp|setPalColor,"
+ "\x81pp|swapObjects,"
+ "\x82pp|copyPalColor,"
+ "\x83p|screenEffect,"
+ "\x84ppp|darkenPalette,"
+ "\x85ppppp|darkenPalette,"
+ "\x86p|setPalette,"
+ "\x87pp|setRoomPalette,"
+ "\x88pp|saveLoadRoom,"
+ "\x89hp|saveOrLoad,"
+ "\x8App|setScreen,"
+ "\x8Bpp|roomScroll");
+ break;
+ case 0x69:
+ // This is *almost* identical to the other print opcodes, only the 'begine' subop differs
+ ext(output, "x" "printActor\0"
+ "\x6pp|XY,"
+ "\xC|center,"
+ "\x12p|right,"
+ "\x14p|color,"
+ "\x15l|colors,"
+ "\x2E|left,"
+ "\x33|mumble,"
+ "\x38|overhead,"
+ "\x4Ep|getText,"
+ "\x4Fs|msg,"
+ "\x5Bp|begin,"
+ "\x5C|end");
+ break;
+ case 0x6A:
+ PRINT_V100HE("printEgo");
+ break;
+ case 0x6B:
+ ext(output, "ps|talkActor");
+ break;
+ case 0x6C:
+ ext(output, "s|talkEgo");
+ break;
+ case 0x6E:
+ ext(output, "ppp|seekFilePos");
+ break;
+ case 0x6F:
+ ext(output, "pl|setBoxFlags");
+ break;
+ case 0x71:
+ ext(output, "p|setBotSet");
+ break;
+ case 0x72:
+ ext(output, "x" "setSystemMessage\0"
+ "\x50h|titleMsg,"
+ "\x83h|versionMsg");
+ break;
+ case 0x73:
+ ext(output, "wpp|shuffle");
+ break;
+ case 0x74:
+ ext(output, "p|delay");
+ break;
+ case 0x75:
+ ext(output, "p|delayMinutes");
+ break;
+ case 0x76:
+ ext(output, "p|delaySeconds");
+ break;
+ case 0x77:
+ ext(output, "x" "startSound\0"
+ "\x6p|setQuickStartFlag,"
+ "\x2Fhp|loadSoundFromFile,"
+ "\x37|setSoundFlag8,"
+ "\x53ppp|setSoundVar,"
+ "\x5C|start,"
+ "\x80|setForceQueueFlag,"
+ "\x81p|setChannel,"
+ "\x82p|setSoundFlag64,"
+ "\x83|setSoundFlag1,"
+ "\x84p|setMusicId,"
+ "\x85p|setSoundFlag128,"
+ "\x86p|setSoundId,"
+ "\x87|setSoundFlag4,"
+ "\x88p|setSoundFlag32");
+ break;
+ case 0x79:
+ // TODO: Convert to HE100
+ ext(output, "x" "setSpriteInfo\0"
+ "\x22p|setDistX,"
+ "\x23p|setDistY,"
+ "\x25p|setGroup,"
+ "\x2App|setFlags,"
+ "\x2Bp|setPriority,"
+ "\x2Cpp|move,"
+ "\x34p|setImageState,"
+ "\x35p|setAngle,"
+ "\x39pp|setRange,"
+ "\x3Ep|setSourceImage,"
+ "\x3Fp|setImage,"
+ "\x41pp|setPosition,"
+ "\x44p|setEraseType,"
+ "\x4Dpp|setDist,"
+ "\x52p|setAutoAnimFlag,"
+ "\x56p|setPalette,"
+ "\x5Cp|setScale,"
+ "\x61p|setAnimSpeed,"
+ "\x62p|setAutoShadow,"
+ "\x7Cp|setUpdateType,"
+ "\x7Dl|setClass,"
+ "\x8Bpp|setGeneralProperty,"
+ "\x8Cp|setMaskImage,"
+ "\x9E|resetTables,"
+ "\xC6pp|setUserValue,"
+ "\xD9|resetSprite");
+ break;
+ case 0x7A:
+ ext(output, "pppp|stampObject");
+ break;
+ case 0x7B:
+ ext(output, "lppi|startObject");
+ break;
+ case 0x7C:
+ ext(output, "lpi|startScript");
+ break;
+ case 0x7D:
+ ext(output, "lp|startScriptQuick");
+ break;
+ case 0x7E:
+ ext(output, "pp|setState");
+ break;
+ case 0x7F:
+ ext(output, "p|stopObjectScript");
+ break;
+ case 0x80:
+ ext(output, "p|stopScript");
+ break;
+ case 0x81:
+ ext(output, "|stopSentence");
+ break;
+ case 0x82:
+ ext(output, "p|stopSound");
+ break;
+ case 0x83:
+ ext(output, "|stopTalking");
+ break;
+ case 0x84:
+ writeVar(output, get_word(), pop());
+ break;
+ case 0x85:
+ writeArray(output, get_word(), NULL, pop(), pop());
+ break;
+ case 0x86:
+ writeArray(output, get_word(), pop(), pop(), pop());
+ break;
+ case 0x87:
+ se_a = pop();
+ se_b = pop();
+ push(se_oper(se_b, 7 + isEqual, se_a));
+ break;
+ case 0x88:
+ ext(output, "x" "systemOps\0"
+ "\x3D|restart,"
+ "\x80|clearDrawQueue,"
+ "\x84|confirmShutDown,"
+ "\x85|shutDown,"
+ "\x86|startGame,"
+ "\x87|startExec,"
+ "\x88|copyVirtBuf");
+ break;
+ case 0x89:
+ // TODO
+ ext(output, "x" "windowOps\0"
+ "\x39p|case25,"
+ "\x3Ap|case26,"
+ "\x3Fp|case31,"
+ "\xD9|case185,"
+ "\xF3h|case211,"
+ "\xFF|case223");
+ break;
+ case 0x8A:
+ ext(output, "pi|setTimer");
+ break;
+ case 0x8B:
+ ext(output, "x" "cursorCommand\0"
+ "\xEp|initCharset,"
+ "\xFl|charsetColors,"
+ "\x80z|setCursorImg,"
+ "\x81z|setCursorImg,"
+ "\x82zp|setCursorImg,"
+ "\x86|cursorOn,"
+ "\x87|cursorOff,"
+ "\x88|softCursorOn,"
+ "\x89|softCursorOff,"
+ "\x8B|userPutOn,"
+ "\x8C|userPutOff,"
+ "\x8D|softUserputOn,"
+ "\x8E|softUserputOff");
+
+ break;
+ case 0x8C:
+ ext(output, "x" "videoOps\0"
+ "\x0p|setUnk2,"
+ "\x13|setStatus,"
+ "\x28p|setWizResNumX,"
+ "\x2Fh|setFilename,"
+ "\x43p|setFlags,"
+ "\x5C|playOrStopVideo,");
+ break;
+ case 0x8D:
+ ext(output, "x" "wait\0"
+ "\x80pj|waitForActor,"
+ "\x81|waitForCamera,"
+ "\x82|waitForMessage,"
+ "\x83|waitForSentence");
+ break;
+ case 0x8E:
+ ext(output, "ppp|walkActorToObj");
+ break;
+ case 0x8F:
+ ext(output, "ppp|walkActorTo");
+ break;
+ case 0x90:
+ ext(output, "x" "writeFile\0"
+ "\x5ppi|writeArrayToFile,"
+ "\x2App|writeWord,"
+ "\x2Bpp|writeDWord,"
+ "\x2Cpp|writeByte");
+ break;
+ case 0x91:
+ ext(output, "x" "writeINI\0"
+ "\x2Bph|number,"
+ "\x4Dhh|string");
+ break;
+ case 0x92:
+ ext(output, "x" "writeConfigFile\0"
+ "\x2Bphhh|number,"
+ "\x4Dhhhh|string");
+ break;
+ case 0x93:
+ ext(output, "rp|abs");
+ break;
+ case 0x94:
+ ext(output, "rp|getActorWalkBox");
+ break;
+ case 0x95:
+ ext(output, "rp|getActorCostume");
+ break;
+ case 0x96:
+ ext(output, "rp|getActorElevation");
+ break;
+ case 0x97:
+ ext(output, "rp|getObjectDir");
+ break;
+ case 0x98:
+ ext(output, "rp|getActorMoving");
+ break;
+ case 0x99:
+ ext(output, "rppp|getActorData");
+ break;
+ case 0x9A:
+ ext(output, "rp|getActorRoom");
+ break;
+ case 0x9B:
+ ext(output, "rp|getActorScaleX");
+ break;
+ case 0x9C:
+ ext(output, "rpp|getAnimateVariable");
+ case 0x9D:
+ ext(output, "rp|getActorWidth");
+ break;
+ case 0x9E:
+ ext(output, "rp|objectX");
+ break;
+ case 0x9F:
+ ext(output, "rp|objectY");
+ break;
+ case 0xA0:
+ ext(output, "rpp|atan2");
+ break;
+ case 0xA1:
+ ext(output, "rpppp|getSegmentAngle");
+ break;
+ case 0xA2:
+ ext(output, "rp|getActorAnimProgress");
+ break;
+ case 0xA3:
+ ext(output, "rx" "getDistanceBetweenPoints\0"
+ "\x17pppp|case17,"
+ "\x18pppppp|case18");
+ break;
+ case 0xA4:
+ ext(output, "rlp|ifClassOfIs");
+ break;
+ case 0xA6:
+ ext(output, "rppp|cond");
+ break;
+ case 0xA7:
+ ext(output, "rp|cos");
+ break;
+ case 0xA8:
+ ext(output, "rh|debugInput");
+ break;
+ case 0xA9:
+ ext(output, "rh|getFileSize");
+ break;
+ case 0xAA:
+ ext(output, "rpp|getActorFromXY");
+ break;
+ case 0xAB:
+ ext(output, "rp|findAllObjects");
+ break;
+ case 0xAC:
+ ext(output, "rlp|findAllObjectsWithClassOf");
+ break;
+
+ case 0xAE:
+ ext(output, "rpp|findInventory");
+ break;
+ case 0xAF:
+ ext(output, "rpp|findObject");
+ break;
+ case 0xB0:
+ ext(output, "rlpp|findObjectWithClassOf");
+ break;
+ case 0xB1:
+ ext(output, "rpp|polygonHit");
+ break;
+ case 0xB2:
+ ext(output, "rwwpppppppp|getLinesIntersectionPoint");
+ break;
+ case 0xB3:
+ ext(output, "rx" "fontUnk\0"
+ "\x0|unk1,"
+ "\x3Cpp|unk2");
+ break;
+ case 0xB4:
+ ext(output, "r|getNumFreeArrays");
+ break;
+ case 0xB5:
+ ext(output, "rx" "getArrayDimSize\0"
+ "\x1w|dim1size,"
+ "\x2w|dim2size,"
+ "\x3w|dim1size,"
+ "\x4w|dim1start,"
+ "\x5w|dim1end,"
+ "\x6w|dim2start,"
+ "\x7w|dim2end");
+ break;
+ case 0xB6:
+ ext(output, "rx" "isResourceLoaded\0"
+ "\x19p|costume,"
+ "\x28p|image,"
+ "\x3Ep|room,"
+ "\x42p|script,"
+ "\x48p|sound");
+ break;
+ case 0xB7:
+ ext(output, "rx" "getResourceSize\0"
+ "\x19p|costume,"
+ "\x28p|image,"
+ "\x3Ep|roomImage,"
+ "\x42p|script,"
+ "\x48p|sound");
+ break;
+ case 0xB8:
+ ext(output, "rx" "getSpriteGroupInfo\0"
+ "\x5p|getSpriteArray,"
+ "\x28p|getDstResNum,"
+ "\x36pp|dummy,"
+ "\x3Bp|getPriority,"
+ "\x3Cpp|getXYScale?,"
+ "\x55p|getPositionX,"
+ "\x56p|getPositionY");
+ break;
+ case 0xB9:
+ ext(output, "rx" "getHeap\0"
+ "\x82|freeSpace,"
+ "\x83|largestBlockSize");
+ break;
+ case 0xBA:
+ ext(output, "rx" "getWizData\0"
+ "\x14pppp|pixelColor,"
+ "\x1App|imageCount,"
+ "\x21pppp|isPixelNonTransparentnumber,"
+ "\x27pp|height,"
+ "\x36pp|width,"
+ "\x54pp|imageSpotX,"
+ "\x55pp|imageSpotY");
+ break;
+ case 0xBB:
+ ext(output, "rpp|isActorInBox");
+ break;
+ case 0xBC:
+ ext(output, "rlp|isAnyOf");
+ break;
+ case 0xBD:
+ ext(output, "rp|getInventoryCount");
+ break;
+ case 0xBE:
+ ext(output, "ry" "kernelGetFunctions\0"
+ "\x1|virtScreenSave"
+ );
+ break;
+ case 0xBF:
+ ext(output, "rpp|max");
+ break;
+ case 0xC0:
+ ext(output, "rpp|min");
+ break;
+ case 0xC1:
+ ext(output, "rp|getObjectX");
+ break;
+ case 0xC2:
+ ext(output, "rp|getObjectY");
+ break;
+ case 0xC3:
+ ext(output, "rp|isRoomScriptRunning");
+ break;
+ case 0xC4:
+ ext(output, "rx" "getObjectData\0"
+ "\x20|getWidth,"
+ "\x21|getHeight,"
+ "\x25|getImageCount,"
+ "\x27|getX,"
+ "\x28|getY,"
+ "\x34|getState,"
+ "\x39p|setId,"
+ "\x8Bp|dummy");
+ break;
+ case 0xC5:
+ ext(output, "rph|openFile");
+ break;
+ case 0xC6:
+ ext(output, "rllp|getPolygonOverlap");
+ break;
+ case 0xC7:
+ ext(output, "rp|getOwner");
+ break;
+ case 0xC8:
+ ext(output, "rx" "getPaletteData\0"
+ "\xDpp|getColorCompontent2,"
+ "\x14pp|getColor,"
+ "\x21pppppp|,"
+ "\x35ppp|getSimilarColor2,"
+ "\x49ppp|getColorCompontent");
+ break;
+ case 0xC9:
+ ext(output, "rlp|pickOneOf");
+ break;
+ case 0xCA:
+ ext(output, "rplp|pickOneOfDefault");
+ break;
+ case 0xCB:
+ ext(output, "rlw|pickVarRandom");
+ break;
+ case 0xCC:
+ ext(output, "rx" "getPixel\0"
+ "\x8pp|foreground,"
+ "\x9pp|background");
+ break;
+ case 0xCD:
+ ext(output, "rpp|getDistObjObj");
+ break;
+ case 0xCE:
+ ext(output, "rppp|getDistObjPt");
+ break;
+ case 0xCF:
+ ext(output, "rpppp|getDistPtPt");
+ break;
+ case 0xD0:
+ ext(output, "rp|getRandomNumber");
+ break;
+ case 0xD1:
+ ext(output, "rpp|getRandomNumberRange");
+ break;
+ case 0xD3:
+ ext(output, "rx" "readFile\0"
+ "\x5ppi|readArrayFromFile,"
+ "\x29p|readWord,"
+ "\x2Bp|readDWord,"
+ "\x2Dp|readByte");
+ break;
+ case 0xD4:
+ ext(output, "rx" "readINI\0"
+ "\x2Bh|number,"
+ "\x4Dh|string");
+ break;
+ case 0xD5:
+ ext(output, "rx" "readConfigFile\0"
+ "\x2Bhhh|number,"
+ "\x4Dhhh|string");
+ break;
+ case 0xD6:
+ ext(output, "rp|isScriptRunning");
+ break;
+ case 0xD7:
+ ext(output, "rp|sin");
+ break;
+ case 0xD8:
+ ext(output, "rp|getSoundPosition");
+ break;
+ case 0xD9:
+ ext(output, "rp|isSoundRunning");
+ break;
+ case 0xDA:
+ ext(output, "rpp|getSoundVar");
+ break;
+ case 0xDB:
+ // TODO: Convert to HE100
+ ext(output, "rx" "getSpriteInfo\0"
+ "\x1Ep|getPosX,"
+ "\x1Fp|getPosY,"
+ "\x20p|getImageX,"
+ "\x21p|getImageY,"
+ "\x22p|getDistX,"
+ "\x23p|getDistY,"
+ "\x24p|getImageStateCount,"
+ "\x25p|getGroup,"
+ "\x26p|getDisplayX,"
+ "\x27p|getDisplayY,"
+ "\x2App|getFlags,"
+ "\x2Bp|getPriority,"
+ "\x2Dlpppp|findSprite,"
+ "\x34p|getImageState,"
+ "\x3Ep|getSourceImage,"
+ "\x3Fp|getImage,"
+ "\x44p|getEraseType,"
+ "\x52p|getFlagAutoAnim,"
+ "\x56p|getPalette,"
+ "\x5Cp|getScale,"
+ "\x61p|getAnimSpeed,"
+ "\x62p|getShadow,"
+ "\x7Cp|getUpdateType,"
+ "\x7Dlp|getClass,"
+ "\x8Bpp|getGeneralProperty,"
+ "\x8Cp|getMaskImage,"
+ "\xC6pp|getUserValue");
+ break;
+ case 0xDC:
+ ext(output, "rp|sqrt");
+ break;
+ case 0xDD:
+ // TODO: this loads another script which does something like
+ // stack altering and then finishes (usually with opcode 0xBD).
+ // When stack is changed, further disassembly is wrong.
+ // This is widely used in HE games.
+ // As there are cases when called script does not alter the
+ // stack, it's not correct to use "rlpp|..." here
+ ext(output, "lpp|startObjectQuick");
+ break;
+ case 0xDE:
+ ext(output, "lp|startScriptQuick2");
+ break;
+ case 0xDF:
+ ext(output, "rp|getState");
+ break;
+ case 0xE0:
+ ext(output, "rpp|compareString");
+ break;
+ case 0xE1:
+ ext(output, "rp|copyString");
+ break;
+ case 0xE2:
+ ext(output, "rppp|appendString");
+ break;
+ case 0xE3:
+ ext(output, "rpp|concatString");
+ break;
+ case 0xE4:
+ ext(output, "rp|getStringLen");
+ break;
+ case 0xE5:
+ ext(output, "rppp|getStringLenForWidth");
+ break;
+ case 0xE6:
+ ext(output, "rp|stringToInt");
+ break;
+ case 0xE7:
+ ext(output, "rpppp|getCharIndexInString");
+ break;
+ case 0xE8:
+ ext(output, "rppp|getStringWidth");
+ break;
+ case 0xE9:
+ ext(output, "rp|readFilePos");
+ break;
+ case 0xEA:
+ ext(output, "ri|getTimer");
+ break;
+ case 0xEB:
+ ext(output, "rpp|getVerbEntrypoint");
+ break;
+ default:
+ invalidop(NULL, code);
+ break;
+ }
+}
+
#define PRINT_V7HE(name) \
do { \
ext(output, "x" name "\0" \
@@ -1492,6 +2658,8 @@
byte code = get_byte();
StackEnt *se_a, *se_b;
+ //printf("HE_V72 Opcode: 0x0%x\n", code);
+
switch (code) {
case 0x0:
push(se_int(get_byte()));
@@ -1793,19 +2961,19 @@
case 0x2D: // HE90+
ext(output, "x" "videoOps\0"
"\x31h|setFilename,"
- "\x36|setFlags,"
- "\x39|setUnk2,"
- "\x3F|setWizResNumX,"
+ "\x36p|setFlags,"
+ "\x39p|setUnk2,"
+ "\x3Fp|setWizResNumX,"
"\xA5|setStatus,"
"\xFF|playOrStopVideo,");
break;
case 0x2F: // HE90+
ext(output, "x" "floodFill\0"
- "\x36|dummy,"
+ "\x36p|dummy,"
"\x39|reset,"
- "\x41|setXY,"
- "\x42|setFlags,"
- "\x43|setBoxRect,"
+ "\x41pp|setXY,"
+ "\x42p|setFlags,"
+ "\x43pppp|setBoxRect,"
"\xFF|floodFill");
break;
case 0x30: // HE90+
@@ -2659,7 +3827,7 @@
ext(output, "rppp|getStringWidth");
break;
case 0xEE:
- ext(output, "rp|stringLen");
+ ext(output, "rp|getStringLen");
break;
case 0xEF:
ext(output, "rppp|appendString");
@@ -2707,7 +3875,7 @@
}
break;
case 0xF9:
- ext(output, "h|setFilePath");
+ ext(output, "h|createDirectory");
break;
case 0xFA:
ext(output, "x" "setSystemMessage\0"
@@ -3522,13 +4690,13 @@
ext(output, "ppp|drawObjectAt");
break;
case 0x63:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
invalidop(NULL, code);
else
ext(output, "ppppp|drawBlastObject");
break;
case 0x64:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
invalidop(NULL, code);
else
ext(output, "pppp|setBlastObjectWindow");
@@ -3592,7 +4760,7 @@
jump(output);
break;
case 0x74:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
ext(output, "pp|startSound");
else
ext(output, "p|startSound");
@@ -3709,13 +4877,13 @@
ext(output, "pl|setBoxFlags");
break;
case 0x9A:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
invalidop(NULL, code);
else
ext(output, "|createBoxMatrix");
break;
case 0x9B:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
ext(output, "x" "resourceRoutines\0"
"\x64p|loadScript,"
"\x65p|loadSound,"
@@ -3770,7 +4938,7 @@
"\x77z|loadFlObject");
break;
case 0x9C:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
ext(output, "x" "roomOps\0"
"\xACpp|roomScroll,"
"\xAEpp|setScreen,"
@@ -3807,7 +4975,7 @@
"\xDCpp|copyPalColor");
break;
case 0x9D:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
ext(output, "x" "actorOps\0"
"\xC5p|setCurActor,"
"\x4Cp|setCostume,"
@@ -3880,7 +5048,7 @@
"\xEBp|setTalkScript");
break;
case 0x9E:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
ext(output, "x" "verbOps\0"
"\xC4p|setCurVerb,"
"\x7Cp|loadImg,"
@@ -3990,7 +5158,7 @@
ext(output, "rlp|isAnyOf");
break;
case 0xAE:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
ext(output, "x" "systemOps\0"
"\x9E|restart,"
"\xA0|confirmShutDown,"
@@ -4019,25 +5187,25 @@
ext(output, "|stopSentence");
break;
case 0xB4:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
PRINT_V7HE("printLine");
else
PRINT_V67("printLine");
break;
case 0xB5:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
PRINT_V7HE("printCursor");
else
PRINT_V67("printCursor");
break;
case 0xB6:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
PRINT_V7HE("printDebug");
else
PRINT_V67("printDebug");
break;
case 0xB7:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
PRINT_V7HE("printSystem");
else
PRINT_V67("printSystem");
@@ -4057,7 +5225,7 @@
"\xFF|end");
break;
case 0xB9:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
PRINT_V7HE("printEgo");
else
PRINT_V67("printEgo");
@@ -4078,7 +5246,7 @@
"\xCCv|nukeArray");
break;
case 0xBD:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
ext(output, "|stopObjectCode");
else
invalidop(NULL, code);
@@ -4119,7 +5287,7 @@
ext(output, "rpppp|getDistPtPt");
break;
case 0xC8:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
ext(output, "ry" "kernelGetFunctions\0"
"\x1|virtScreenSave"
);
@@ -4144,7 +5312,7 @@
);
break;
case 0xC9:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
ext(output, "ry" "kernelSetFunctions\0"
"\x1|virtScreenLoad"
);
@@ -4238,25 +5406,25 @@
ext(output, "rp|isRoomScriptRunning");
break;
case 0xD9:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
ext(output, "p|closeFile");
else
invalidop(NULL, code);
break;
case 0xDA:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
ext(output, "rsp|openFile");
else
invalidop(NULL, code);
break;
case 0xDB:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
ext(output, "rpp|readFile");
else
invalidop(NULL, code);
break;
case 0xDC:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
ext(output, "ppp|writeFile");
else
@@ -4267,19 +5435,19 @@
ext(output, "rp|findAllObjects");
break;
case 0xDE:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
ext(output, "s|deleteFile");
else
invalidop(NULL, code);
break;
case 0xDF:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
ext(output, "ss|renameFile");
else
invalidop(NULL, code);
break;
case 0xE0:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
ext(output, "x" "soundOps\0"
"\xDEp|setMusicVolume,"
"\xDF|dummy,"
@@ -4291,7 +5459,7 @@
ext(output, "rpp|getPixel");
break;
case 0xE2:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
ext(output, "p|localizeArrayToScript");
else
invalidop(NULL, code);
@@ -4303,13 +5471,13 @@
ext(output, "p|setBotSet");
break;
case 0xE9:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
ext(output, "ppp|seekFilePos");
else
invalidop(NULL, code);
break;
case 0xEA:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
ext(output, "x" "redimArray\0"
"\xC7ppw|int,"
"\xCAppw|byte");
@@ -4317,67 +5485,67 @@
invalidop(NULL, code);
break;
case 0xEB:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
ext(output, "rp|readFilePos");
else
invalidop(NULL, code);
break;
case 0xEC:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
invalidop(NULL, code);
else
ext(output, "rp|getActorLayer");
break;
case 0xED:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
ext(output, "rppp|getStringWidth");
else
ext(output, "rp|getObjectNewDir");
break;
case 0xEE:
- if (g_options.HumongousFlag)
- ext(output, "rp|stringLen");
+ if (g_options.heVersion)
+ ext(output, "rp|getStringLen");
else
invalidop(NULL, code);
break;
case 0xEF:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
ext(output, "rppp|appendString");
else
invalidop(NULL, code);
break;
case 0xF3:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
ext(output, "rsp|readINI");
else
invalidop(NULL, code);
break;
case 0xF4:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
ext(output, "rsp|writeINI");
else
invalidop(NULL, code);
break;
case 0xF5:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
ext(output, "rppp|getStringLenForWidth");
else
invalidop(NULL, code);
break;
case 0xF6:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
ext(output, "rpppp|getCharIndexInString");
else
invalidop(NULL, code);
break;
case 0xF9:
- if (g_options.HumongousFlag)
- ext(output, "s|setFilePath");
+ if (g_options.heVersion)
+ ext(output, "s|createDirectory");
else
invalidop(NULL, code);
break;
case 0xFA:
- if (g_options.HumongousFlag) {
+ if (g_options.heVersion) {
ext(output, "x" "setSystemMessage\0"
"\xF0s|unk1,"
"\xF1s|versionMsg,"
@@ -4387,7 +5555,7 @@
invalidop(NULL, code);
break;
case 0xFB:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
ext(output, "x" "polygonOps\0"
"\xF6ppppppppp|polygonStore,"
"\xF7pp|polygonErase,"
@@ -4397,7 +5565,7 @@
invalidop(NULL, code);
break;
case 0xFC:
- if (g_options.HumongousFlag)
+ if (g_options.heVersion)
ext(output, "rpp|polygonHit");
else
invalidop(NULL, code);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list