Fix cell sorting

Fix palette loading

svn-id: r29985
This commit is contained in:
Vincent Hamm 2007-12-25 16:37:12 +00:00
parent c10f74411e
commit 37d8bed89b
5 changed files with 30 additions and 42 deletions

View File

@ -128,8 +128,8 @@ int loadBackground(const char *name, int idx) {
}
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;

View File

@ -159,17 +159,14 @@ cellStruct *addCell(cellStruct *pHead, int16 overlayIdx, int16 objIdx, int16 typ
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 freezeCell(cellStruct * pObject, int overlayIdx, int objIdx, int objType, i
}
}
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 @@ void sortCells(int16 param1, int16 param2, cellStruct *objPtr) {
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) {

View File

@ -42,8 +42,7 @@ void decodeGfxFormat1(dataFileEntry *pCurrentFileEntry) {
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 @@ int loadSetEntry(const char *name, uint8 *ptr, int currentEntryIdx, int currentD
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:

View File

@ -607,8 +607,7 @@ int loadOverlay(const char *scriptName) {
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;
}
}

View File

@ -425,54 +425,47 @@ int16 readVolCnf(void) {
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);
flipShort(&numEntry);
flipShort(&sizeEntry);
numEntry = fileHandle.readSint16BE();
sizeEntry = fileHandle.readSint16BE();
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);