[Scummvm-cvs-logs] SF.net SVN: scummvm:[41181] scummvm/trunk/engines/sci/resource.cpp

waltervn at users.sourceforge.net waltervn at users.sourceforge.net
Fri Jun 5 01:55:08 CEST 2009


Revision: 41181
          http://scummvm.svn.sourceforge.net/scummvm/?rev=41181&view=rev
Author:   waltervn
Date:     2009-06-04 23:55:08 +0000 (Thu, 04 Jun 2009)

Log Message:
-----------
SCI: Fixed some endian bugs related to speech handling. READ_UINT* are not LE,
but use native endianness. Thanks to clone2727 for pointing this out.

Modified Paths:
--------------
    scummvm/trunk/engines/sci/resource.cpp

Modified: scummvm/trunk/engines/sci/resource.cpp
===================================================================
--- scummvm/trunk/engines/sci/resource.cpp	2009-06-04 22:16:31 UTC (rev 41180)
+++ scummvm/trunk/engines/sci/resource.cpp	2009-06-04 23:55:08 UTC (rev 41181)
@@ -1231,7 +1231,7 @@
 		return false;
 
 	byte *ptr = _audioMapSCI1;
-	while ((n = READ_UINT16(ptr)) != 0xFFFF) {
+	while ((n = READ_LE_UINT16(ptr)) != 0xFFFF) {
 		if (n == audioNumber) {
 			off = READ_LE_UINT32(ptr + 2);
 			size = READ_LE_UINT32(ptr + 6);
@@ -1264,7 +1264,7 @@
 
 	byte *ptr = _audioMapSCI11->data;
 
-	offset = READ_UINT32(ptr);
+	offset = READ_LE_UINT32(ptr);
 	ptr += 4;
 
 	while (ptr < _audioMapSCI11->data + _audioMapSCI11->size) {
@@ -1274,7 +1274,7 @@
 		if (n == 0xffffffff)
 			break;
 
-		offset += (READ_UINT16(ptr) | (ptr[2] << 16));
+		offset += READ_LE_UINT24(ptr);
 		ptr += 3;
 
 		int syncSkip = 0;
@@ -1284,9 +1284,9 @@
 
 			if (getSync) {
 				if (size)
-					*size = READ_UINT16(ptr);
+					*size = READ_LE_UINT16(ptr);
 			} else {
-				syncSkip = READ_UINT16(ptr);
+				syncSkip = READ_LE_UINT16(ptr);
 			}
 
 			ptr += 2;
@@ -1295,7 +1295,7 @@
 				n ^= 0x40;
 
 				if (!getSync)
-					syncSkip += READ_UINT16(ptr);
+					syncSkip += READ_LE_UINT16(ptr);
 
 				ptr += 2;
 			}
@@ -1339,10 +1339,10 @@
 		if (n == 0xffffffff)
 			break;
 
-		offset = READ_UINT32(ptr);
+		offset = READ_LE_UINT32(ptr);
 		ptr += 4;
 
-		int syncSize = READ_UINT16(ptr);
+		int syncSize = READ_LE_UINT16(ptr);
 		ptr += 2;
 
 		if (n == audioNumber) {
@@ -1383,13 +1383,13 @@
 
 	if (volume == 65535) {
 		while (ptr < _audioMapSCI11->data + _audioMapSCI11->size) {
-			n = READ_UINT16(ptr);
+			n = READ_LE_UINT16(ptr);
 			ptr += 2;
 
 			if (n == 0xffff)
 				break;
 
-			offset = READ_UINT32(ptr);
+			offset = READ_LE_UINT32(ptr);
 			ptr += 4;
 
 			if (n == audioNumber)


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