[Scummvm-cvs-logs] SF.net SVN: scummvm:[43697] scummvm/trunk

nolange at users.sourceforge.net nolange at users.sourceforge.net
Mon Aug 24 15:08:21 CEST 2009


Revision: 43697
          http://scummvm.svn.sourceforge.net/scummvm/?rev=43697&view=rev
Author:   nolange
Date:     2009-08-24 13:08:21 +0000 (Mon, 24 Aug 2009)

Log Message:
-----------
reverting changes from patch 43696 that shouldnt have been committed

Modified Paths:
--------------
    scummvm/trunk/common/endian.h
    scummvm/trunk/common/stream.h
    scummvm/trunk/engines/saga/animation.cpp

Modified: scummvm/trunk/common/endian.h
===================================================================
--- scummvm/trunk/common/endian.h	2009-08-24 12:39:03 UTC (rev 43696)
+++ scummvm/trunk/common/endian.h	2009-08-24 13:08:21 UTC (rev 43697)
@@ -32,47 +32,23 @@
 // Endian conversion functions, macros etc., follow from here!
 //
 
-// Sanity check
-#if !defined(SCUMM_LITTLE_ENDIAN) && !defined(SCUMM_BIG_ENDIAN)
-#	error No endianness defined
-#endif
-
 /**
  * Swap the bytes in a 32 bit word in order to convert LE encoded data to BE
  * and vice versa.
- * compilerspecific variants come first, fallback last
  */
+FORCEINLINE uint32 SWAP_BYTES_32(uint32 a) {
+	return ((a >> 24) & 0x000000FF) |
+		   ((a >>  8) & 0x0000FF00) |
+		   ((a <<  8) & 0x00FF0000) |
+		   ((a << 24) & 0xFF000000);
+}
 
-// Test for GCC >= 4.3.0 as this version added the bswap builtin
-#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
-
-	FORCEINLINE uint32 SWAP_BYTES_32(uint32 a) {
-		return __builtin_bswap32(a);
-	}
-
-// test for MSVC 7 or newer
-#elif defined(_MSC_VER) && _MSC_VER >= 1300
-
-	FORCEINLINE uint32 SWAP_BYTES_32(uint32 a) {
-		return _byteswap_ulong(a);
-	}
-
-// generic fallback
-#else 
-
-	inline uint32 SWAP_BYTES_32(uint32 a) {
-		const uint16 low = (uint16)a, high = (uint16)(a >> 16);
-		return ((uint32)(uint16)((low >> 8) | (low << 8)) << 16)
-			   | (uint16)((high >> 8) | (high << 8));
-	}
-#endif
-
 /**
  * Swap the bytes in a 16 bit word in order to convert LE encoded data to BE
  * and vice versa.
  */
-FORCEINLINE uint16 SWAP_BYTES_16(const uint16 a) {
-	return (a >> 8) | (a << 8);
+FORCEINLINE uint16 SWAP_BYTES_16(uint16 a) {
+	return ((a >> 8) & 0x00FF) + ((a << 8) & 0xFF00);
 }
 
 
@@ -94,123 +70,25 @@
  * For the latter systems we provide the INVERSE_MKID override.
  */
 #if defined(INVERSE_MKID)
-#define MKID_BE(a) ((uint32)( \
-		(((a) >> 24) & 0x00FF) | \
-		(((a) >>  8) & 0xFF00) | \
-		(((a) & 0xFF00) <<  8) | \
-		(((a) & 0x00FF) << 24) ))
+#define MKID_BE(a) ((uint32) \
+		(((a) >> 24) & 0x000000FF) | \
+		(((a) >>  8) & 0x0000FF00) | \
+		(((a) <<  8) & 0x00FF0000) | \
+		(((a) << 24) & 0xFF000000))
 
 #else
 #  define MKID_BE(a) ((uint32)(a))
 #endif
 
-// Functions for reading/writing native Integers,
-// this transparently handles the need for alignment
 
-#if !defined(SCUMM_NEED_ALIGNMENT)
 
