[Scummvm-cvs-logs] SF.net SVN: scummvm: [21121] tools/trunk

kirben at users.sourceforge.net kirben at users.sourceforge.net
Tue Mar 7 01:00:02 CET 2006


Revision: 21121
Author:   kirben
Date:     2006-03-07 00:58:48 -0800 (Tue, 07 Mar 2006)
ViewCVS:  http://svn.sourceforge.net/scummvm/?rev=21121&view=rev

Log Message:
-----------
Improve support for HE72+ scripts

Modified Paths:
--------------
    tools/trunk/descumm-common.cpp
    tools/trunk/descumm.h
    tools/trunk/descumm6.cpp
Modified: tools/trunk/descumm-common.cpp
===================================================================
--- tools/trunk/descumm-common.cpp	2006-03-07 05:53:28 UTC (rev 21120)
+++ tools/trunk/descumm-common.cpp	2006-03-07 08:58:48 UTC (rev 21121)
@@ -86,7 +86,16 @@
 	return i;
 }
 
+int get_dword()
+{
+	int i;
 
+	i = (int32)READ_LE_UINT32(cur_pos);
+	cur_pos += 4;
+	return i;
+}
+
+
 ///////////////////////////////////////////////////////////////////////////
 
 #define INDENT_SIZE 2

Modified: tools/trunk/descumm.h
===================================================================
--- tools/trunk/descumm.h	2006-03-07 05:53:28 UTC (rev 21120)
+++ tools/trunk/descumm.h	2006-03-07 08:58:48 UTC (rev 21121)
@@ -106,6 +106,7 @@
 extern int get_curoffs();
 extern int get_byte();
 extern int get_word();
+extern int get_dword();
 
 extern bool maybeAddIf(uint cur, uint to);
 extern bool maybeAddElse(uint cur, uint to);

Modified: tools/trunk/descumm6.cpp
===================================================================
--- tools/trunk/descumm6.cpp	2006-03-07 05:53:28 UTC (rev 21120)
+++ tools/trunk/descumm6.cpp	2006-03-07 08:58:48 UTC (rev 21121)
@@ -1408,7 +1408,7 @@
 		push(se_int(get_word()));
 		break;
 	case 0x2:
-		push(se_var(get_byte()));
+		push(se_var(get_dword()));
 		break;
 	case 0x3:
 		push(se_var(get_word()));
@@ -1451,6 +1451,9 @@
 	case 0xA7:
 		kill(output, pop());
 		break;
+	case 0x1B:
+		ext(output, "rlp|isAnyOf2");
+		break;
 	case 0x43:
 		writeVar(output, get_word(), pop());
 		break;
@@ -1466,6 +1469,11 @@
 	case 0x50:
 		ext(output, "|resetCutScene");
 		break;
+	case 0x51:
+		ext(output, "rx" "getHeap\0"
+				"\xb|freeSpace,"
+				"\xc|largestBlockSize");
+		break;
 	case 0x53:
 		addArray(output, get_word(), pop(), 1);
 		break;
@@ -1478,6 +1486,9 @@
 	case 0x57:
 		addVar(output, get_word(), -1);
 		break;
+	case 0x5A:
+		ext(output, "rp|getSoundPosition");
+		break;
 	case 0x5B:
 		addArray(output, get_word(), pop(), -1);
 		break;
@@ -1566,13 +1577,14 @@
 		jump(output);
 		break;
 	case 0x74:
-		ext(output, "x" "startSound\0"
-				"\xE0|soundFrequency,"
-				"\xE6|soundTimer,"
-				"\xE7|soundOffset,"
-				"\xE8|soundID,"
-				"\xF5|soundLoopToggle,"
-				"\xFF|start");
+		ext(output, "x" "soundOps\0"
+				"\x9|setSoundFlag4,"
+				"\xE0p|setFrequency,"
+				"\xE6p|setChannel,"
+				"\xE7p|setOffset,"
+				"\xE8p|setId,"
+				"\xF5|setLoop,"
+				"\xFF|startSound");
 		break;
 	case 0x75:
 		ext(output, "p|stopSound");
@@ -1697,6 +1709,7 @@
 				"\x71p|unlockSound," 
 				"\x72p|unlockCostume,"
 				"\x73p|unlockRoom," 
+				"\x74|clearHeap," 
 				"\x75p|loadCharset," 
 				"\x76p|nukeCharset," 
 				"\x77z|loadFlObject,"
