[Scummvm-cvs-logs] SF.net SVN: scummvm:[41445] tools/branches/gsoc2009-decompiler/decompiler/ parser.h

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Thu Jun 11 10:26:21 CEST 2009


Revision: 41445
          http://scummvm.svn.sourceforge.net/scummvm/?rev=41445&view=rev
Author:   fingolfin
Date:     2009-06-11 08:26:21 +0000 (Thu, 11 Jun 2009)

Log Message:
-----------
Added enough opcodes so that I can decompiler script-1 of samnmax

Modified Paths:
--------------
    tools/branches/gsoc2009-decompiler/decompiler/parser.h

Modified: tools/branches/gsoc2009-decompiler/decompiler/parser.h
===================================================================
--- tools/branches/gsoc2009-decompiler/decompiler/parser.h	2009-06-11 08:25:49 UTC (rev 41444)
+++ tools/branches/gsoc2009-decompiler/decompiler/parser.h	2009-06-11 08:26:21 UTC (rev 41445)
@@ -27,6 +27,7 @@
 		_reader->registerOpcode(0x01, new SimpleReader("push", "W"));
 		_reader->registerOpcode(0x03, new SimpleReader("pushVar", "w"));
 		_reader->registerOpcode(0x07, new SimpleReader("wordArrayRead", "w"));
+		_reader->registerOpcode(0x0c, new SimpleReader("dup"));
 		_reader->registerOpcode(0x0d, new SimpleReader("not"));
 		_reader->registerOpcode(0x0e, new SimpleReader("=="));
 		_reader->registerOpcode(0x0f, new SimpleReader("!="));
@@ -35,6 +36,7 @@
 		_reader->registerOpcode(0x12, new SimpleReader("<="));
 		_reader->registerOpcode(0x13, new SimpleReader(">="));
 		_reader->registerOpcode(0x14, new SimpleReader("+"));
+		_reader->registerOpcode(0x15, new SimpleReader("-"));
 		_reader->registerOpcode(0x43, new SimpleReader("writeVar", "w"));
 		_reader->registerOpcode(0x47, new SimpleReader("wordArrayWrite", "w"));
 		_reader->registerOpcode(0x4f, new SimpleReader("wordVarInc", "w"));
@@ -59,6 +61,7 @@
 
 		_reader->registerOpcode(0x6d, new SimpleReader("classOfIs"));
 		_reader->registerOpcode(0x6e, new SimpleReader("setClass"));
+		_reader->registerOpcode(0x70, new SimpleReader("setState"));
 		_reader->registerOpcode(0x72, new SimpleReader("getOwner"));
 		_reader->registerOpcode(0x73, new JumpReader("jump", "o3"));
 		_reader->registerOpcode(0x7b, new SimpleReader("loadRoom"));
@@ -73,8 +76,28 @@
 		_reader->registerOpcode(0x8d, new SimpleReader("getObjectX"));
 		_reader->registerOpcode(0x8e, new SimpleReader("getObjectY"));
 
+		SubopcodeReader *res = new SubopcodeReader();
+		_reader->registerOpcode(0x9b, res);
+		res->registerOpcode(100, new SimpleReader("resOps.loadScript"));
+		res->registerOpcode(101, new SimpleReader("resOps.loadSound"));
+		res->registerOpcode(102, new SimpleReader("resOps.loadCostume"));
+		res->registerOpcode(103, new SimpleReader("resOps.loadRoom"));
+		res->registerOpcode(104, new SimpleReader("resOps.nukeScript"));
+		res->registerOpcode(105, new SimpleReader("resOps.nukeSound"));
+		res->registerOpcode(106, new SimpleReader("resOps.nukeCostume"));
+		res->registerOpcode(107, new SimpleReader("resOps.nukeRoom"));
+		res->registerOpcode(108, new SimpleReader("resOps.lockScript"));
+		res->registerOpcode(109, new SimpleReader("resOps.lockSound"));
+		res->registerOpcode(110, new SimpleReader("resOps.lockCostume"));
+		res->registerOpcode(111, new SimpleReader("resOps.lockRoom"));
+		res->registerOpcode(112, new SimpleReader("resOps.unlockScript"));
+		res->registerOpcode(113, new SimpleReader("resOps.unlockSound"));
+		res->registerOpcode(114, new SimpleReader("resOps.unlockCostume"));
+		res->registerOpcode(115, new SimpleReader("resOps.unlockRoom"));
+
 		SubopcodeReader *room = new SubopcodeReader();
 		_reader->registerOpcode(0x9c, room);
+		room->registerOpcode(175, new SimpleReader("roomOps.roomPalette"));
 		room->registerOpcode(181, new SimpleReader("roomOps.fade"));
 
 		SubopcodeReader *actor = new SubopcodeReader();
@@ -99,19 +122,31 @@
 		
 
 		_reader->registerOpcode(0xad, new SimpleReader("isAnyOf"));
+		_reader->registerOpcode(0xaf, new SimpleReader("isActorInBox"));
 		_reader->registerOpcode(0xb0, new SimpleReader("delay"));
 		_reader->registerOpcode(0xb3, new SimpleReader("stopSentence"));
 
+		// TODO: The various print* opcodes share all subopcodes. Fix this code duplication
+		SubopcodeReader *printDebug = new SubopcodeReader();
+		_reader->registerOpcode(0xb6, printDebug);
+		printDebug->registerOpcode(75, new SimpleReader("printDebug.msg", "s"));
+		printDebug->registerOpcode(0xfe, new SimpleReader("printDebug.loadDefault"));
+		printDebug->registerOpcode(0xff, new SimpleReader("printDebug.saveDefault"));
+
 		SubopcodeReader *print = new SubopcodeReader();
 		_reader->registerOpcode(0xb7, print);
 		print->registerOpcode(75, new SimpleReader("printSystem.msg", "s"));
 		print->registerOpcode(0xfe, new SimpleReader("printSystem.begin"));
+		print->registerOpcode(0xff, new SimpleReader("printSystem.saveDefault"));
 
 		SubopcodeReader *dimArray = new SubopcodeReader();
 		_reader->registerOpcode(0xbc, dimArray);
 		dimArray->registerOpcode(199, new SimpleReader("dimArray.int", "w"));
+		dimArray->registerOpcode(204, new SimpleReader("dimArray.undim", "w"));
 
-		_reader->registerOpcode(0xc9, new SimpleReader("kernelSetFunctions.dummy"));
+		SubopcodeReader *kernelSet = new SubopcodeReader();
+		_reader->registerOpcode(0xc9, kernelSet);
+		kernelSet->registerOpcode(108, new SimpleReader("kernelSetFunctions.setShadowPalette"));
 	}
 
 	void parseHeader(ifstream &f) {


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