-	FORCEINLINE uint16 READ_UINT16(const void *ptr) {
-		return *(const uint16 *)(ptr);
-	}
-
-	FORCEINLINE uint32 READ_UINT32(const void *ptr) {
-		return *(const uint32 *)(ptr);
-	}
-
-	FORCEINLINE void WRITE_UINT16(void *ptr, uint16 value) {
-		*(uint16 *)(ptr) = value;
-	}
-
-	FORCEINLINE void WRITE_UINT32(void *ptr, uint32 value) {
-		*(uint32 *)(ptr) = value;
-	}
-
-// test for GCC >= 4.0. these implementations will automatically use CPU-specific 
-// instructions for unaligned data when they are available (eg. MIPS)
-#elif defined(__GNUC__) && (__GNUC__ >= 4)
-
-	FORCEINLINE uint16 READ_UINT16(const void *ptr) {
-		struct Unaligned16 { uint16 val; } __attribute__ ((__packed__));
-		return ((const Unaligned16 *)ptr)->val;
-	}
-
-	FORCEINLINE uint32 READ_UINT32(const void *ptr) {
-		struct Unaligned32 { uint32 val; } __attribute__ ((__packed__));
-		return ((const Unaligned32 *)ptr)->val;
-	}
-
-	FORCEINLINE void WRITE_UINT16(void *ptr, uint16 value) {
-		struct Unaligned16 { uint16 val; } __attribute__ ((__packed__));
-		((Unaligned16 *)ptr)->val = value;
-	}
-
-	FORCEINLINE void WRITE_UINT32(void *ptr, uint32 value) {
-		struct Unaligned32 { uint32 val; } __attribute__ ((__packed__));
-		((Unaligned32 *)ptr)->val = value;
-	}
-
-// use software fallback by loading each byte explicitely
-#else
-
-#	if defined(SCUMM_LITTLE_ENDIAN)
-
-		FORCEINLINE uint16 READ_UINT16(const void *ptr) {
-			const uint8 *b = (const uint8 *)ptr;
-			return (b[1] << 8) | b[0];
-		}
-		inline uint32 READ_UINT32(const void *ptr) {
-			const uint8 *b = (const uint8 *)ptr;
-			return (b[3] << 24) | (b[2] << 16) | (b[1] << 8) | (b[0]);
-		}
-		FORCEINLINE void WRITE_UINT16(void *ptr, uint16 value) {
-			uint8 *b = (uint8 *)ptr;
-			b[0] = (uint8)(value >> 0);
-			b[1] = (uint8)(value >> 8);
-		}
-		inline void WRITE_UINT32(void *ptr, uint32 value) {
-			uint8 *b = (uint8 *)ptr;
-			b[0] = (uint8)(value >>  0);
-			b[1] = (uint8)(value >>  8);
-			b[2] = (uint8)(value >> 16);
-			b[3] = (uint8)(value >> 24);
-		}
-
-#	elif defined(SCUMM_BIG_ENDIAN)
-
-		FORCEINLINE uint16 READ_UINT16(const void *ptr) {
-			const uint8 *b = (const uint8 *)ptr;
-			return (b[0] << 8) | b[1];
-		}
-		inline uint32 READ_UINT32(const void *ptr) {
-			const uint8 *b = (const uint8 *)ptr;
-			return (b[0] << 24) | (b[1] << 16) | (b[2] << 8) | (b[3]);
-		}
-		FORCEINLINE void WRITE_UINT16(void *ptr, uint16 value) {
-			uint8 *b = (uint8 *)ptr;
-			b[0] = (uint8)(value >> 8);
-			b[1] = (uint8)(value >> 0);
-		}
-		inline void WRITE_UINT32(void *ptr, uint32 value) {
-			uint8 *b = (uint8 *)ptr;
-			b[0] = (uint8)(value >> 24);
-			b[1] = (uint8)(value >> 16);
-			b[2] = (uint8)(value >>  8);
-			b[3] = (uint8)(value >>  0);
-		}
-
-#	endif
-
-#endif
-
-
-// Map Funtions for reading/writing BE/LE integers depending on native endianess
 #if defined(SCUMM_LITTLE_ENDIAN)
 
-	#define READ_LE_UINT16(a) READ_UINT16(a)
-	#define READ_LE_UINT32(a) READ_UINT32(a)
+	#define READ_UINT16(a) READ_LE_UINT16(a)
+	#define READ_UINT32(a) READ_LE_UINT32(a)
 
-	#define WRITE_LE_UINT16(a, v) WRITE_UINT16(a, v)
-	#define WRITE_LE_UINT32(a, v) WRITE_UINT32(a, v)
+	#define WRITE_UINT16(a, v) WRITE_LE_UINT16(a, v)
+	#define WRITE_UINT32(a, v) WRITE_LE_UINT32(a, v)
 
 	#define FROM_LE_32(a) ((uint32)(a))
 	#define FROM_LE_16(a) ((uint16)(a))
