[Scummvm-cvs-logs] CVS: tools descumm6.cpp,1.106,1.107

Max Horn fingolfin at users.sourceforge.net
Sat May 24 08:36:04 CEST 2003


Update of /cvsroot/scummvm/tools
In directory sc8-pr-cvs1:/tmp/cvs-serv32398

Modified Files:
	descumm6.cpp 
Log Message:
fixed skipVerbHeader_V67

Index: descumm6.cpp
===================================================================
RCS file: /cvsroot/scummvm/tools/descumm6.cpp,v
retrieving revision 1.106
retrieving revision 1.107
diff -u -d -r1.106 -r1.107
--- descumm6.cpp	20 May 2003 17:29:01 -0000	1.106
+++ descumm6.cpp	24 May 2003 15:35:25 -0000	1.107
@@ -614,25 +614,24 @@
 
 	return (byte *)ptr;
 }
-byte *skipVerbHeader_V67(byte *p)
+
+int skipVerbHeader_V67(byte *p)
 {
 	byte code;
-	byte *p2 = p;
-	int hdrlen;
-
-	while (*p2++ != 0) {
-		p2 += 2;
-	}
+	int offset = 8;
+	int minOffset = 255;
+	p += offset;
 
 	printf("Events:\n");
 
-	hdrlen = p2 - p + 8;
-
 	while ((code = *p++) != 0) {
-		printf("  %2X - %.4X\n", code, *(uint16 *)p - hdrlen);
+		offset = TO_LE_16(*(uint16 *)p);
 		p += 2;
+		printf("  %2X - %.4X\n", code, offset);
+		if (minOffset > offset)
+			minOffset = offset;
 	}
-	return p;
+	return minOffset;
 }
 
 StackEnt *se_new(int type)
@@ -2631,6 +2630,8 @@
 
 	output = buf = (char *)malloc(8192);
 
+	offs_of_line = 0;
+
 	switch (TO_BE_32(*((uint32 *)mem))) {
 	case 'LSCR':
 		if (scriptVersion == 8) {
@@ -2657,18 +2658,16 @@
 		if (scriptVersion == 8)
 			mem = skipVerbHeader_V8(mem + 8);
 		else
-			mem = skipVerbHeader_V67(mem + 8);
+			offs_of_line = skipVerbHeader_V67(mem);
 		break;											/* Verb */
 	default:
 		printf("Unknown script type!\n");
 		exit(0);
 	}
 
-	cur_pos = mem;
 	org_pos = mem;
+	cur_pos = org_pos + offs_of_line;
 	len -= mem - memorg;
-
-	offs_of_line = 0;
 
 	while (cur_pos < mem + len) {
 		byte opcode = *cur_pos;





More information about the Scummvm-git-logs mailing list