[Scummvm-cvs-logs] CVS: scummvm/scumm script_v72he.cpp,2.247,2.248

kirben kirben at users.sourceforge.net
Sat Apr 9 08:08:26 CEST 2005


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10735/scumm

Modified Files:
	script_v72he.cpp 
Log Message:

Correct stack list order.
chase/lost/smaller use correct level numbers now.


Index: script_v72he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v72he.cpp,v
retrieving revision 2.247
retrieving revision 2.248
diff -u -d -r2.247 -r2.248
--- script_v72he.cpp	9 Apr 2005 13:04:12 -0000	2.247
+++ script_v72he.cpp	9 Apr 2005 15:07:44 -0000	2.248
@@ -539,13 +539,17 @@
 void ScummEngine_v72he::decodeScriptString(byte *dst, bool scriptString) {
 	const byte *src;
 	int args[31];
-	int num = 0, len, val;
+	int num, len, val;
 	byte chr, string[256];
+	memset(args, 0, sizeof(args));
 	memset(string, 0, sizeof(string));
 
-	val = getStackList(args, ARRAYSIZE(args));
-	args[val] = pop();
+	// Get stack list, plus one
+	num = pop();
+	for (int i = num; i >= 0; i--)
+		args[i] = pop();
 
+	// Get string
 	if (scriptString) {
 		addMessageToStack(_scriptPointer, string, sizeof(string));
 		len = resStrLen(_scriptPointer);
@@ -555,34 +559,38 @@
 		len = resStrLen(string) + 1;
 	}
 
+	// Decode string
+	num = 0;
+	val = 0;
 	while (len--) {
 		chr = string[num++];
 		if (chr == '%') {
 			chr = string[num++];
 			switch(chr) {
 			case 'b':
-				// FIXME TODO
-				//dst += sprintf((char *)dst, "%b", args[val--]);
+				dst += sprintf((char *)dst, "%b", args[val++]);
 				break;
 			case 'c':
-				*dst++ = args[val--];
+				*dst++ = args[val++];
 				break;
 			case 'd':
-				dst += sprintf((char *)dst, "%d", args[val--]);
+				dst += sprintf((char *)dst, "%d", args[val++]);
 				break;
 			case 's':
-				src = getStringAddress(args[val--]);
+				src = getStringAddress(args[val++]);
 				if (src) {
 					while (*src != 0)
 						*dst++ = *src++;
 				}
 				break;
 			case 'x':
-				dst += sprintf((char *)dst, "%x", args[val--]);
+				dst += sprintf((char *)dst, "%x", args[val++]);
 				break;
 			default:
 				error("decodeScriptString: Unknown type %d", chr);
 			}
+
+
 			continue;	
 		}
 		*dst++ = chr;





More information about the Scummvm-git-logs mailing list