@@ -224,57 +102,16 @@
 	#define TO_BE_32(a) SWAP_BYTES_32(a)
 	#define TO_BE_16(a) SWAP_BYTES_16(a)
 
-#	if defined(SCUMM_NEED_ALIGNMENT)
-
-		FORCEINLINE uint16 READ_BE_UINT16(const void *ptr) {
-			const uint8 *b = (const uint8 *)ptr;
-			return (b[0] << 8) | b[1];
-		}
-		inline uint32 READ_BE_UINT32(const void *ptr) {
-			const uint8 *b = (const uint8 *)ptr;
-			return (b[0] << 24) | (b[1] << 16) | (b[2] << 8) | (b[3]);
-		}
-		FORCEINLINE void WRITE_BE_UINT16(void *ptr, uint16 value) {
-			uint8 *b = (uint8 *)ptr;
-			b[0] = (uint8)(value >> 8);
-			b[1] = (uint8)(value >> 0);
-		}
-		inline void WRITE_BE_UINT32(void *ptr, uint32 value) {
-			uint8 *b = (uint8 *)ptr;
-			b[0] = (uint8)(value >> 24);
-			b[1] = (uint8)(value >> 16);
-			b[2] = (uint8)(value >>  8);
-			b[3] = (uint8)(value >>  0);
-		}
-#	else
-
-		FORCEINLINE uint16 READ_BE_UINT16(const void *ptr) {
-			return SWAP_BYTES_16(*(const uint16 *)ptr);
-		}
-		FORCEINLINE uint32 READ_BE_UINT32(const void *ptr) {
-			return SWAP_BYTES_32(*(const uint32 *)ptr);
-		}
-		FORCEINLINE void WRITE_BE_UINT16(void *ptr, uint16 value) {
-			*(uint16 *)ptr = SWAP_BYTES_16(value);
-		}
-		FORCEINLINE void WRITE_BE_UINT32(void *ptr, uint32 value) {
-			*(uint32 *)ptr = SWAP_BYTES_32(value);
-		}
-	
-#	endif	// if defined(SCUMM_NEED_ALIGNMENT)
-
 #elif defined(SCUMM_BIG_ENDIAN)
 
-	// I thought this would be compiler-specific and not dependent
-	// on endianess after the comments above?
 	#define MKID(a) ((uint32)(a))
 	#define MKID_BE(a) ((uint32)(a))
 
-	#define READ_BE_UINT16(a) READ_UINT16(a)
-	#define READ_BE_UINT32(a) READ_UINT32(a)
+	#define READ_UINT16(a) READ_BE_UINT16(a)
+	#define READ_UINT32(a) READ_BE_UINT32(a)
 
-	#define WRITE_BE_UINT16(a, v) WRITE_UINT16(a, v)
-	#define WRITE_BE_UINT32(a, v) WRITE_UINT32(a, v)
+	#define WRITE_UINT16(a, v) WRITE_BE_UINT16(a, v)
+	#define WRITE_UINT32(a, v) WRITE_BE_UINT32(a, v)
 
 	#define FROM_LE_32(a) SWAP_BYTES_32(a)
 	#define FROM_LE_16(a) SWAP_BYTES_16(a)
@@ -288,55 +125,96 @@
 	#define TO_BE_32(a) ((uint32)(a))
 	#define TO_BE_16(a) ((uint16)(a))
 
-#	if defined(SCUMM_NEED_ALIGNMENT)
+#else
 
+	#error No endianness defined
+
+
+#endif
+
+
+#if defined(SCUMM_NEED_ALIGNMENT) || !defined(SCUMM_LITTLE_ENDIAN)
 	FORCEINLINE uint16 READ_LE_UINT16(const void *ptr) {
-		const uint8 *b = (const uint8 *)ptr;
-		return (b[1] << 8) | b[0];
+		const byte *b = (const byte *)ptr;
+		return (b[1] << 8) + b[0];
 	}
