[Scummvm-cvs-logs] CVS: tools descumm.cpp,1.39,1.40

Max Horn fingolfin at users.sourceforge.net
Fri May 16 14:10:09 CEST 2003


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

Modified Files:
	descumm.cpp 
Log Message:
fixed V2 VerbScript dumping (right now has to be enabled manually in the code)

Index: descumm.cpp
===================================================================
RCS file: /cvsroot/scummvm/tools/descumm.cpp,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -d -r1.39 -r1.40
--- descumm.cpp	16 May 2003 10:25:18 -0000	1.39
+++ descumm.cpp	16 May 2003 21:09:49 -0000	1.40
@@ -94,8 +94,6 @@
 void get_tok_V2(char *buf);	// For V2 (and V1?)
 void get_tok_V345(char *buf);	// For V3, V4, V5
 
-int get_curoffs();
-
 bool IndyFlag = false;
 bool GF_UNBLOCKED = false;
 
@@ -2882,19 +2880,36 @@
 	exit(0);
 }
 
-int skipVerbHeader_V23(byte *p)
+int skipVerbHeader_V2(byte *p)
 {
 	byte code;
-	int offset = 19;
+	int offset = 15, minOffset;
+	minOffset = 255;
+	p += offset;
 
-// two bytes obj id
+	printf("Events:\n");
+
+	while ((code = *p++) != 0) {
+		offset = *p++;
+		printf("  %2X - %.4X\n", code, offset);
+		if (minOffset > offset)
+			minOffset = offset;
+	}
+	return minOffset;
+}
 
+int skipVerbHeader_V3(byte *p)
+{
+	byte code;
+	int offset = GF_UNBLOCKED ? 17 : 19;
+	p += offset;
+	
 	printf("Events:\n");
 
 	while ((code = *p++) != 0) {
-		offset = TO_LE_16(*(unsigned short *)p);
+		offset = TO_LE_16(*(uint16 *)p);
+		p += 2;
 		printf("  %2X - %.4X\n", code, offset);
-		p += sizeof(unsigned short);
 	}
 	return offset;
 }
@@ -3011,16 +3026,18 @@
 
 	buf = (char *)malloc(4096);
 
+	offs_of_line = 0;
+
 	if (GF_UNBLOCKED) {
 		if (size_of_code < 4) {
 			printf("File too small to be a script\n");
 			exit(0);
 		}
-#if 1 || VERB_SCRIPT
+#if VERB_SCRIPT
 		if (scriptVersion == 2)
-			mem += skipVerbHeader_V23(mem + 15);
+			offs_of_line = skipVerbHeader_V2(mem);
 		else
-			mem += skipVerbHeader_V23(mem + 17);
+			offs_of_line = skipVerbHeader_V3(mem );
 #else
 		mem += 4;
 #endif
@@ -3070,7 +3087,7 @@
 				mem += 6;
 				break;			/* Exit code */
 			case MKID('OC'):
-				mem += skipVerbHeader_V23(mem + 19);
+				mem += skipVerbHeader_V3(mem);
 				break;			/* Verb */
 			default:
 				printf("Unknown script type!\n");
@@ -3078,11 +3095,9 @@
 			}
 	}
 
-	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