[Scummvm-cvs-logs] SF.net SVN: scummvm:[35833] tools/trunk/descumm6.cpp

Kirben at users.sourceforge.net Kirben at users.sourceforge.net
Mon Jan 12 05:00:52 CET 2009


Revision: 35833
          http://scummvm.svn.sourceforge.net/scummvm/?rev=35833&view=rev
Author:   Kirben
Date:     2009-01-12 04:00:52 +0000 (Mon, 12 Jan 2009)

Log Message:
-----------
Improve support for HE71 games.

Modified Paths:
--------------
    tools/trunk/descumm6.cpp

Modified: tools/trunk/descumm6.cpp
===================================================================
--- tools/trunk/descumm6.cpp	2009-01-12 03:58:11 UTC (rev 35832)
+++ tools/trunk/descumm6.cpp	2009-01-12 04:00:52 UTC (rev 35833)
@@ -1320,6 +1320,28 @@
 			/* found a command, continue at the beginning */
 			continue;
 		}
+		if (cmd == 'u' && !extstr) {
+			/* Sub-op: next byte specifies which one */
+			extstr = fmt;
+			while (*fmt++)
+				;
+			e += sprintf(e, "%s.", extstr);
+
+			/* extended thing */
+			extcmd = pop()->getIntVal();
+
+			/* locate our extended item */
+			while ((cmd = *fmt++) != extcmd) {
+				/* scan until we find , or \0 */
+				while ((cmd = *fmt++) != ',') {
+					if (cmd == 0) {
+						invalidop(extstr, extcmd);
+					}
+				}
+			}
+			/* found a command, continue at the beginning */
+			continue;
+		}
 		if (cmd == 'y' && !extstr) {
 			/* Sub-op: parameters are in a list, first element of the list specified the command */
 			ListStackEnt *se;
@@ -4810,10 +4832,26 @@
 		jump(output);
 		break;
 	case 0x74:
-		if (g_options.heVersion)
+		if (g_options.heVersion >= 70) {
+			ext(output, "x" "startSound\0"
+					"\x9|setSoundFlag4,"
+					"\x17ppp|setSoundVar,"
+					"\x19pp|startWithFlag8,"
+					"\x38|setQuickStartFlag,"
+					"\xA4|setForceQueueFlag,"
+					"\xDE|dummy,"
+					"\xE0p|setFrequency,"
+					"\xE6p|setChannel,"
+					"\xE7p|setOffset,"
+					"\xE8p|setId,"
+					"\xF5|setLoop,"
+					"\xFF|start");
+			break;
+		} else if (g_options.heVersion) {
 			ext(output, "pp|startSound");
-		else
+		} else {
 			ext(output, "p|startSound");
+		}
 		break;
 	case 0x75:
 		ext(output, "p|stopSound");
@@ -4964,7 +5002,8 @@
 					"\xcap|lockImage,"
 					"\xcbp|queueloadImage,"
 					"\xe9p|lockFlObject,"
-					"\xebp|unlockFlObject");
+					"\xebp|unlockFlObject,"
+					"\xef|dummy");
 		else
 			ext(output, "x" "resourceRoutines\0"
 					"\x64p|loadScript,"
@@ -5028,6 +5067,7 @@
 		if (g_options.heVersion)
 			ext(output, "x" "actorOps\0"
 					"\xC5p|setCurActor,"
+					"\x1Epppp|setClipRect,"
 					"\x4Cp|setCostume,"
 					"\x4Dpp|setWalkSpeed,"
 					"\x4El|setSound,"
@@ -5262,17 +5302,34 @@
 		break;
 	case 0xB8:
 		// This is *almost* identical to the other print opcodes, only the 'begin' subop differs
-		ext(output, "x" "printActor\0"
-				"\x41pp|XY,"
-				"\x42p|color,"
-				"\x43p|right,"
-				"\x45|center,"
-				"\x47|left,"
-				"\x48|overhead,"
-				"\x4A|mumble,"
-				"\x4Bs|msg,"
-				"\xFEp|begin,"
-				"\xFF|end");
+		if (g_options.heVersion) {
+			ext(output, "x" "printActor\0"
+					"\x41pp|XY,"
+					"\x42p|color,"
+					"\x43p|right,"
+					"\x45|center,"
+					"\x47|left,"
+					"\x48|overhead,"
+					"\x4A|mumble,"
+					"\x4Bs|msg,"
+					"\xF9l|colors,"
+					"\xC2lps|debug,"
+					"\xE1p|getText,"
+					"\xFEp|begin,"
+					"\xFF|end");
+		} else {
+			ext(output, "x" "printActor\0"
+					"\x41pp|XY,"
+					"\x42p|color,"
+					"\x43p|right,"
+					"\x45|center,"
+					"\x47|left,"
+					"\x48|overhead,"
+					"\x4A|mumble,"
+					"\x4Bs|msg,"
+					"\xFEp|begin,"
+					"\xFF|end");
+		} 
 		break;
 	case 0xB9:
 		if (g_options.heVersion)
@@ -5564,17 +5621,41 @@
 		else
 			invalidop(NULL, code);
 		break;
-	case 0xF3:
+	case 0xF1:
 		if (g_options.heVersion)
-			ext(output, "rsp|readINI");
+			ext(output, "rpp|compareString");
 		else
 			invalidop(NULL, code);
 		break;
+	case 0xF2:
+		if (g_options.heVersion) {
+			ext(output, "rx" "isResourceLoaded\0"
+					"\x12p|image,"
+					"\xE2p|room,"
+					"\xE3p|costume,"
+					"\xE4p|sound,"
+					"\xE5p|script");
+		} else {
+			invalidop(NULL, code);
+		}
+		break;
+	case 0xF3:
+		if (g_options.heVersion) {
+			ext(output, "ru" "readINI\0"
+					"\x01s|number,"
+					"\x02s|string");
+		} else {
+			invalidop(NULL, code);
+		}
+		break;
 	case 0xF4:
-		if (g_options.heVersion)
-			ext(output, "rsp|writeINI");
-		else
+		if (g_options.heVersion) {
+			ext(output, "u" "writeINI\0"
+					"\x01ps|number,"
+					"\x02pss|string");
+		} else {
 			invalidop(NULL, code);
+		}
 		break;
 	case 0xF5:
 		if (g_options.heVersion)
@@ -5588,6 +5669,12 @@
 		else
 			invalidop(NULL, code);
 		break;
+	case 0xF7:
+		if (g_options.heVersion)
+			ext(output, "rpp|findBox");
+		else
+			invalidop(NULL, code);
+		break;
 	case 0xF9:
 		if (g_options.heVersion)
 			ext(output, "s|createDirectory");


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