-	inline uint32 READ_LE_UINT32(const void *ptr) {
-		const uint8 *b = (const uint8 *)ptr;
-		return (b[3] << 24) | (b[2] << 16) | (b[1] << 8) | (b[0]);
+	FORCEINLINE uint32 READ_LE_UINT32(const void *ptr) {
+		const byte *b = (const byte *)ptr;
+		return (b[3] << 24) + (b[2] << 16) + (b[1] << 8) + (b[0]);
 	}
 	FORCEINLINE void WRITE_LE_UINT16(void *ptr, uint16 value) {
-		uint8 *b = (uint8 *)ptr;
-		b[0] = (uint8)(value >> 0);
-		b[1] = (uint8)(value >> 8);
+		byte *b = (byte *)ptr;
+		b[0] = (byte)(value >> 0);
+		b[1] = (byte)(value >> 8);
 	}
-	inline void WRITE_LE_UINT32(void *ptr, uint32 value) {
-		uint8 *b = (uint8 *)ptr;
-		b[0] = (uint8)(value >>  0);
-		b[1] = (uint8)(value >>  8);
-		b[2] = (uint8)(value >> 16);
-		b[3] = (uint8)(value >> 24);
+	FORCEINLINE void WRITE_LE_UINT32(void *ptr, uint32 value) {
+		byte *b = (byte *)ptr;
+		b[0] = (byte)(value >>  0);
+		b[1] = (byte)(value >>  8);
+		b[2] = (byte)(value >> 16);
+		b[3] = (byte)(value >> 24);
 	}
-#	else
-
+#else
 	FORCEINLINE uint16 READ_LE_UINT16(const void *ptr) {
-		return SWAP_BYTES_16(*(const uint16 *)ptr);
+		return *(const uint16 *)(ptr);
 	}
 	FORCEINLINE uint32 READ_LE_UINT32(const void *ptr) {
-		return SWAP_BYTES_32(*(const uint32 *)ptr);
+		return *(const uint32 *)(ptr);
 	}
 	FORCEINLINE void WRITE_LE_UINT16(void *ptr, uint16 value) {
-		*(uint16 *)ptr = SWAP_BYTES_16(value);
+		*(uint16 *)(ptr) = value;
 	}
 	FORCEINLINE void WRITE_LE_UINT32(void *ptr, uint32 value) {
-		*(uint32 *)ptr = SWAP_BYTES_32(value);
+		*(uint32 *)(ptr) = value;
 	}
-	
-#	endif	// if defined(SCUMM_NEED_ALIGNMENT)
+#endif
 
-#endif	// if defined(SCUMM_LITTLE_ENDIAN)
 
+#if defined(SCUMM_NEED_ALIGNMENT) || !defined(SCUMM_BIG_ENDIAN)
+	FORCEINLINE uint16 READ_BE_UINT16(const void *ptr) {
+		const byte *b = (const byte *)ptr;
+		return (b[0] << 8) + b[1];
+	}
+	FORCEINLINE uint32 READ_BE_UINT32(const void *ptr) {
+		const byte *b = (const byte*)ptr;
+		return (b[0] << 24) + (b[1] << 16) + (b[2] << 8) + (b[3]);
+	}
+	FORCEINLINE void WRITE_BE_UINT16(void *ptr, uint16 value) {
+		byte *b = (byte *)ptr;
+		b[0] = (byte)(value >> 8);
+		b[1] = (byte)(value >> 0);
+	}
+	FORCEINLINE void WRITE_BE_UINT32(void *ptr, uint32 value) {
+		byte *b = (byte *)ptr;
+		b[0] = (byte)(value >> 24);
+		b[1] = (byte)(value >> 16);
+		b[2] = (byte)(value >>  8);
+		b[3] = (byte)(value >>  0);
+	}
+#else
+	FORCEINLINE uint16 READ_BE_UINT16(const void *ptr) {
+		return *(const uint16 *)(ptr);
+	}
+	FORCEINLINE uint32 READ_BE_UINT32(const void *ptr) {
+		return *(const uint32 *)(ptr);
+	}
+	FORCEINLINE void WRITE_BE_UINT16(void *ptr, uint16 value) {
+		*(uint16 *)(ptr) = value;
+	}
+	FORCEINLINE void WRITE_BE_UINT32(void *ptr, uint32 value) {
+		*(uint32 *)(ptr) = value;
+	}
+#endif
+
 FORCEINLINE uint32 READ_LE_UINT24(const void *ptr) {
-	const uint8 *b = (const uint8 *)ptr;
-	return (b[2] << 16) | (b[1] << 8) | (b[0]);
+	const byte *b = (const byte *)ptr;
+	return (b[2] << 16) + (b[1] << 8) + (b[0]);
 }
 
 FORCEINLINE uint32 READ_BE_UINT24(const void *ptr) {
-	const uint8 *b = (const uint8 *)ptr;
-	return (b[0] << 16) | (b[1] << 8) | (b[2]);
+	const byte *b = (const byte*)ptr;
+	return (b[0] << 16) + (b[1] << 8) + (b[2]);
 }
 
+
 #endif

Modified: scummvm/trunk/common/stream.h
===================================================================
--- scummvm/trunk/common/stream.h	2009-08-24 12:39:03 UTC (rev 43696)
+++ scummvm/trunk/common/stream.h	2009-08-24 13:08:21 UTC (rev 43697)
@@ -27,7 +27,6 @@
 #define COMMON_STREAM_H
 
 #include "common/scummsys.h"
-#include "common/endian.h"
 
 namespace Common {
 
@@ -107,38 +106,38 @@
 	}
 
 	void writeUint16LE(uint16 value) {
-		value = TO_LE_16(value);
-		write(&value, 2);
+		writeByte((byte)(value & 0xff));
+		writeByte((byte)(value >> 8));
 	}
 
 	void writeUint32LE(uint32 value) {
-		value = TO_LE_32(value);
-		write(&value, 4);
+		writeUint16LE((uint16)(value & 0xffff));
+		writeUint16LE((uint16)(value >> 16));
 	}
 
 	void writeUint16BE(uint16 value) {
-		value = TO_BE_16(value);
-		write(&value, 2);
+		writeByte((byte)(value >> 8));
+		writeByte((byte)(value & 0xff));
 	}
 
 	void writeUint32BE(uint32 value) {
-		value = TO_BE_32(value);
-		write(&value, 4);
+		writeUint16BE((uint16)(value >> 16));
+		writeUint16BE((uint16)(value & 0xffff));
 	}
 
-	FORCEINLINE void writeSint16LE(int16 value) {
+	void writeSint16LE(int16 value) {
 		writeUint16LE((uint16)value);
 	}
 
-	FORCEINLINE void writeSint32LE(int32 value) {
+	void writeSint32LE(int32 value) {
 		writeUint32LE((uint32)value);
 	}
 
-	FORCEINLINE void writeSint16BE(int16 value) {
+	void writeSint16BE(int16 value) {
 		writeUint16BE((uint16)value);
 	}
 
-	FORCEINLINE void writeSint32BE(int32 value) {
+	void writeSint32BE(int32 value) {
 		writeUint32BE((uint32)value);
 	}
 
@@ -189,7 +188,7 @@
 	 * calling err() and eos() ).
 	 */
 	byte readByte() {
-		byte b = 0; // FIXME: remove initialisation
+		byte b = 0;
 		read(&b, 1);
 		return b;
 	}
@@ -201,7 +200,7 @@
 	 * calling err() and eos() ).
 	 */
 	int8 readSByte() {
-		int8 b = 0; // FIXME: remove initialisation
+		int8 b = 0;
 		read(&b, 1);
 		return b;
 	}
@@ -214,9 +213,9 @@
 	 * calling err() and eos() ).
 	 */
 	uint16 readUint16LE() {
-		uint16 val;
-		read(&val, 2);
-		return FROM_LE_16(val);
+		uint16 a = readByte();
+		uint16 b = readByte();
+		return a | (b << 8);
 	}
 
 	/**
@@ -227,9 +226,9 @@
 	 * calling err() and eos() ).
 	 */
 	uint32 readUint32LE() {
-		uint32 val;
-		read(&val, 4);
-		return FROM_LE_32(val);
+		uint32 a = readUint16LE();
+		uint32 b = readUint16LE();
+		return (b << 16) | a;
 	}
 
 	/**
@@ -240,9 +239,9 @@
 	 * calling err() and eos() ).
 	 */
 	uint16 readUint16BE() {
-		uint16 val;
-		read(&val, 2);
-		return FROM_BE_16(val);
+		uint16 b = readByte();
+		uint16 a = readByte();
+		return a | (b << 8);
 	}
 
 	/**
@@ -253,9 +252,9 @@
 	 * calling err() and eos() ).
 	 */
 	uint32 readUint32BE() {
-		uint32 val;
-		read(&val, 4);
-		return FROM_BE_32(val);
+		uint32 b = readUint16BE();
+		uint32 a = readUint16BE();
+		return (b << 16) | a;
 	}
 
 	/**
@@ -265,7 +264,7 @@
 	 * if a read error occurred (for which client code can check by
 	 * calling err() and eos() ).
 	 */
-	FORCEINLINE int16 readSint16LE() {
+	int16 readSint16LE() {
 		return (int16)readUint16LE();
 	}
 
@@ -276,7 +275,7 @@
 	 * if a read error occurred (for which client code can check by
 	 * calling err() and eos() ).
 	 */
-	FORCEINLINE int32 readSint32LE() {
+	int32 readSint32LE() {
 		return (int32)readUint32LE();
 	}
 
@@ -287,7 +286,7 @@
 	 * if a read error occurred (for which client code can check by
 	 * calling err() and eos() ).
 	 */
-	FORCEINLINE int16 readSint16BE() {
+	int16 readSint16BE() {
 		return (int16)readUint16BE();
 	}
 
@@ -298,7 +297,7 @@
 	 * if a read error occurred (for which client code can check by
 	 * calling err() and eos() ).
 	 */
-	FORCEINLINE int32 readSint32BE() {
+	int32 readSint32BE() {
 		return (int32)readUint32BE();
 	}
 
@@ -461,31 +460,26 @@
  * @see SubReadStream
  */
 class SeekableSubReadStreamEndian : public SeekableSubReadStream {
-private:
-	const bool _bigEndian;
-
 public:
+	bool _bigEndian;
+
 	SeekableSubReadStreamEndian(SeekableReadStream *parentStream, uint32 begin, uint32 end, bool bigEndian = false, bool disposeParentStream = false)
 		: SeekableSubReadStream(parentStream, begin, end, disposeParentStream), _bigEndian(bigEndian) {
 	}
 
-	uint16 readUint16() {
-		uint16 val;
-		read(&val, 2);
-		return (_bigEndian) ? TO_BE_16(val) : TO_LE_16(val);
+	inline uint16 readUint16() {
+		return (_bigEndian) ? readUint16BE() : readUint16LE();
 	}
 
-	uint32 readUint32() {
-		uint32 val;
-		read(&val, 4);
-		return (_bigEndian) ? TO_BE_32(val) : TO_LE_32(val);
+	inline uint32 readUint32() {
+		return (_bigEndian) ? readUint32BE() : readUint32LE();
 	}
 
-	FORCEINLINE int16 readSint16() {
+	inline int16 readSint16() {
 		return (int16)readUint16();
 	}
 
-	FORCEINLINE int32 readSint32() {
+	inline int32 readSint32() {
 		return (int32)readUint32();
 	}
 };
@@ -588,28 +582,23 @@
  */
 class MemoryReadStreamEndian : public Common::MemoryReadStream {
 private:
-	const bool _bigEndian;
-
 public:
+	bool _bigEndian;
 	MemoryReadStreamEndian(const byte *buf, uint32 len, bool bigEndian = false) : MemoryReadStream(buf, len), _bigEndian(bigEndian) {}
 
-	uint16 readUint16() {
-		uint16 val;
-		read(&val, 2);
-		return (_bigEndian) ? TO_BE_16(val) : TO_LE_16(val);
+	inline uint16 readUint16() {
+		return (_bigEndian) ? readUint16BE() : readUint16LE();
 	}
 
-	uint32 readUint32() {
-		uint32 val;
-		read(&val, 4);
-		return (_bigEndian) ? TO_BE_32(val) : TO_LE_32(val);
+	inline uint32 readUint32() {
+		return (_bigEndian) ? readUint32BE() : readUint32LE();
 	}
 
-	FORCEINLINE int16 readSint16() {
+	inline int16 readSint16() {
 		return (int16)readUint16();
 	}
 
-	FORCEINLINE int32 readSint32() {
+	inline int32 readSint32() {
 		return (int32)readUint32();
 	}
 };

Modified: scummvm/trunk/engines/saga/animation.cpp
===================================================================
--- scummvm/trunk/engines/saga/animation.cpp	2009-08-24 12:39:03 UTC (rev 43696)
+++ scummvm/trunk/engines/saga/animation.cpp	2009-08-24 13:08:21 UTC (rev 43697)
@@ -826,10 +826,12 @@
 	int i;
 	bool longData = isLongData();
 
-	MemoryReadStreamEndian readS(anim->resourceData, anim->resourceLength, !_vm->isBigEndian()); // RLE has inversion BE<>LE
+	MemoryReadStreamEndian readS(anim->resourceData, anim->resourceLength, _vm->isBigEndian());
 
 	readS.seek(12);
 
+	readS._bigEndian = !_vm->isBigEndian(); // RLE has inversion BE<>LE
+
 	while (readS.pos() != readS.size()) {
 		if (reallyFill) {
 			anim->frameOffsets[currentFrame] = readS.pos();


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