[Scummvm-cvs-logs] CVS: tools descumm3.cpp,1.4,1.5

Max Horn fingolfin at users.sourceforge.net
Sun Jul 28 03:18:04 CEST 2002


Update of /cvsroot/scummvm/tools
In directory usw-pr-cvs1:/tmp/cvs-serv20342

Modified Files:
	descumm3.cpp 
Log Message:
Changes some opcode names to match ScummVM/descumm5; renamed do_33 to do_room_ops (this is not yet implemented correctly!); fixed do_matrix_ops; added various missing opcodes; fixed decoding on big endian systems (hopefully I didn't break LE doing so :-)

Index: descumm3.cpp
===================================================================
RCS file: /cvsroot/scummvm/tools/descumm3.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- descumm3.cpp	7 Jul 2002 17:50:46 -0000	1.4
+++ descumm3.cpp	28 Jul 2002 10:17:37 -0000	1.5
@@ -123,6 +123,11 @@
 	return ((a >> 8) & 0xFF) + ((a << 8) & 0xFF00);
 }
 
+#else
+
+#define TO_LE_16(x) (x)
+#define TO_LE_32(x) (x)
+
 #endif
 
 int get_byte()
@@ -132,11 +137,7 @@
 
 int get_word()
 {
-#if defined(SCUMM_BIG_ENDIAN)
 	int i = TO_LE_16(*((short *)cur_pos));
-#else
-	int i = *((short *)cur_pos);
-#endif
 	cur_pos += 2;
 	return i;
 }
@@ -886,8 +887,13 @@
 	strcpy(buf, ")");
 }
 
-void do_33(char *buf)
+void do_room_ops(char *buf, byte master_opcode)
 {
+/*
+	FIXME - this is not correct - but how do we pass this data on to do_tok? hm
+	int a = ((master_opcode & 0x80) ? get_var(buf) : get_word());
+	int b = ((master_opcode & 0x80) ? get_var(buf) : get_word());
+*/
 	int opcode = get_byte();
 
 	//buf+=sprintf(buf, "SubCode33%.2X", opcode);
@@ -958,10 +964,10 @@
 		break;
 
 	case 0x0D:
-		do_tok(buf, "roomops:13", ((opcode & 0x80) ? A1V : A1B) | A2ASCII);
+		do_tok(buf, "save-string", ((opcode & 0x80) ? A1V : A1B) | A2ASCII);
 		break;
 	case 0x0E:
-		do_tok(buf, "roomops:14", ((opcode & 0x80) ? A1V : A1B) | A2ASCII);
+		do_tok(buf, "load-string", ((opcode & 0x80) ? A1V : A1B) | A2ASCII);
 		break;
 
 	case 0x0F:
@@ -1354,25 +1360,7 @@
 
 void do_matrix_ops(char *buf, byte opcode)
 {
-	opcode = get_byte();
-
-	switch (opcode & 0x1F) {
-	case 0x1:
-		do_tok(buf, "SetBoxTo", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B));
-		break;
-	case 0x2:
-		do_tok(buf, "SetBoxScale", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B));
-		break;
-	case 0x3:
-		do_tok(buf, "SetBoxSlot", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B));
-		break;
-	case 0x4:
-		do_tok(buf, "SetBoxPath", 0);
-		break;
-	default:
-		sprintf(buf, "SetBoxUnknown%.2X", opcode);
-	}
-
+	do_tok(buf, "setBoxFlags", ((opcode & 0x80) ? A1V : A1B) | A2B);
 }
 
 void get_tok(char *buf)
