mirror of
https://github.com/libretro/scummvm.git
synced 2025-03-04 17:29:11 +00:00
Fix cell sorting
Fix palette loading svn-id: r29985
This commit is contained in:
parent
c10f74411e
commit
37d8bed89b
@ -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;
|
||||
|
@ -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) {
|
||||
|
@ -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:
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user