@@ -1710,7 +1723,8 @@
 				"\xcap|lockImage,"
 				"\xcbp|queueloadImage,"
 				"\xe9p|lockFlObject,"
-				"\xebp|unlockFlObject");
+				"\xebp|unlockFlObject,"
+				"\xef|dummy");
 		break;
 	case 0x9C:
 		ext(output, "x" "roomOps\0"
@@ -1728,7 +1742,9 @@
 				"\xBBpp|colorCycleDelay,"
 				"\xD5p|setPalette,"
 				"\xDCpp|copyPalColor,"
-				"\xDDsp|saveLoadThing2");
+				"\xDDsp|saveLoadRoom,"
+				"\xEApp|swapObjects,"
+				"\xECpp|setRoomPalette");
 		break;
 	case 0x9D:
 		ext(output, "x" "actorOps\0"
@@ -1752,7 +1768,6 @@
 				"\x5Cp|setScale,"
 				"\x5D|setNeverZClip,"
 				"\x5Ep|setAlwayZClip?,"
-				"\xE1ps|setTalkieSlot,"
 				"\x5F|setIgnoreBoxes,"
 				"\x60|setFollowBoxes,"
 				"\x61p|setAnimSpeed,"
@@ -1763,15 +1778,8 @@
 				"\xD7|setIgnoreTurnsOn,"
 				"\xD8|setIgnoreTurnsOff,"
 				"\xD9|initLittle,"
-				"\xDA|drawVirScr,"
-				"\xE3p|setLayer,"
-				"\xE4p|setWalkScript,"
-				"\xE5|setStanding,"
-				"\xE6p|setDirection,"
-				"\xE7p|turnToDirection,"
-				"\xE9|freeze,"
-				"\xEA|unfreeze,"
-				"\xEBp|setTalkScript");
+				"\xDA|drawToBackBuf,"
+				"\xE1hp|setTalkieSlot");
 		break;
 	case 0x9E:
 		ext(output, "x" "verbOps\0"
@@ -1815,15 +1823,21 @@
 			se_a = se_get_string_he();
 			writeArray(output, get_word(), NULL, se_a, se_a);
 			break;
+		case 194:
+			se_get_list();
+			pop();
+			se_a = se_get_string_he();
+			writeArray(output, get_word(), NULL, se_a, se_a);
+			break;
 		case 208:
 			se_a = pop();
 			se_b = se_get_list();
 			writeArray(output, get_word(), NULL, se_a, se_b);
 			break;
 		case 212:
+			se_b = se_get_list();
 			se_a = pop();
-			se_b = se_get_list();
-			writeArray(output, get_word(), pop(), se_a, se_b);
+			writeArray(output, get_word(), NULL, se_a, se_b);
 			break;
 		}
 		break;
@@ -2022,7 +2036,7 @@
 		ext(output, "p|closeFile");
 		break;
 	case 0xDA:
-		ext(output, "rsp|openFile");
+		ext(output, "rhp|openFile");
 		break;
 	case 0xDB:
 		ext(output, "rpp|readFile");
@@ -2067,9 +2081,20 @@
 	case 0xEB:
 		ext(output, "rp|readFilePos");
 		break;
+	case 0xED:
+		ext(output, "rppp|getStringWidth");
+		break;
 	case 0xEE:
 		ext(output, "rp|stringLen");
 		break;
+	case 0xF2:
+		ext(output, "rx" "isResourceLoaded\0"
+				"\x12p|image,"
+				"\xE2p|room,"
+				"\xE3p|costume,"
+				"\xE4p|sound,"
+				"\xE5p|script");
+		break;
 	case 0xF3:
 		ext(output, "rx" "readINI\0"
 				"\x06h|number,"
@@ -2080,6 +2105,15 @@
 				"\x06ph|number,"
 				"\x07hh|string");
 		break;
+	case 0xF8:
+		// FIXME: HE72 games only check sound resource
+		ext(output, "rx" "getResourceSize\0"
+				"\xDp|sound,"
+				"\xEp|roomImage,"
+				"\xFp|image,"
+				"\x10p|costume,"
+				"\x11p|script");
+		break;
 	case 0xF9:
 		ext(output, "h|setFilePath");
 		break;
@@ -3629,7 +3663,6 @@
 			invalidop(NULL, code);
 		break;
 	case 0xE3:
-		//TODO add proper decoding
 		ext(output, "rlw|pickVarRandom");
 		break;
 	case 0xE4:


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