@@ -1382,10 +1370,10 @@
 	switch (opcode) {
 
 	case 0x00:
-		do_tok(buf, "StopObjectScript", 0);
+		do_tok(buf, "stopObjectScript", 0);
 		break;
 	case 0xA0:
-		do_tok(buf, "StopScript", 0);
+		do_tok(buf, "stopScript", 0);
 		break;
 
 	case 0x01:
@@ -1396,7 +1384,7 @@
 	case 0xA1:
 	case 0xC1:
 	case 0xE1:
-		do_tok(buf, "PutActor",
+		do_tok(buf, "putActor",
 					 ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2W) |
 					 ((opcode & 0x20) ? A3V : A3W));
 		break;
@@ -1405,7 +1393,7 @@
 	case 0x55:
 	case 0x95:
 	case 0xD5:
-		do_tok(buf, "GetActorFromPos",
+		do_tok(buf, "actorFromPos",
 					 ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2W) | AVARSTORE);
 		break;
 
@@ -1433,9 +1421,13 @@
 		break;
 
 	case 0x05:
-	case 0x85:{
+	case 0x25:
+	case 0x65:
+	case 0x85:
+	case 0xA5:
+	case 0xE5:{
 
-			buf = do_tok(buf, "DrawObject", ((opcode & 0x80) ? A1V : A1W) | ANOLASTPAREN);
+			buf = do_tok(buf, "drawObject", ((opcode & 0x80) ? A1V : A1W) | ANOLASTPAREN);
 			opcode = get_byte();
 			switch (opcode & 0x1F) {
 			case 1:
@@ -1454,21 +1446,21 @@
 
 	case 0x06:
 	case 0x86:
-		do_tok(buf, "GetActorElevation", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
+		do_tok(buf, "getActorElevation", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
 		break;
 
 	case 0x07:
 	case 0x47:
 	case 0x87:
 	case 0xC7:
-		do_tok(buf, "SetState", ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2B));
+		do_tok(buf, "setState", ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2B));
 		break;
 
 	case 0x09:
 	case 0x49:
 	case 0x89:
 	case 0xC9:
-		do_tok(buf, "FaceActor", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B));
+		do_tok(buf, "faceActor", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B));
 		break;
 
 	case 0x0A:
@@ -1506,7 +1498,7 @@
 	case 0x4D:
 	case 0x8D:
 	case 0xCD:
-		do_tok(buf, "WalkActorToActor",
+		do_tok(buf, "walkActorToActor",
 					 ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B) | A3B);
 		break;											/* arg1=actor, arg2=actor */
 
@@ -1564,7 +1556,7 @@
 	case 0xBE:
 	case 0xDE:
 	case 0xFE:
-		do_tok(buf, "WalkTo",
+		do_tok(buf, "walkActorTo",
 					 ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2W) |
 					 ((opcode & 0x20) ? A3V : A3W));
 		break;
@@ -1579,19 +1571,12 @@
 		do_tok(buf, NULL, A1W | A2W | ANOFIRSTPAREN | ASTARTCOMMA);
 		break;
 
-	case 0x25:
-	case 0x65:
-	case 0xA5:
-	case 0xE5:
-		do_tok(buf, "PickUp", ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2B));
-		break;
-
 	case 0x2C:
 		do_cursor_command(buf);
 		break;
 
 	case 0x40:
-		do_tok(buf, "runCutscene", A1VARUNTIL0xFF);
+		do_tok(buf, "cutscene", A1VARUNTIL0xFF);
 		break;
 
 	case 0x42:
@@ -1610,17 +1595,17 @@
 
 	case 0x63:
 	case 0xE3:
-		do_tok(buf, "GetActorFacing", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
+		do_tok(buf, "getActorFacing", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
 		break;
 
 	case 0x6C:
 	case 0xEC:
-		do_tok(buf, "GetActorWidth", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
+		do_tok(buf, "getActorWidth", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
 		break;
 
 	case 0x71:
 	case 0xF1:
-		do_tok(buf, "GetActorCostume", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
+		do_tok(buf, "getActorCostume", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
 		break;
 
 	case 0xAE:{
@@ -1649,7 +1634,7 @@
 	case 0x74:
 	case 0xB4:
 	case 0xF4:
-		do_tok(buf, "GetDistActorToObject",
+		do_tok(buf, "getDist",
 					 AVARSTORE | ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2W));
 		break;
 
@@ -1658,14 +1643,14 @@
 	case 0x76:
 	case 0xB6:
 	case 0xF6:
-		do_tok(buf, "WalkActorToObject", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2W));
+		do_tok(buf, "walkActorToObject", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2W));
 		break;
 
 	case 0x37:
 	case 0x77:
 	case 0xB7:
 	case 0xF7:
-		do_tok(buf, "StartObject",
+		do_tok(buf, "startObject",
 					 ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2B) | A3VARUNTIL0xFF);
 		break;
 
@@ -1677,7 +1662,7 @@
 	case 0xB9:
 	case 0xD9:
 	case 0xF9:{
-			buf = strecpy(buf, "DoSentence(");
+			buf = strecpy(buf, "doSentence(");
 			if (!(opcode & 0x80) && (*cur_pos == 254)) {
 				strcpy(buf, "STOP)");
 				cur_pos++;
@@ -1692,7 +1677,7 @@
 
 	case 0x62:
 	case 0xE2:
-		do_tok(buf, "StopScript", ((opcode & 0x80) ? A1V : A1B));
+		do_tok(buf, "stopScript", ((opcode & 0x80) ? A1V : A1B));
 		break;
 
 	case 0xAc:
@@ -1703,15 +1688,15 @@
 	case 0x51:
 	case 0x91:
 	case 0xD1:
-		do_tok(buf, "ActorAnimate", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B));
+		do_tok(buf, "actorAnimate", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B));
 		break;
 
 	case 0x80:
-		do_tok(buf, "Break", 0);
+		do_tok(buf, "breakHere", 0);
 		break;
 
 	case 0xc0:
-		do_tok(buf, "EndCutscene", 0);
+		do_tok(buf, "endCutscene", 0);
 		break;
 
 	case 0x27:{									/* String management subcode */
@@ -1748,7 +1733,7 @@
 		break;
 
 	case 0x20:
-		do_tok(buf, "StopMusic", 0);
+		do_tok(buf, "stopMusic", 0);
 		break;
 	case 0x70:
 		byte opcode2;
@@ -1764,7 +1749,7 @@
 	case 0xBF:
 	case 0xFF:
 		buf =
-			do_tok(buf, "DrawBox",
+			do_tok(buf, "drawBox",
 						 ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2W) | ANOLASTPAREN);
 		opcode = get_byte();
 		do_tok(buf, NULL,
@@ -1775,7 +1760,7 @@
 
 	case 0x02:
 	case 0x82:
-		do_tok(buf, "StartMusic", ((opcode & 0x80) ? A1V : A1B));
+		do_tok(buf, "startMusic", ((opcode & 0x80) ? A1V : A1B));
 		break;
 
 	case 0xCC:
@@ -1783,12 +1768,15 @@
 		break;
 
 	case 0x33:
-		do_33(buf);
+	case 0x73:
+	case 0xB3:
+	case 0xF3:
+		do_room_ops(buf, opcode);
 		break;
 
 	case 0x68:
 	case 0xE8:
-		do_tok(buf, "GetScriptRunning", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
+		do_tok(buf, "getScriptRunning", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
 		break;
 
 	case 0x2E:{
@@ -1804,7 +1792,7 @@
 	case 0x69:
 	case 0xA9:
 	case 0xE9:
-		do_tok(buf, "SetOwnerOf", ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2B));
+		do_tok(buf, "setOwnerOf", ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2B));
 		break;
 
 	case 0x52:
@@ -1821,35 +1809,35 @@
 
 	case 0x1C:
 	case 0x9C:
-		do_tok(buf, "StartSound", ((opcode & 0x80) ? A1V : A1B));
+		do_tok(buf, "startSound", ((opcode & 0x80) ? A1V : A1B));
 		break;
 
 	case 0x4C:
-		do_tok(buf, "SoundKludge", A1VARUNTIL0xFF);
+		do_tok(buf, "soundKludge", A1VARUNTIL0xFF);
 		break;
 
 	case 0x3C:
 	case 0xBC:
-		do_tok(buf, "StopSound", ((opcode & 0x80) ? A1V : A1B));
+		do_tok(buf, "stopSound", ((opcode & 0x80) ? A1V : A1B));
 		break;
 
 	case 0x98:
-		do_tok(buf, "QuitPauseRestart", A1B);
+		do_tok(buf, "quitPauseRestart", A1B);
 		break;
 
 	case 0x7B:
 	case 0xFB:
-		do_tok(buf, "GetActorBox", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
+		do_tok(buf, "getActorWalkBox", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
 		break;
 
 	case 0x43:
 	case 0xc3:
-		do_tok(buf, "GetActorX", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
+		do_tok(buf, "getActorX", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
 		break;
 
 	case 0x23:
 	case 0xA3:
-		do_tok(buf, "GetActorY", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
+		do_tok(buf, "getActorY", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
 		break;
 
 	case 0x7A:
@@ -1861,24 +1849,24 @@
 	case 0x6D:
 	case 0xAD:
 	case 0xED:
-		do_tok(buf, "PutActorInRoom", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B));
+		do_tok(buf, "putActorInRoom", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B));
 		break;
 
 	case 0x54:
 	case 0xD4:
-		do_tok(buf, "SetObjectName", ((opcode & 0x80) ? A1V : A1W) | A2ASCII);
+		do_tok(buf, "setObjectName", ((opcode & 0x80) ? A1V : A1W) | A2ASCII);
 		break;
 
 	case 0x5D:
 	case 0xDD:
-		do_tok(buf, "SetClass", ((opcode & 0x80) ? A1V : A1W) | A2VARUNTIL0xFF);
+		do_tok(buf, "setClass", ((opcode & 0x80) ? A1V : A1W) | A2VARUNTIL0xFF);
 		break;
 
 	case 0x35:
 	case 0x75:
 	case 0xB5:
 	case 0xF5:
-		do_tok(buf, "FindObject",
+		do_tok(buf, "findObject",
 					 AVARSTORE | ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2W));
 		break;
 
@@ -1887,7 +1875,7 @@
 			int i;
 			char first = 1;
 
-			buf = do_tok(buf, "SetVarRange", A1V | ANOLASTPAREN);
+			buf = do_tok(buf, "setVarRange", A1V | ANOLASTPAREN);
 			i = get_byte();
 
 			buf += sprintf(buf, ",%d,[", i);
@@ -1908,7 +1896,7 @@
 
 	case 0x16:
 	case 0x96:
-		do_tok(buf, "GetRandomNr", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
+		do_tok(buf, "getRandomNr", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
 		break;
 
 	case 0x2B:
@@ -1919,24 +1907,25 @@
 	case 0x4E:
 	case 0x8E:
 	case 0xCE:
-		do_tok(buf, "PutActorAtObject", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2W));
+		do_tok(buf, "putActorAtObject", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2W));
 		break;
 
 	case 0x12:
 	case 0x92:
-		do_tok(buf, "PanCameraTo", ((opcode & 0x80) ? A1V : A1W));
+		do_tok(buf, "panCameraTo", ((opcode & 0x80) ? A1V : A1W));
 		break;
 
 	case 0x32:
-		do_tok(buf, "SetCameraAt", ((opcode & 0x80) ? A1V : A1W));
+		do_tok(buf, "setCameraAt", ((opcode & 0x80) ? A1V : A1W));
 		break;
 
 	case 0x30:
+	case 0xB0:
 		do_matrix_ops(buf, opcode);
 		break;
 
 	case 0x7C:
-		do_tok(buf, "IsSoundRunning", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
+		do_tok(buf, "isSoundRunning", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
 		break;
 
 	case 0x31:
@@ -1948,13 +1937,13 @@
 	case 0x5f:
 	case 0x9f:
 	case 0xdf:
-		do_tok(buf, "IsActorInBox",
+		do_tok(buf, "isActorInBox",
 					 ATO | ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B));
 		break;
 
 	case 0x22:
 	case 0xA2:
-		do_tok(buf, "GetAnimCounter", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
+		do_tok(buf, "getAnimCounter", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
 		break;
 
 	case 0x3d:
@@ -2005,19 +1994,23 @@
 			if ((d & 0x1F) == 3)
 				do_tok(buf, "oldRoomEffect", ((opcode & 0x80) ? A1V : A1B));
 			else
-				do_tok(buf, "oldRoomEffect", ((opcode & 0x80) ? A1V : A1B));
+				do_tok(buf, "oldRoomEffect?", ((opcode & 0x80) ? A1V : A1B));
 			break;
 		}
+
+	case 0x50:
+	case 0xD0:
+		do_tok(buf, "pickupObject", ((opcode & 0x80) ? A1V : A1W));
+		break;
+
 	case 0x2f:
 	case 0x45:
 	case 0x4F:
-	case 0x50:
 //    case 0x5C:
 	case 0x6F:
 	case 0xAF:
 	case 0xC5:
 	case 0xCF:
-	case 0xD0:
 	case 0xDC:
 	case 0xEF:
 		if (HaltOnError) {
@@ -2139,11 +2132,7 @@
 	size_of_code = len;
 
 	buf = (char *)malloc(4096);
-#if defined(SCUMM_BIG_ENDIAN)
-	switch (TO_LE_16(*((long *)mem + 1) & 0xFFFF)) {
-#else
-	switch (*((long *)mem + 1) & 0xFFFF) {
-#endif
+	switch (TO_LE_16(*((unsigned short *)mem + 2))) {
 	case MKID('LS'):
 		printf("Script# %d\n", (unsigned char)mem[8]);
 		mem += 7;





More information about the Scummvm-git-logs mailing list