[Scummvm-cvs-logs] SF.net SVN: scummvm: [30291] tools/trunk/descumm6.cpp
Kirben at users.sourceforge.net
Kirben at users.sourceforge.net
Sun Jan 6 12:31:05 CET 2008
Revision: 30291
http://scummvm.svn.sourceforge.net/scummvm/?rev=30291&view=rev
Author: Kirben
Date: 2008-01-06 03:31:04 -0800 (Sun, 06 Jan 2008)
Log Message:
-----------
Add basic support for decompiling HE90-99 games.
Modified Paths:
--------------
tools/trunk/descumm6.cpp
Modified: tools/trunk/descumm6.cpp
===================================================================
--- tools/trunk/descumm6.cpp 2008-01-06 11:01:56 UTC (rev 30290)
+++ tools/trunk/descumm6.cpp 2008-01-06 11:31:04 UTC (rev 30291)
@@ -175,6 +175,9 @@
else
where += sprintf(where, "var%d", _var & 0xFFF);
} else if (_var & 0x8000) {
+ // HE80+
+ // where += sprintf(where, "roomvar%ld", se->data & 0xFFF);
+ // else
where += sprintf(where, "bitvar%d", _var & 0x7FFF);
} else if (_var & 0x4000) {
where += sprintf(where, "localvar%d", _var & 0xFFF);
@@ -1492,18 +1495,142 @@
break;
case 0x1C: // HE90+
ext(output, "x" "wizImageOps\0"
+ "\x20p|setResDefImageWidth,"
+ "\x21p|setResDefImageHeight,"
"\x30|processMode1,"
+ "\x31h|processMode3,"
+ "\x32hp|processMode4,"
"\x33ppppp|setCaptureRect,"
"\x34p|setImageState,"
"\x36p|setFlags,"
"\x38ppppp|drawWizImage,"
"\x39p|setImage,"
+ "\x3Ep|setSourceImage,"
"\x41pp|setPosition,"
"\x42pp|remapPalette,"
"\x43pppp|setClipRect,"
+ "\x56p|setPalette,"
+ "\x5Cp|setScale,"
+ "\x83ppp|processMode7,"
+ "\x85ppppp|proxessMode9,"
+ "\x89p|setDstResNum,"
+ "\x9App|setPosition,"
+ "\xD9|processMode8,"
"\xF6p|setupPolygon,"
+ "\xF9pp|remapPalette,"
"\xFF|processWizImage");
break;
+ case 0x1D: // HE90+
+ ext(output, "rpp|min");
+ break;
+ case 0x1E: // HE90+
+ ext(output, "rpp|max");
+ break;
+ case 0x1F: // HE90+
+ ext(output, "rp|sin");
+ break;
+ case 0x20: // HE90+
+ ext(output, "rp|cos");
+ break;
+ case 0x21: // HE90+
+ ext(output, "rp|sqrt");
+ break;
+ case 0x22: // HE90+
+ ext(output, "rpp|atan2");
+ break;
+ case 0x23: // HE90+
+ ext(output, "rpppp|getSegmentAngle");
+ break;
+ case 0x24: // HE90+
+ ext(output, "rx" "getDistanceBetweenPoints\0"
+ "\x1Cpppp|case28,"
+ "\x1Dpppppp|case29");
+ break;
+ case 0x25: // HE90+
+ 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,"
+// "\x2Dppp|findSprite," // HE90
+ "\x2Dpppp|findSprite," // HE98
+// "\x2Dlpppp|findSprite," // HE99+
+ "\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 0x26: // HE90+
+ ext(output, "x" "setSpriteInfo\0"
+ "\x22p|setDistX,"
+ "\x23p|setDistY,"
+ "\x25p|setGroup,"
+ "\x2App|setFlags,"
+ "\x2Bp|setPriority,"
+ "\x2Cpp|move,"
+ "\x34p|setImageState,"
+ "\x35p|setAngle,"
+ "\x39p|setRange," // HE90-98
+// "\x39pp|setRange," // HE 98.5+
+ "\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 0x27: // HE90+
+ ext(output, "rx" "getSpriteGroupInfo\0"
+ "\x8p|getSpriteArray,"
+ "\x1Ep|getPositionX,"
+ "\x1Fp|getPositionY,"
+ "\x2App|getXYScale?,"
+ "\x2Bp|getPriority,"
+ "\x3Fp|getDstResNum,"
+ "\x8Bpp|dummy");
+ break;
+ case 0x28: // HE90+
+ ext(output, "x" "setSpriteGroupInfo\0"
+ "\x25pp|misc,"
+ "\x2App|setXYScale?,"
+ "\x2Bp|setPriority,"
+ "\x2Cpp|move,"
+ "\x39p|setId,"
+ "\x3Fp|setImage,"
+ "\x41pp|setPosition,"
+ "\x43pppp|setBounds,"
+ "\x5D|resetBounds,"
+ "\xD9|reset");
+ break;
case 0x29: // HE90+
ext(output, "rx" "getWizData\0"
"\x1Epp|imageSpotX,"
@@ -1514,9 +1641,90 @@
"\x2Dpppp|isPixelNonTransparentnumber,"
"\x42pppp|pixelColor");
break;
+ case 0x2A: // HE90+
+ ext(output, "rppp|getActorData");
+ break;
+ case 0x2B: // HE90+
+ ext(output, "lppi|startScriptUnk");
+ break;
+ case 0x2C: // HE90+
+ ext(output, "lppi|jumpToScriptUnk");
+ break;
+ case 0x2D: // HE90+
+ ext(output, "x" "videoOps\0"
+ "\x31h|setFilename,"
+ "\x36|setFlags,"
+ "\x39|setUnk2,"
+ "\x3F|setWizResNumX,"
+ "\xA5|setStatus,"
+ "\xFF|playOrStopVideo,");
+ break;
+ case 0x2F: // HE90+
+ ext(output, "x" "floodfill\0"
+ "\x36|dummy,"
+ "\x39|reset,"
+ "\x41|setXY,"
+ "\x42|setFlags,"
+ "\x43|setBoxRect,"
+ "\xFF|floodfill");
+ break;
+ case 0x30: // HE90+
+ ext(output, "rpp|mod");
+ break;
+ case 0x31: // HE90+
+ ext(output, "rpp|shl");
+ break;
+ case 0x32: // HE90+
+ ext(output, "rpp|shr");
+ break;
+ case 0x33: // HE90+
+ ext(output, "rpp|xor");
+ break;
+ case 0x34:
+ ext(output, "rlp|findAllObjectsWithClassOf");
+ break;
+ case 0x35: // HE90+
+ ext(output, "rllp|getPolygonOverlap");
+ break;
+ case 0x36: // HE90+
+ ext(output, "rppp|cond");
+ break;
+ case 0x37: // HE90+
+ ext(output, "x" "dim2dim2Array\0"
+ "\x2pppppw|bit,"
+ "\x3pppppw|nibble,"
+ "\x4pppppw|byte,"
+ "\x5pppppw|int,"
+ "\x6pppppw|dword,"
+ "\x7pppppw|string");
+ break;
+ case 0x38: // HE90+
+ ext(output, "x" "redim2dimArray\0"
+ "\x4ppppw|byte,"
+ "\x5ppppw|int,"
+ "\x6ppppw|dword");
+ break;
+ case 0x39: // HE90+
+ ext(output, "rwwpppppppp|getLinesIntersectionPoint");
+ break;
+ case 0x3A: // HE90+
+ ext(output, "x" "sortArray\0"
+ "\x81pppppw|sort,");
+ break;
case 0x43:
writeVar(output, get_word(), pop());
break;
+ case 0x44: // HE90+
+ ext(output, "rx" "getObjectData\0"
+ "\x20|getWidth,"
+ "\x21|getHeight,"
+ "\x25|getImageCount,"
+ "\x27|getX,"
+ "\x28|getY,"
+ "\x34|getState,"
+ "\x39p|setId,"
+ "\x8Bp|dummy");
+ break;
case 0x45: // HE80+
ext(output, "x" "createSound\0"
"\x1Bp|create,"
@@ -1524,6 +1732,9 @@
"\xE8p|setId,"
"\xFF|dummy");
break;
+ case 0x46: // HE80+
+ ext(output, "rh|getFileSize");
+ break;
case 0x47:
writeArray(output, get_word(), NULL, pop(), pop());
break;
@@ -1640,7 +1851,16 @@
ext(output, "l|beginCutscene");
break;
case 0x69:
- ext(output, "|stopMusic");
+ // HE80+
+ ext(output, "x" "windowOps\0"
+ "\x39p|case25,"
+ "\x3Ap|case26,"
+ "\x3Fp|case31,"
+ "\xD9|case185,"
+ "\xF3h|case211,"
+ "\xFF|case223");
+ // else
+ // ext(output, "|stopMusic");
break;
case 0x6A:
ext(output, "p|freezeUnfreeze");
@@ -1649,6 +1869,7 @@
ext(output, "x" "cursorCommand\0"
"\x13z|setCursorImg,"
"\x14z|setCursorImg,"
+ "\x3Czp|setCursorImg,"
"\x90|cursorOn,"
"\x91|cursorOff,"
"\x92|userPutOn,"
@@ -1790,7 +2011,15 @@
ext(output, "rp|getInventoryCount");
break;
case 0x94:
- ext(output, "rpp|getVerbFromXY");
+ // HE90+
+ ext(output, "rx" "getPaletteData\0"
+ "\x2Dpppppp|,"
+ "\x34ppp|getColorCompontent,"
+ "\x42pp|getColor,"
+ "\x84pp|getColorCompontent2,"
+ "\xD9ppp|getSimilarColor2");
+ // else
+ // ext(output, "rpp|getVerbFromXY");
break;
case 0x95:
ext(output, "|beginOverride");
@@ -1869,6 +2098,9 @@
"\x2Bp|layer,"
"\xC5p|setCurActor,"
"\x40pppp|setClipRect,"
+ "\x41pp|putActor,"
+ "\x43pppp|setActorClipRect,"
+ "\x44p|setHEFlag,"
"\x4Cp|setCostume,"
"\x4Dpp|setWalkSpeed,"
"\x4El|setSound,"
@@ -1893,6 +2125,7 @@
"\x62p|setShadowMode,"
"\x63pp|setTalkPos,"
"\x9Cp|charset,"
+ "\xAFp|setPaletteNum,"
"\xC6pp|setAnimVar,"
"\xD7|setIgnoreTurnsOn,"
"\xD8|setIgnoreTurnsOff,"
@@ -1901,6 +2134,18 @@
"\xE1hp|setTalkieSlot");
break;
case 0x9E:
+ // HE90+
+ ext(output, "x" "paletteOps\0"
+ "\x39p|setPaletteNum,"
+ "\x3Fpp|setPaletteFromImage,"
+ "\x42ppppp|setPaletteColor,"
+ "\x46ppp|copyPaletteColor,"
+ "\x4Cp|setPaletteFromCostume,"
+ "\x56p|copyPalette,"
+ "\xAFpp|setPaletteFromRoom,"
+ "\xD9|restorePalette,"
+ "\xFF|resetPaletteNum");
+ /* else
ext(output, "x" "verbOps\0"
"\xC4p|setCurVerb,"
"\x7Cp|loadImg,"
@@ -1920,6 +2165,7 @@
"\x8Bpp|setToObject,"
"\x8Cp|setBkColor,"
"\xFF|redraw");
+ */
break;
case 0x9F:
ext(output, "rpp|getActorFromXY");
@@ -1942,6 +2188,38 @@
se_a = se_get_string_he();
writeArray(output, get_word(), NULL, se_a, se_a);
break;
+ case 126:
+ // TODO
+ se_get_list();
+ pop();
+ pop();
+ pop();
+ pop();
+ get_word();
+ break;
+ case 127:
+ // TODO
+ pop();
+ pop();
+ pop();
+ pop();
+ get_word();
+ pop();
+ pop();
+ pop();
+ pop();
+ get_word();
+ break;
+ case 128:
+ // TODO
+ pop();
+ pop();
+ pop();
+ pop();
+ pop();
+ pop();
+ get_word();
+ break;
case 194:
se_get_list();
pop();
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