[Scummvm-cvs-logs] SF.net SVN: scummvm:[53665] scummvm/branches/branch-1-2-0/engines/scumm/he/ script_v90he.cpp

Kirben at users.sourceforge.net Kirben at users.sourceforge.net
Thu Oct 21 07:33:13 CEST 2010


Revision: 53665
          http://scummvm.svn.sourceforge.net/scummvm/?rev=53665&view=rev
Author:   Kirben
Date:     2010-10-21 05:33:13 +0000 (Thu, 21 Oct 2010)

Log Message:
-----------
SCUMM: Backport bug fixes for Backyard Football series.

Modified Paths:
--------------
    scummvm/branches/branch-1-2-0/engines/scumm/he/script_v90he.cpp

Modified: scummvm/branches/branch-1-2-0/engines/scumm/he/script_v90he.cpp
===================================================================
--- scummvm/branches/branch-1-2-0/engines/scumm/he/script_v90he.cpp	2010-10-21 05:26:45 UTC (rev 53664)
+++ scummvm/branches/branch-1-2-0/engines/scumm/he/script_v90he.cpp	2010-10-21 05:33:13 UTC (rev 53665)
@@ -1948,39 +1948,41 @@
 	}
 }
 
+static int sortArrayOffset;
+
 static int compareByteArray(const void *a, const void *b) {
-	int va = *((const uint8 *)a);
-	int vb = *((const uint8 *)a);
+	int va = *((const uint8 *)a + sortArrayOffset);
+	int vb = *((const uint8 *)b + sortArrayOffset);
 	return va - vb;
 }
 
 static int compareByteArrayReverse(const void *a, const void *b) {
-	int va = *((const uint8 *)a);
-	int vb = *((const uint8 *)a);
+	int va = *((const uint8 *)a + sortArrayOffset);
+	int vb = *((const uint8 *)b + sortArrayOffset);
 	return vb - va;
 }
 
 static int compareIntArray(const void *a, const void *b) {
-	int va = (int16)READ_LE_UINT16((const uint8 *)a);
-	int vb = (int16)READ_LE_UINT16((const uint8 *)b);
+	int va = (int16)READ_LE_UINT16((const uint8 *)a + sortArrayOffset * 2);
+	int vb = (int16)READ_LE_UINT16((const uint8 *)b + sortArrayOffset * 2);
 	return va - vb;
 }
 
 static int compareIntArrayReverse(const void *a, const void *b) {
-	int va = (int16)READ_LE_UINT16((const uint8 *)a);
-	int vb = (int16)READ_LE_UINT16((const uint8 *)b);
+	int va = (int16)READ_LE_UINT16((const uint8 *)a + sortArrayOffset * 2);
+	int vb = (int16)READ_LE_UINT16((const uint8 *)b + sortArrayOffset * 2);
 	return vb - va;
 }
 
 static int compareDwordArray(const void *a, const void *b) {
-	int va = (int32)READ_LE_UINT32((const uint8 *)a);
-	int vb = (int32)READ_LE_UINT32((const uint8 *)b);
+	int va = (int32)READ_LE_UINT32((const uint8 *)a + sortArrayOffset * 4);
+	int vb = (int32)READ_LE_UINT32((const uint8 *)b + sortArrayOffset * 4);
 	return va - vb;
 }
 
 static int compareDwordArrayReverse(const void *a, const void *b) {
-	int va = (int32)READ_LE_UINT32((const uint8 *)a);
-	int vb = (int32)READ_LE_UINT32((const uint8 *)b);
+	int va = (int32)READ_LE_UINT32((const uint8 *)a + sortArrayOffset * 4);
+	int vb = (int32)READ_LE_UINT32((const uint8 *)b + sortArrayOffset * 4);
 	return vb - va;
 }
 
@@ -1994,8 +1996,8 @@
 
 	const int num = dim2end - dim2start + 1;
 	const int pitch = FROM_LE_32(ah->dim1end) - FROM_LE_32(ah->dim1start) + 1;
-	const int offset = pitch * (dim2start - FROM_LE_32(ah->dim2start))
-						+ dim1start - FROM_LE_32(ah->dim1start);
+	const int offset = pitch * (dim2start - FROM_LE_32(ah->dim2start));
+	sortArrayOffset = dim1start - FROM_LE_32(ah->dim1start);
 
 	switch (FROM_LE_32(ah->type)) {
 	case kByteArray:


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