[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