[Scummvm-cvs-logs] SF.net SVN: scummvm:[47958] scummvm/trunk/engines/sci/engine/scriptdebug. cpp

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Sun Feb 7 13:14:49 CET 2010


Revision: 47958
          http://scummvm.svn.sourceforge.net/scummvm/?rev=47958&view=rev
Author:   fingolfin
Date:     2010-02-07 12:14:49 +0000 (Sun, 07 Feb 2010)

Log Message:
-----------
SCI: Convert disassemble to use readPMachineInstruction.

This change is untested, please check it. Also, the opparams
array is not used but could be used to simplify the reading code.

Modified Paths:
--------------
    scummvm/trunk/engines/sci/engine/scriptdebug.cpp

Modified: scummvm/trunk/engines/sci/engine/scriptdebug.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/scriptdebug.cpp	2010-02-07 12:14:26 UTC (rev 47957)
+++ scummvm/trunk/engines/sci/engine/scriptdebug.cpp	2010-02-07 12:14:49 UTC (rev 47958)
@@ -106,9 +106,6 @@
 	int scr_size;
 	reg_t retval = make_reg(pos.segment, pos.offset + 1);
 	uint16 param_value;
-	int opsize;
-	uint opcode;
-	int bytecount = 1;
 	int i = 0;
 	Kernel *kernel = s->_kernel;
 
@@ -126,46 +123,16 @@
 		return pos;
 	}
 
-	opsize = scr[pos.offset];
-	opcode = opsize >> 1;
+	int16 opparams[4];
+	byte opsize;
+	int bytecount = readPMachineInstruction(scr + pos.offset, opsize, opparams);
+	const byte opcode = opsize >> 1;
 
 	opsize &= 1; // byte if true, word if false
 
 	printf("%04x:%04x: ", PRINT_REG(pos));
 
 	if (print_bytecode) {
-		while (g_opcode_formats[opcode][i]) {
-			switch (g_opcode_formats[opcode][i++]) {
-
-			case Script_SByte:
-			case Script_Byte:
-				bytecount++;
-				break;
-
-			case Script_Word:
-			case Script_SWord:
-				bytecount += 2;
-				break;
-
-			case Script_SVariable:
-			case Script_Variable:
-			case Script_Property:
-			case Script_Global:
-			case Script_Local:
-			case Script_Temp:
-			case Script_Param:
-			case Script_SRelative:
-				if (opsize)
-					bytecount ++;
-				else
-					bytecount += 2;
-				break;
-
-			default:
-				break;
-			}
-		}
-
 		if (pos.offset + bytecount > scr_size) {
 			warning("Operation arguments extend beyond end of script");
 			return retval;


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