[Scummvm-cvs-logs] SF.net SVN: scummvm: [29985] scummvm/trunk/engines/cruise

yazoo at users.sourceforge.net yazoo at users.sourceforge.net
Tue Dec 25 17:37:13 CET 2007


Revision: 29985
          http://scummvm.svn.sourceforge.net/scummvm/?rev=29985&view=rev
Author:   yazoo
Date:     2007-12-25 08:37:12 -0800 (Tue, 25 Dec 2007)

Log Message:
-----------
Fix cell sorting
Fix palette loading

Modified Paths:
--------------
    scummvm/trunk/engines/cruise/background.cpp
    scummvm/trunk/engines/cruise/cell.cpp
    scummvm/trunk/engines/cruise/dataLoader.cpp
    scummvm/trunk/engines/cruise/overlay.cpp
    scummvm/trunk/engines/cruise/volume.cpp

Modified: scummvm/trunk/engines/cruise/background.cpp
===================================================================
--- scummvm/trunk/engines/cruise/background.cpp	2007-12-25 16:17:22 UTC (rev 29984)
+++ scummvm/trunk/engines/cruise/background.cpp	2007-12-25 16:37:12 UTC (rev 29985)
@@ -128,8 +128,8 @@
 	}
 
 	if (!strcmp((char*)ptr, "PAL")) {
-		printf("Pal loading unsupported !\n");
-		ASSERT(0);
+		memcpy(palScreen[idx], ptr+4, 256*3);
+		gfxModuleData_setPal256(palScreen[idx]);
 	} else {
 		int mode = ptr2[1];
 		ptr2 += 2;

Modified: scummvm/trunk/engines/cruise/cell.cpp
===================================================================
--- scummvm/trunk/engines/cruise/cell.cpp	2007-12-25 16:17:22 UTC (rev 29984)
+++ scummvm/trunk/engines/cruise/cell.cpp	2007-12-25 16:37:12 UTC (rev 29985)
@@ -159,17 +159,14 @@
 	currentHead3 = currentHead;
 	currentHead2 = currentHead->next;
 
-	while (currentHead2) {
-		if (currentHead2->type == 3) {
-			break;
-		}
+	while (currentHead2 && (currentHead2->type != 3)) {
 
 		if (currentHead2->type != 5) {
 			int16 lvar2;
 
 			getSingleObjectParam(currentHead2->overlay, currentHead2->idx, 2, &lvar2);
 
-			if (lvar2 > var)
+			if (lvar2 >= var)
 				break;
 		}
 
@@ -360,14 +357,14 @@
 	}
 }
 
-void sortCells(int16 param1, int16 param2, cellStruct *objPtr) {
+void sortCells(int16 ovlIdx, int16 ovjIdx, cellStruct *objPtr) {
 	cellStruct *pl,*pl2,*pl3,*pl4,*plz,*pllast;
 	cellStruct prov;
 	int16 newz, objz, sobjz;
 
 	pl4 = NULL;
 
-	getSingleObjectParam(param1, param2, 2, &sobjz);
+	getSingleObjectParam(ovlIdx, ovjIdx, 2, &sobjz);
 	pl = objPtr;
 	prov.next = NULL;
 	prov.prev = NULL;
@@ -378,7 +375,7 @@
 
 	while (pl2) {
 		pl3 = pl2->next;
-		if ((pl2->overlay == param1) && (pl2->idx == param2)) {// found
+		if ((pl2->overlay == ovlIdx) && (pl2->idx == ovjIdx)) {// found
 			pl->next = pl3;
 
 			if (pl3) {

Modified: scummvm/trunk/engines/cruise/dataLoader.cpp
===================================================================
--- scummvm/trunk/engines/cruise/dataLoader.cpp	2007-12-25 16:17:22 UTC (rev 29984)
+++ scummvm/trunk/engines/cruise/dataLoader.cpp	2007-12-25 16:37:12 UTC (rev 29985)
@@ -42,8 +42,7 @@
 	uint8 *buffer;
 	uint8 *dataPtr = pCurrentFileEntry->subData.ptr;
 
-	int spriteSize =
-	    pCurrentFileEntry->height * pCurrentFileEntry->width;
+	int spriteSize = pCurrentFileEntry->height * pCurrentFileEntry->width;
 	int x = 0;
 
 	buffer = (uint8 *) malloc(spriteSize);
@@ -480,7 +479,7 @@
 				filesDatabase[fileIndex].subData.resourceType = 2;
 				decodeGfxFormat1(&filesDatabase[fileIndex]);
 				filesDatabase[fileIndex].subData.index = currentEntryIdx;
-				filesDatabase[fileIndex].subData.transparency = localBuffer.transparency % 0x10;
+				filesDatabase[fileIndex].subData.transparency = 0;
 				break;
 			}
 		case 4:

Modified: scummvm/trunk/engines/cruise/overlay.cpp
===================================================================
--- scummvm/trunk/engines/cruise/overlay.cpp	2007-12-25 16:17:22 UTC (rev 29984)
+++ scummvm/trunk/engines/cruise/overlay.cpp	2007-12-25 16:37:12 UTC (rev 29985)
@@ -607,8 +607,7 @@
 					return (-2);
 				}
 
-				memcpy(ovlData->stringTable[i].string,
-				    scriptPtr, ovlData->stringTable[i].length);
+				memcpy(ovlData->stringTable[i].string, scriptPtr, ovlData->stringTable[i].length);
 				scriptPtr += ovlData->stringTable[i].length;
 			}
 		}

Modified: scummvm/trunk/engines/cruise/volume.cpp
===================================================================
--- scummvm/trunk/engines/cruise/volume.cpp	2007-12-25 16:17:22 UTC (rev 29984)
+++ scummvm/trunk/engines/cruise/volume.cpp	2007-12-25 16:37:12 UTC (rev 29985)
@@ -425,54 +425,47 @@
 
 		sprintf(nameBuffer, "D%d.", i + 1);
 
-		fileHandle = fopen(nameBuffer, "rb");
+		fileHandle.open(nameBuffer);
 
 		short int numEntry;
 		short int sizeEntry;
 
-		fread(&numEntry, 2, 1, fileHandle);
-		fread(&sizeEntry, 2, 1, fileHandle);
+		numEntry = fileHandle.readSint16BE();
+		sizeEntry = fileHandle.readSint16BE();
 
-		flipShort(&numEntry);
-		flipShort(&sizeEntry);
-
 		buffer = (fileEntry *) mallocAndZero(numEntry * sizeEntry);
 
-		fread(buffer, numEntry * sizeEntry, 1, fileHandle);
-
 		for (j = 0; j < numEntry; j++) {
-			flipLong(&buffer[j].offset);
-			flipLong(&buffer[j].size);
-			flipLong(&buffer[j].unk2);
-			flipLong(&buffer[j].unk3);
+			fileHandle.seek(4+j*0x1E);
+			fileHandle.read(buffer[j].name, 14);
+			buffer[j].offset = fileHandle.readSint32BE();
+			buffer[j].size = fileHandle.readSint32BE();
+			buffer[j].extSize = fileHandle.readSint32BE();
+			buffer[j].unk3 = fileHandle.readSint32BE();
 
-			fseek(fileHandle, buffer[j].offset, SEEK_SET);
+			fileHandle.seek(buffer[j].offset);
 
 			char *bufferLocal;
 			bufferLocal = (char *)mallocAndZero(buffer[j].size);
 
-			fread(bufferLocal, buffer[j].size, 1, fileHandle);
+			fileHandle.read(bufferLocal, buffer[j].size);
 
 			char nameBuffer[256];
 
-			sprintf(nameBuffer, "D%d.dmp/%s", i + 1,
-			    buffer[j].name);
+			sprintf(nameBuffer, "D:/oldies/c-eng/dump/%s", buffer[j].name);
 
-			if (buffer[j].size == buffer[j].unk2) {
-				FILE *fOut = fopen(nameBuffer, "wb+");
-				fwrite(bufferLocal, buffer[j].size, 1, fOut);
-				fclose(fOut);
+			if (buffer[j].size == buffer[j].extSize) {
+				Common::File fout;
+				fout.open(nameBuffer, Common::File::kFileWriteMode);
+				fout.write(bufferLocal, buffer[j].size);
 			} else {
-				char *uncompBuffer =
-				    (char *)mallocAndZero(buffer[j].unk2 +
-				    500);
+				char *uncompBuffer = (char *)mallocAndZero(buffer[j].extSize + 500);
 
 				delphineUnpack((uint8 *) uncompBuffer, (const uint8 *) bufferLocal, buffer[j].size);
 
-				FILE *fOut = fopen(nameBuffer, "wb+");
-				fwrite(uncompBuffer, buffer[j].unk2, 1,
-				    fOut);
-				fclose(fOut);
+				Common::File fout;
+				fout.open(nameBuffer, Common::File::kFileWriteMode);
+				fout.write(uncompBuffer, buffer[j].extSize);
 
 				//free(uncompBuffer);
 


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