aboutsummaryrefslogtreecommitdiff
path: root/engines/cruise/overlay.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/cruise/overlay.cpp')
-rw-r--r--engines/cruise/overlay.cpp1040
1 files changed, 519 insertions, 521 deletions
diff --git a/engines/cruise/overlay.cpp b/engines/cruise/overlay.cpp
index ff7711b8ea..c221d07a0b 100644
--- a/engines/cruise/overlay.cpp
+++ b/engines/cruise/overlay.cpp
@@ -29,122 +29,120 @@ namespace Cruise {
overlayStruct overlayTable[90];
int numOfLoadedOverlay;
-void initOverlayTable(void)
-{
- int i;
-
- for(i=0;i<90;i++)
- {
- overlayTable[i].overlayName[0] = 0;
- overlayTable[i].ovlData = NULL;
- overlayTable[i].alreadyLoaded = 0;
- overlayTable[i].executeScripts = 0;
- }
+void initOverlayTable(void) {
+ int i;
+
+ for (i = 0; i < 90; i++) {
+ overlayTable[i].overlayName[0] = 0;
+ overlayTable[i].ovlData = NULL;
+ overlayTable[i].alreadyLoaded = 0;
+ overlayTable[i].executeScripts = 0;
+ }
- numOfLoadedOverlay = 1;
+ numOfLoadedOverlay = 1;
}
-int loadOverlay(uint8* scriptName)
-{
- int newNumberOfScript;
- bool scriptNotLoadedBefore;
- int scriptIdx;
- uint8 fileName[50];
- int fileIdx;
- int unpackedSize;
- char* unpackedBuffer;
- char* scriptPtr;
- ovlDataStruct* ovlData;
+int loadOverlay(uint8 *scriptName) {
+ int newNumberOfScript;
+ bool scriptNotLoadedBefore;
+ int scriptIdx;
+ uint8 fileName[50];
+ int fileIdx;
+ int unpackedSize;
+ char *unpackedBuffer;
+ char *scriptPtr;
+ ovlDataStruct *ovlData;
- printf("Load overlay: %s\n",scriptName);
+ printf("Load overlay: %s\n", scriptName);
- newNumberOfScript = numOfLoadedOverlay;
+ newNumberOfScript = numOfLoadedOverlay;
- scriptNotLoadedBefore = false;
+ scriptNotLoadedBefore = false;
- scriptIdx = findOverlayByName((char*)scriptName);
+ scriptIdx = findOverlayByName((char *)scriptName);
- if(scriptIdx == -4)
- {
- scriptIdx = numOfLoadedOverlay;
+ if (scriptIdx == -4) {
+ scriptIdx = numOfLoadedOverlay;
- newNumberOfScript++;
+ newNumberOfScript++;
- scriptNotLoadedBefore = true;
- }
+ scriptNotLoadedBefore = true;
+ }
- if(overlayTable[scriptIdx].alreadyLoaded)
- {
- return (scriptIdx);
- }
+ if (overlayTable[scriptIdx].alreadyLoaded) {
+ return (scriptIdx);
+ }
- overlayTable[scriptIdx].ovlData = (ovlDataStruct*) mallocAndZero(sizeof(ovlDataStruct));
+ overlayTable[scriptIdx].ovlData =
+ (ovlDataStruct *) mallocAndZero(sizeof(ovlDataStruct));
- if(!overlayTable[scriptIdx].ovlData)
- return(-2);
+ if (!overlayTable[scriptIdx].ovlData)
+ return (-2);
- strcpyuint8(overlayTable[scriptIdx].overlayName, scriptName);
+ strcpyuint8(overlayTable[scriptIdx].overlayName, scriptName);
- overlayTable[scriptIdx].alreadyLoaded = 1;
+ overlayTable[scriptIdx].alreadyLoaded = 1;
- numOfLoadedOverlay = newNumberOfScript;
+ numOfLoadedOverlay = newNumberOfScript;
- overlayTable[scriptIdx].ovlData->scriptNumber = scriptIdx;
-
- strcpyuint8(fileName,scriptName);
+ overlayTable[scriptIdx].ovlData->scriptNumber = scriptIdx;
- strcatuint8(fileName,".OVL");
+ strcpyuint8(fileName, scriptName);
- printf("Attempting to load overlay file %s...\n", fileName);
-
- fileIdx = findFileInDisks(fileName);
+ strcatuint8(fileName, ".OVL");
- if(fileIdx<0)
- {
- printf("Unable to load overlay %s !\n", scriptName);
- //releaseScript(scriptName);
- return(-18);
- }
+ printf("Attempting to load overlay file %s...\n", fileName);
- unpackedSize = volumePtrToFileDescriptor[fileIdx].extSize + 2;
-
- // TODO: here, can unpack in gfx module buffer
- unpackedBuffer = (char*)mallocAndZero(unpackedSize);
+ fileIdx = findFileInDisks(fileName);
- if(!unpackedBuffer)
- {
- return(-2);
- }
+ if (fileIdx < 0) {
+ printf("Unable to load overlay %s !\n", scriptName);
+ //releaseScript(scriptName);
+ return (-18);
+ }
- if(volumePtrToFileDescriptor[fileIdx].size +2 != unpackedSize)
- {
- char* tempBuffer;
- uint16 realUnpackedSize;
- char* pakedBuffer = (char*) mallocAndZero(volumePtrToFileDescriptor[fileIdx].size +2);
+ unpackedSize = volumePtrToFileDescriptor[fileIdx].extSize + 2;
- loadPakedFileToMem(fileIdx,(uint8*)pakedBuffer);
+ // TODO: here, can unpack in gfx module buffer
+ unpackedBuffer = (char *)mallocAndZero(unpackedSize);
- realUnpackedSize = *(int16*)(pakedBuffer+volumePtrToFileDescriptor[fileIdx].size-2);
- flipShort(&realUnpackedSize);
+ if (!unpackedBuffer) {
+ return (-2);
+ }
- tempBuffer = (char*)mallocAndZero(realUnpackedSize);
+ if (volumePtrToFileDescriptor[fileIdx].size + 2 != unpackedSize) {
+ char *tempBuffer;
+ uint16 realUnpackedSize;
+ char *pakedBuffer =
+ (char *)mallocAndZero(volumePtrToFileDescriptor[fileIdx].
+ size + 2);
- decomp((uint8*)pakedBuffer+volumePtrToFileDescriptor[fileIdx].size-4,(uint8*)unpackedBuffer+realUnpackedSize,realUnpackedSize);
+ loadPakedFileToMem(fileIdx, (uint8 *) pakedBuffer);
- free(pakedBuffer);
- }
- else
- {
- loadPakedFileToMem(fileIdx,(uint8*)unpackedBuffer);
- }
+ realUnpackedSize =
+ *(int16 *) (pakedBuffer +
+ volumePtrToFileDescriptor[fileIdx].size - 2);
+ flipShort(&realUnpackedSize);
+
+ tempBuffer = (char *)mallocAndZero(realUnpackedSize);
- printf("OVL loading done...\n");
+ decomp((uint8 *) pakedBuffer +
+ volumePtrToFileDescriptor[fileIdx].size - 4,
+ (uint8 *) unpackedBuffer + realUnpackedSize,
+ realUnpackedSize);
+
+ free(pakedBuffer);
+ } else {
+ loadPakedFileToMem(fileIdx, (uint8 *) unpackedBuffer);
+ }
- scriptPtr = unpackedBuffer;
+ printf("OVL loading done...\n");
- ovlData = overlayTable[scriptIdx].ovlData;
+ scriptPtr = unpackedBuffer;
- memcpy(ovlData,scriptPtr, sizeof(ovlDataStruct));
+ ovlData = overlayTable[scriptIdx].ovlData;
+
+ memcpy(ovlData, scriptPtr, sizeof(ovlDataStruct));
ovlData->data3Table = NULL;
ovlData->ptr1 = NULL;
@@ -161,228 +159,231 @@ int loadOverlay(uint8* scriptName)
ovlData->exportNamesPtr = NULL;
ovlData->data4Ptr = NULL;
ovlData->ptr8 = NULL;
- ovlData->numScripts1 = readB16(scriptPtr+60);
- ovlData->numScripts2 = readB16(scriptPtr+62);
- ovlData->numExport = readB16(scriptPtr+64);
- ovlData->numImport = readB16(scriptPtr+66);
- ovlData->numLinkData = readB16(scriptPtr+68);
- ovlData->numObjData = readB16(scriptPtr+70);
- ovlData->numStrings = readB16(scriptPtr+72);
- ovlData->size8 = readB16(scriptPtr+74);
- ovlData->size9 = readB16(scriptPtr+76);
- ovlData->nameExportSize = readB16(scriptPtr+78);
- ovlData->exportNamesSize = readB16(scriptPtr+80);
- ovlData->specialString2Length = readB16(scriptPtr+82);
- ovlData->sizeOfData4 = readB16(scriptPtr+84);
- ovlData->size12 = readB16(scriptPtr+86);
- ovlData->specialString1Length = readB16(scriptPtr+88);
- ovlData->scriptNumber = readB16(scriptPtr+90);
-
- scriptPtr += 92;
-
- if(ovlData->numExport) // export data
- {
+ ovlData->numScripts1 = readB16(scriptPtr + 60);
+ ovlData->numScripts2 = readB16(scriptPtr + 62);
+ ovlData->numExport = readB16(scriptPtr + 64);
+ ovlData->numImport = readB16(scriptPtr + 66);
+ ovlData->numLinkData = readB16(scriptPtr + 68);
+ ovlData->numObjData = readB16(scriptPtr + 70);
+ ovlData->numStrings = readB16(scriptPtr + 72);
+ ovlData->size8 = readB16(scriptPtr + 74);
+ ovlData->size9 = readB16(scriptPtr + 76);
+ ovlData->nameExportSize = readB16(scriptPtr + 78);
+ ovlData->exportNamesSize = readB16(scriptPtr + 80);
+ ovlData->specialString2Length = readB16(scriptPtr + 82);
+ ovlData->sizeOfData4 = readB16(scriptPtr + 84);
+ ovlData->size12 = readB16(scriptPtr + 86);
+ ovlData->specialString1Length = readB16(scriptPtr + 88);
+ ovlData->scriptNumber = readB16(scriptPtr + 90);
+
+ scriptPtr += 92;
+
+ if (ovlData->numExport) { // export data
int i;
- ovlData->exportDataPtr = (exportEntryStruct*)mallocAndZero(ovlData->numExport*sizeof(exportEntryStruct));
+ ovlData->exportDataPtr =
+ (exportEntryStruct *) mallocAndZero(ovlData->numExport *
+ sizeof(exportEntryStruct));
- if(!ovlData->exportDataPtr)
- {
- return(-2);
- }
+ if (!ovlData->exportDataPtr) {
+ return (-2);
+ }
- for(i=0;i<ovlData->numExport;i++)
- {
+ for (i = 0; i < ovlData->numExport; i++) {
ovlData->exportDataPtr[i].var0 = readB16(scriptPtr);
- ovlData->exportDataPtr[i].var2 = readB16(scriptPtr+2);
- ovlData->exportDataPtr[i].var4 = readB16(scriptPtr+4);
- ovlData->exportDataPtr[i].idx = readB16(scriptPtr+6);
- ovlData->exportDataPtr[i].offsetToName = readB16(scriptPtr+8);
-
- scriptPtr+=10;
+ ovlData->exportDataPtr[i].var2 =
+ readB16(scriptPtr + 2);
+ ovlData->exportDataPtr[i].var4 =
+ readB16(scriptPtr + 4);
+ ovlData->exportDataPtr[i].idx = readB16(scriptPtr + 6);
+ ovlData->exportDataPtr[i].offsetToName =
+ readB16(scriptPtr + 8);
+
+ scriptPtr += 10;
}
- }
-
- if(ovlData->exportNamesSize) // export names
- {
- ovlData->exportNamesPtr = (uint8*)mallocAndZero(ovlData->exportNamesSize);
+ }
- if(!ovlData->exportNamesPtr)
- {
- return(-2);
- }
+ if (ovlData->exportNamesSize) { // export names
+ ovlData->exportNamesPtr =
+ (uint8 *) mallocAndZero(ovlData->exportNamesSize);
- memcpy(ovlData->exportNamesPtr, scriptPtr, ovlData->exportNamesSize);
- scriptPtr += ovlData->exportNamesSize;
- }
+ if (!ovlData->exportNamesPtr) {
+ return (-2);
+ }
- if(ovlData->numImport) // import data
- {
+ memcpy(ovlData->exportNamesPtr, scriptPtr,
+ ovlData->exportNamesSize);
+ scriptPtr += ovlData->exportNamesSize;
+ }
+
+ if (ovlData->numImport) { // import data
int i;
- ovlData->importDataPtr = (importDataStruct*)mallocAndZero(ovlData->numImport * sizeof(importDataStruct));
+ ovlData->importDataPtr =
+ (importDataStruct *) mallocAndZero(ovlData->numImport *
+ sizeof(importDataStruct));
- if(!ovlData->importDataPtr)
- {
- return(-2);
- }
+ if (!ovlData->importDataPtr) {
+ return (-2);
+ }
- for(i=0;i<ovlData->numImport;i++)
- {
+ for (i = 0; i < ovlData->numImport; i++) {
ovlData->importDataPtr[i].var0 = readB16(scriptPtr);
- ovlData->importDataPtr[i].var1 = readB16(scriptPtr+2);
- ovlData->importDataPtr[i].linkType = readB16(scriptPtr+4);
- ovlData->importDataPtr[i].linkIdx = readB16(scriptPtr+6);
- ovlData->importDataPtr[i].nameOffset = readB16(scriptPtr+8);
-
- scriptPtr+=10;
+ ovlData->importDataPtr[i].var1 =
+ readB16(scriptPtr + 2);
+ ovlData->importDataPtr[i].linkType =
+ readB16(scriptPtr + 4);
+ ovlData->importDataPtr[i].linkIdx =
+ readB16(scriptPtr + 6);
+ ovlData->importDataPtr[i].nameOffset =
+ readB16(scriptPtr + 8);
+
+ scriptPtr += 10;
}
}
-
- if(ovlData->nameExportSize) // import name
- {
- ovlData->importNamePtr = (uint8*)mallocAndZero(ovlData->nameExportSize);
- if(!ovlData->importNamePtr)
- {
- return(-2);
- }
+ if (ovlData->nameExportSize) { // import name
+ ovlData->importNamePtr =
+ (uint8 *) mallocAndZero(ovlData->nameExportSize);
- memcpy(ovlData->importNamePtr, scriptPtr, ovlData->nameExportSize);
- scriptPtr += ovlData->nameExportSize;
- }
+ if (!ovlData->importNamePtr) {
+ return (-2);
+ }
- if(ovlData->numLinkData) // link data
- {
- ASSERT(sizeof(linkDataStruct) == 0x22);
+ memcpy(ovlData->importNamePtr, scriptPtr,
+ ovlData->nameExportSize);
+ scriptPtr += ovlData->nameExportSize;
+ }
- ovlData->linkDataPtr = (linkDataStruct*)mallocAndZero(ovlData->numLinkData*sizeof(linkDataStruct));
+ if (ovlData->numLinkData) { // link data
+ ASSERT(sizeof(linkDataStruct) == 0x22);
- if(!ovlData->linkDataPtr)
- {
- return(-2);
- }
+ ovlData->linkDataPtr =
+ (linkDataStruct *) mallocAndZero(ovlData->numLinkData *
+ sizeof(linkDataStruct));
- memcpy(ovlData->linkDataPtr, scriptPtr, ovlData->numLinkData*sizeof(linkDataStruct));
- scriptPtr += ovlData->numLinkData*sizeof(linkDataStruct);
- flipGen(ovlData->linkDataPtr,ovlData->numLinkData*sizeof(linkDataStruct));
- }
+ if (!ovlData->linkDataPtr) {
+ return (-2);
+ }
- if(ovlData->numScripts1) // script
- {
- ovlData3Struct* tempPtr;
- int i;
+ memcpy(ovlData->linkDataPtr, scriptPtr,
+ ovlData->numLinkData * sizeof(linkDataStruct));
+ scriptPtr += ovlData->numLinkData * sizeof(linkDataStruct);
+ flipGen(ovlData->linkDataPtr,
+ ovlData->numLinkData * sizeof(linkDataStruct));
+ }
+
+ if (ovlData->numScripts1) { // script
+ ovlData3Struct *tempPtr;
+ int i;
- ovlData->data3Table = (ovlData3Struct*)mallocAndZero(ovlData->numScripts1 * sizeof(ovlData3Struct));
+ ovlData->data3Table =
+ (ovlData3Struct *) mallocAndZero(ovlData->numScripts1 *
+ sizeof(ovlData3Struct));
- if(!ovlData->data3Table)
- {
+ if (!ovlData->data3Table) {
/* releaseScript(scriptIdx,scriptName);
- if(freeIsNeeded)
- {
+ if(freeIsNeeded) {
freePtr(unpackedBuffer);
} */
- return(-2);
- }
+ return (-2);
+ }
- memcpy(ovlData->data3Table, scriptPtr, ovlData->numScripts1 * sizeof(ovlData3Struct));
- scriptPtr += ovlData->numScripts1 * 0x1C;
+ memcpy(ovlData->data3Table, scriptPtr,
+ ovlData->numScripts1 * sizeof(ovlData3Struct));
+ scriptPtr += ovlData->numScripts1 * 0x1C;
- flipGen(ovlData->data3Table,ovlData->numScripts1 * sizeof(ovlData3Struct));
+ flipGen(ovlData->data3Table,
+ ovlData->numScripts1 * sizeof(ovlData3Struct));
- tempPtr = ovlData->data3Table;
+ tempPtr = ovlData->data3Table;
- for(i=0;i<ovlData->numScripts1;i++)
- {
- uint8* ptr = tempPtr->dataPtr = (uint8*) mallocAndZero(tempPtr->sizeOfData);
+ for (i = 0; i < ovlData->numScripts1; i++) {
+ uint8 *ptr = tempPtr->dataPtr =
+ (uint8 *) mallocAndZero(tempPtr->sizeOfData);
- if(!ptr)
- {
- /* releaseScript(scriptIdx,scriptName);
+ if (!ptr) {
+ /* releaseScript(scriptIdx,scriptName);
+ *
+ * if(freeIsNeeded)
+ * {
+ * freePtr(unpackedBuffer);
+ * } */
- if(freeIsNeeded)
- {
- freePtr(unpackedBuffer);
- } */
+ return (-2);
+ }
- return(-2);
- }
+ memcpy(ptr, scriptPtr, tempPtr->sizeOfData);
+ scriptPtr += tempPtr->sizeOfData;
- memcpy( ptr, scriptPtr, tempPtr->sizeOfData );
- scriptPtr+= tempPtr->sizeOfData;
+ if (tempPtr->offsetToImportData) {
+ flipGen(ptr + tempPtr->offsetToImportData,
+ tempPtr->numImport * 10);
+ }
- if(tempPtr->offsetToImportData)
- {
- flipGen(ptr+tempPtr->offsetToImportData,tempPtr->numImport*10);
- }
+ if (tempPtr->offsetToSubData2) {
+ flipGen(ptr + tempPtr->offsetToImportData,
+ tempPtr->subData2Size * 10);
+ }
- if(tempPtr->offsetToSubData2)
- {
- flipGen(ptr+tempPtr->offsetToImportData,tempPtr->subData2Size*10);
- }
+ tempPtr++;
+ }
+ }
- tempPtr++;
- }
- }
+ if (ovlData->numScripts2) {
+ ovlData3Struct *tempPtr;
+ int i;
- if(ovlData->numScripts2)
- {
- ovlData3Struct* tempPtr;
- int i;
-
- ovlData->ptr1 = (uint8*)mallocAndZero(ovlData->numScripts2*0x1C);
+ ovlData->ptr1 =
+ (uint8 *) mallocAndZero(ovlData->numScripts2 * 0x1C);
- if(!ovlData->ptr1)
- {
- return(-2);
- }
+ if (!ovlData->ptr1) {
+ return (-2);
+ }
- memcpy(ovlData->ptr1, scriptPtr, ovlData->numScripts2 * 0x1C);
- scriptPtr += ovlData->numScripts2*0x1C;
- flipGen(ovlData->ptr1,ovlData->numScripts2*0x1C);
+ memcpy(ovlData->ptr1, scriptPtr, ovlData->numScripts2 * 0x1C);
+ scriptPtr += ovlData->numScripts2 * 0x1C;
+ flipGen(ovlData->ptr1, ovlData->numScripts2 * 0x1C);
- tempPtr = (ovlData3Struct*)ovlData->ptr1;
+ tempPtr = (ovlData3Struct *) ovlData->ptr1;
- for(i=0;i<ovlData->numScripts2;i++)
- {
- uint8* ptr = tempPtr->dataPtr = (uint8*) mallocAndZero(tempPtr->sizeOfData);
+ for (i = 0; i < ovlData->numScripts2; i++) {
+ uint8 *ptr = tempPtr->dataPtr =
+ (uint8 *) mallocAndZero(tempPtr->sizeOfData);
- if(!ptr)
- {
- /* releaseScript(scriptIdx,scriptName);
+ if (!ptr) {
+ /* releaseScript(scriptIdx,scriptName);
+ *
+ * if(freeIsNeeded)
+ * {
+ * freePtr(unpackedBuffer);
+ * } */
- if(freeIsNeeded)
- {
- freePtr(unpackedBuffer);
- } */
+ return (-2);
+ }
- return(-2);
- }
+ memcpy(ptr, scriptPtr, tempPtr->sizeOfData);
+ scriptPtr += tempPtr->sizeOfData;
- memcpy( ptr, scriptPtr, tempPtr->sizeOfData );
- scriptPtr+= tempPtr->sizeOfData;
+ if (tempPtr->offsetToImportData) {
+ flipGen(ptr + tempPtr->offsetToImportData,
+ tempPtr->numImport * 10);
+ }
- if(tempPtr->offsetToImportData)
- {
- flipGen(ptr+tempPtr->offsetToImportData,tempPtr->numImport*10);
- }
+ if (tempPtr->offsetToSubData2) {
+ flipGen(ptr + tempPtr->offsetToImportData,
+ tempPtr->subData2Size * 10);
+ }
- if(tempPtr->offsetToSubData2)
- {
- flipGen(ptr+tempPtr->offsetToImportData,tempPtr->subData2Size*10);
- }
-
- tempPtr++;
- }
- }
+ tempPtr++;
+ }
+ }
- if(ovlData->size12)
- {
- ovlData->ptr8 = (uint8*)mallocAndZero(ovlData->size12);
+ if (ovlData->size12) {
+ ovlData->ptr8 = (uint8 *) mallocAndZero(ovlData->size12);
- if(!ovlData->ptr8)
- {
+ if (!ovlData->ptr8) {
/* releaseScript(scriptIdx,scriptName);
if(freeIsNeeded)
@@ -390,20 +391,20 @@ int loadOverlay(uint8* scriptName)
freePtr(unpackedBuffer);
} */
- return(-2);
- }
+ return (-2);
+ }
- memcpy(ovlData->ptr8, scriptPtr, ovlData->size12);
- scriptPtr += ovlData->size12;
- }
+ memcpy(ovlData->ptr8, scriptPtr, ovlData->size12);
+ scriptPtr += ovlData->size12;
+ }
- if(ovlData->numObjData)
- {
+ if (ovlData->numObjData) {
int i;
- ovlData->objDataTable = (objDataStruct*)mallocAndZero(ovlData->numObjData*sizeof(objDataStruct));
+ ovlData->objDataTable =
+ (objDataStruct *) mallocAndZero(ovlData->numObjData *
+ sizeof(objDataStruct));
- if(!ovlData->objDataTable)
- {
+ if (!ovlData->objDataTable) {
/* releaseScript(scriptIdx,scriptName);
if(freeIsNeeded)
@@ -411,61 +412,60 @@ int loadOverlay(uint8* scriptName)
freePtr(unpackedBuffer);
} */
- return(-2);
- }
+ return (-2);
+ }
- for(i=0;i<ovlData->numObjData;i++)
- {
- ovlData->objDataTable[i].var0 = *(int16*)scriptPtr;
- scriptPtr+=2;
+ for (i = 0; i < ovlData->numObjData; i++) {
+ ovlData->objDataTable[i].var0 = *(int16 *) scriptPtr;
+ scriptPtr += 2;
flipShort(&ovlData->objDataTable[i].var0);
- ovlData->objDataTable[i].var1 = *(int16*)scriptPtr;
- scriptPtr+=2;
+ ovlData->objDataTable[i].var1 = *(int16 *) scriptPtr;
+ scriptPtr += 2;
flipShort(&ovlData->objDataTable[i].var1);
- ovlData->objDataTable[i].var2 = *(int16*)scriptPtr;
- scriptPtr+=2;
+ ovlData->objDataTable[i].var2 = *(int16 *) scriptPtr;
+ scriptPtr += 2;
flipShort(&ovlData->objDataTable[i].var2);
- ovlData->objDataTable[i].var3 = *(int16*)scriptPtr;
- scriptPtr+=2;
+ ovlData->objDataTable[i].var3 = *(int16 *) scriptPtr;
+ scriptPtr += 2;
flipShort(&ovlData->objDataTable[i].var3);
- ovlData->objDataTable[i].var4 = *(int16*)scriptPtr;
- scriptPtr+=2;
+ ovlData->objDataTable[i].var4 = *(int16 *) scriptPtr;
+ scriptPtr += 2;
flipShort(&ovlData->objDataTable[i].var4);
- ovlData->objDataTable[i].var5 = *(int16*)scriptPtr;
- scriptPtr+=2;
+ ovlData->objDataTable[i].var5 = *(int16 *) scriptPtr;
+ scriptPtr += 2;
flipShort(&ovlData->objDataTable[i].var5);
- ovlData->objDataTable[i].var6 = *(int16*)scriptPtr;
- scriptPtr+=2;
+ ovlData->objDataTable[i].var6 = *(int16 *) scriptPtr;
+ scriptPtr += 2;
flipShort(&ovlData->objDataTable[i].var6);
}
- if(scriptNotLoadedBefore)
- {
- //int var1;
- //int var2;
-
- overlayTable[scriptIdx].field_14 = (char)setup1;
+ if (scriptNotLoadedBefore) {
+ //int var1;
+ //int var2;
- var1 = loadScriptSub1(scriptIdx,3);
- var2 = loadScriptSub1(scriptIdx,0);
+ overlayTable[scriptIdx].field_14 = (char)setup1;
- setup1 = var1 + var2;
- }
- }
+ var1 = loadScriptSub1(scriptIdx, 3);
+ var2 = loadScriptSub1(scriptIdx, 0);
- if(ovlData->size9)
- {
- ovlData->objData2WorkTable = (objectParams*)mallocAndZero(ovlData->size9 * sizeof(objectParams));
- memset(ovlData->objData2WorkTable, 0, ovlData->size9 * sizeof(objectParams));
+ setup1 = var1 + var2;
+ }
+ }
+
+ if (ovlData->size9) {
+ ovlData->objData2WorkTable =
+ (objectParams *) mallocAndZero(ovlData->size9 *
+ sizeof(objectParams));
+ memset(ovlData->objData2WorkTable, 0,
+ ovlData->size9 * sizeof(objectParams));
- if(!ovlData->objData2WorkTable)
- {
+ if (!ovlData->objData2WorkTable) {
/* releaseScript(scriptIdx,scriptName);
if(freeIsNeeded)
@@ -473,16 +473,16 @@ int loadOverlay(uint8* scriptName)
freePtr(unpackedBuffer);
} */
- return(-2);
- }
- }
+ return (-2);
+ }
+ }
- if(ovlData->size8)
- {
- ovlData->objData2SourceTable = (objectParams*)mallocAndZero(ovlData->size8 * sizeof(objectParams));
+ if (ovlData->size8) {
+ ovlData->objData2SourceTable =
+ (objectParams *) mallocAndZero(ovlData->size8 *
+ sizeof(objectParams));
- if(!ovlData->objData2SourceTable)
- {
+ if (!ovlData->objData2SourceTable) {
/* releaseScript(scriptIdx,scriptName);
if(freeIsNeeded)
@@ -490,232 +490,236 @@ int loadOverlay(uint8* scriptName)
freePtr(unpackedBuffer);
} */
- return(-2);
- }
+ return (-2);
+ }
- memcpy(ovlData->objData2SourceTable, scriptPtr, ovlData->size8*12); // TODO: made read item by item
- scriptPtr += ovlData->size8*12;
- flipGen(ovlData->objData2SourceTable,ovlData->size8*12);
- }
+ memcpy(ovlData->objData2SourceTable, scriptPtr, ovlData->size8 * 12); // TODO: made read item by item
+ scriptPtr += ovlData->size8 * 12;
+ flipGen(ovlData->objData2SourceTable, ovlData->size8 * 12);
+ }
- if(ovlData->numStrings)
- {
- int i;
-
- ovlData->stringTable = (stringEntryStruct*)mallocAndZero(ovlData->numStrings*sizeof(stringEntryStruct));
-
- for(i=0;i<ovlData->numStrings;i++)
- {
- ovlData->stringTable[i].idx = *(int16*)scriptPtr;
- flipShort(&ovlData->stringTable[i].idx);
- scriptPtr+=2;
- }
- }
+ if (ovlData->numStrings) {
+ int i;
+
+ ovlData->stringTable =
+ (stringEntryStruct *) mallocAndZero(ovlData->numStrings *
+ sizeof(stringEntryStruct));
+
+ for (i = 0; i < ovlData->numStrings; i++) {
+ ovlData->stringTable[i].idx = *(int16 *) scriptPtr;
+ flipShort(&ovlData->stringTable[i].idx);
+ scriptPtr += 2;
+ }
+ }
/* if(freeIsNeeded)
{
freePtr(unpackedBuffer);
} */
- if(ovlData->sizeOfData4)
- {
- ovlData->data4Ptr = (uint8*)mallocAndZero(ovlData->sizeOfData4);
- memset(ovlData->data4Ptr,0,ovlData->sizeOfData4);
-
- if(!ovlData->data4Ptr)
- {
- //releaseScript(scriptIdx,scriptName);
- return(-2);
- }
- }
-
- if(ovlData->specialString1Length /*|| ovlData->specialString2Length*/ || ovlData->stringTable)
- {
- int i;
- //int unpackedSize;
- //int fileIdx;
- //uint8 fileName[50];
- //char* unpackedBuffer;
-
- strcpyuint8(fileName,scriptName);
-
- strcatuint8(fileName,".FR");
-
- fileIdx = findFileInDisks(fileName);
-
- if(fileIdx<0)
- {
- //releaseScript(scriptName);
- return(-18);
- }
-
- unpackedSize = volumePtrToFileDescriptor[fileIdx].extSize + 2;
-
- // TODO: here, can unpack in gfx module buffer
- unpackedBuffer = (char*)mallocAndZero(unpackedSize);
-
- if(!unpackedBuffer)
- {
- return(-2);
- }
-
- if(volumePtrToFileDescriptor[fileIdx].size +2 != unpackedSize)
- {
- short int realUnpackedSize;
- char* pakedBuffer = (char*) mallocAndZero(volumePtrToFileDescriptor[fileIdx].size +2);
-
- loadPakedFileToMem(fileIdx,(uint8*)pakedBuffer);
-
- realUnpackedSize = *(int16*)(pakedBuffer+volumePtrToFileDescriptor[fileIdx].size-2);
- flipShort(&realUnpackedSize);
-
- decomp((uint8*)pakedBuffer+volumePtrToFileDescriptor[fileIdx].size-4,(uint8*)unpackedBuffer+realUnpackedSize,realUnpackedSize);
+ if (ovlData->sizeOfData4) {
+ ovlData->data4Ptr =
+ (uint8 *) mallocAndZero(ovlData->sizeOfData4);
+ memset(ovlData->data4Ptr, 0, ovlData->sizeOfData4);
- free(pakedBuffer);
- }
- else
- {
- loadPakedFileToMem(fileIdx,(uint8*)unpackedBuffer);
- }
-
- scriptPtr = unpackedBuffer;
-
- memcpy(&ovlData->specialString1Length,scriptPtr,2);
- scriptPtr+=2;
- flipShort(&ovlData->specialString1Length); // recheck if needed
-
- if(ovlData->specialString1Length)
- {
- ovlData->specialString1 = (uint8*)mallocAndZero(ovlData->specialString1Length);
+ if (!ovlData->data4Ptr) {
+ //releaseScript(scriptIdx,scriptName);
+ return (-2);
+ }
+ }
- if(!ovlData->specialString1)
- {
- /* releaseScript(scriptIdx,scriptName);
+ if (ovlData->
+ specialString1Length /*|| ovlData->specialString2Length */
+ || ovlData->stringTable) {
+ int i;
+ //int unpackedSize;
+ //int fileIdx;
+ //uint8 fileName[50];
+ //char* unpackedBuffer;
- if(freeIsNeeded)
- {
- freePtr(unpackedBuffer);
- } */
+ strcpyuint8(fileName, scriptName);
- return(-2);
- }
+ strcatuint8(fileName, ".FR");
- memcpy(ovlData->specialString1, scriptPtr, ovlData->specialString1Length);
- scriptPtr += ovlData->specialString1Length;
- }
+ fileIdx = findFileInDisks(fileName);
- memcpy(&ovlData->specialString2Length,scriptPtr,2);
- scriptPtr+=2;
- flipShort(&ovlData->specialString2Length); // recheck if needed
+ if (fileIdx < 0) {
+ //releaseScript(scriptName);
+ return (-18);
+ }
- if(ovlData->specialString2Length)
- {
- ovlData->specialString2 = (uint8*)mallocAndZero(ovlData->specialString2Length);
+ unpackedSize = volumePtrToFileDescriptor[fileIdx].extSize + 2;
- if(!ovlData->specialString2)
- {
- /* releaseScript(scriptIdx,scriptName);
+ // TODO: here, can unpack in gfx module buffer
+ unpackedBuffer = (char *)mallocAndZero(unpackedSize);
- if(freeIsNeeded)
- {
- freePtr(unpackedBuffer);
- } */
+ if (!unpackedBuffer) {
+ return (-2);
+ }
- return(-2);
- }
+ if (volumePtrToFileDescriptor[fileIdx].size + 2 !=
+ unpackedSize) {
+ short int realUnpackedSize;
+ char *pakedBuffer =
+ (char *)
+ mallocAndZero(volumePtrToFileDescriptor[fileIdx].
+ size + 2);
+
+ loadPakedFileToMem(fileIdx, (uint8 *) pakedBuffer);
+
+ realUnpackedSize =
+ *(int16 *) (pakedBuffer +
+ volumePtrToFileDescriptor[fileIdx].size - 2);
+ flipShort(&realUnpackedSize);
+
+ decomp((uint8 *) pakedBuffer +
+ volumePtrToFileDescriptor[fileIdx].size - 4,
+ (uint8 *) unpackedBuffer + realUnpackedSize,
+ realUnpackedSize);
+
+ free(pakedBuffer);
+ } else {
+ loadPakedFileToMem(fileIdx, (uint8 *) unpackedBuffer);
+ }
- memcpy(ovlData->specialString2, scriptPtr, ovlData->specialString2Length);
- scriptPtr += ovlData->specialString2Length;
- }
+ scriptPtr = unpackedBuffer;
- for(i=0;i<ovlData->numStrings;i++)
- {
- ovlData->stringTable[i].length = *(int16*)scriptPtr;
- scriptPtr +=2;
- flipShort(&ovlData->stringTable[i].length);
+ memcpy(&ovlData->specialString1Length, scriptPtr, 2);
+ scriptPtr += 2;
+ flipShort(&ovlData->specialString1Length); // recheck if needed
- if(ovlData->stringTable[i].length)
- {
- ovlData->stringTable[i].string = (char*)mallocAndZero(ovlData->stringTable[i].length);
+ if (ovlData->specialString1Length) {
+ ovlData->specialString1 =
+ (uint8 *) mallocAndZero(ovlData->
+ specialString1Length);
- if(!ovlData->stringTable[i].string)
- {
- /* releaseScript(scriptIdx,scriptName);
+ if (!ovlData->specialString1) {
+ /* releaseScript(scriptIdx,scriptName);
+ *
+ * if(freeIsNeeded)
+ * {
+ * freePtr(unpackedBuffer);
+ * } */
- if(freeIsNeeded)
- {
- freePtr(unpackedBuffer);
- } */
+ return (-2);
+ }
- return(-2);
- }
+ memcpy(ovlData->specialString1, scriptPtr,
+ ovlData->specialString1Length);
+ scriptPtr += ovlData->specialString1Length;
+ }
- memcpy(ovlData->stringTable[i].string,scriptPtr,ovlData->stringTable[i].length);
- scriptPtr += ovlData->stringTable[i].length;
- }
- }
- }
+ memcpy(&ovlData->specialString2Length, scriptPtr, 2);
+ scriptPtr += 2;
+ flipShort(&ovlData->specialString2Length); // recheck if needed
+
+ if (ovlData->specialString2Length) {
+ ovlData->specialString2 =
+ (uint8 *) mallocAndZero(ovlData->
+ specialString2Length);
+
+ if (!ovlData->specialString2) {
+ /* releaseScript(scriptIdx,scriptName);
+ *
+ * if(freeIsNeeded)
+ * {
+ * freePtr(unpackedBuffer);
+ * } */
+
+ return (-2);
+ }
+
+ memcpy(ovlData->specialString2, scriptPtr,
+ ovlData->specialString2Length);
+ scriptPtr += ovlData->specialString2Length;
+ }
+ for (i = 0; i < ovlData->numStrings; i++) {
+ ovlData->stringTable[i].length = *(int16 *) scriptPtr;
+ scriptPtr += 2;
+ flipShort(&ovlData->stringTable[i].length);
+
+ if (ovlData->stringTable[i].length) {
+ ovlData->stringTable[i].string =
+ (char *)mallocAndZero(ovlData->
+ stringTable[i].length);
+
+ if (!ovlData->stringTable[i].string) {
+ /* releaseScript(scriptIdx,scriptName);
+ *
+ * if(freeIsNeeded)
+ * {
+ * freePtr(unpackedBuffer);
+ * } */
+
+ return (-2);
+ }
+
+ memcpy(ovlData->stringTable[i].string,
+ scriptPtr, ovlData->stringTable[i].length);
+ scriptPtr += ovlData->stringTable[i].length;
+ }
+ }
+ }
#ifdef DUMP_SCRIPT
- {
- int i;
- for(i=0;i<ovlData->numScripts1;i++)
- {
- dumpScript(scriptName,ovlData,i);
- }
- }
+ {
+ int i;
+ for (i = 0; i < ovlData->numScripts1; i++) {
+ dumpScript(scriptName, ovlData, i);
+ }
+ }
#endif
#ifdef DUMP_OBJECT
- {
- int i;
- FILE* fHandle;
- char nameBundle[100];
- sprintf(nameBundle, "%s-objs.txt",scriptName);
-
- fHandle = fopen(nameBundle, "w+");
- ASSERT(fHandle);
+ {
+ int i;
+ FILE *fHandle;
+ char nameBundle[100];
+ sprintf(nameBundle, "%s-objs.txt", scriptName);
+
+ fHandle = fopen(nameBundle, "w+");
+ ASSERT(fHandle);
+
+ for (i = 0; i < ovlData->numLinkData; i++) {
+ linkDataStruct *var_34;
+ var_34 = &ovlData->linkDataPtr[i];
+
+ if (ovlData->specialString2) {
+ fprintf(fHandle, "----- object %02d -----\n",
+ i);
+ if (var_34->stringNameOffset != 0xFFFF) {
+ fprintf(fHandle, "name: %s\n",
+ getObjectName(var_34->
+ stringNameOffset,
+ ovlData->specialString2));
+ }
+ }
+ }
- for(i=0;i<ovlData->numLinkData;i++)
- {
- linkDataStruct* var_34;
- var_34 = &ovlData->linkDataPtr[i];
-
- if(ovlData->specialString2)
- {
- fprintf(fHandle,"----- object %02d -----\n", i);
- if(var_34->stringNameOffset != 0xFFFF)
- {
- fprintf(fHandle,"name: %s\n",getObjectName(var_34->stringNameOffset, ovlData->specialString2));
- }
- }
- }
-
- fclose(fHandle);
- }
+ fclose(fHandle);
+ }
#endif
- return(scriptIdx);
+ return (scriptIdx);
}
-int releaseOverlay(const char* name)
-{
- int overlayIdx;
- ovlDataStruct* ovlDataPtr;
-
- overlayIdx = findOverlayByName(name);
+int releaseOverlay(const char *name) {
+ int overlayIdx;
+ ovlDataStruct *ovlDataPtr;
- if(overlayIdx == -4)
- return -4;
+ overlayIdx = findOverlayByName(name);
- if(overlayTable[overlayIdx].alreadyLoaded == 0)
- return -4;
+ if (overlayIdx == -4)
+ return -4;
- overlayTable[overlayIdx].alreadyLoaded = 0;
+ if (overlayTable[overlayIdx].alreadyLoaded == 0)
+ return -4;
- ovlDataPtr = overlayTable[overlayIdx].ovlData;
+ overlayTable[overlayIdx].alreadyLoaded = 0;
- if(!ovlDataPtr)
- return -4;
+ ovlDataPtr = overlayTable[overlayIdx].ovlData;
+
+ if (!ovlDataPtr)
+ return -4;
/*
if(overlayTable[overlayIdx].var1E)
{
@@ -729,44 +733,38 @@ int releaseOverlay(const char* name)
overlayTable[overlayIdx].var16 = NULL;
} */
- removeScript(overlayIdx,-1,&scriptHandle2);
- removeScript(overlayIdx,-1,&scriptHandle2);
+ removeScript(overlayIdx, -1, &scriptHandle2);
+ removeScript(overlayIdx, -1, &scriptHandle2);
+
+ removeScript(overlayIdx, -1, &scriptHandle1);
+ removeScript(overlayIdx, -1, &scriptHandle1);
- removeScript(overlayIdx,-1,&scriptHandle1);
- removeScript(overlayIdx,-1,&scriptHandle1);
+ printf("releaseOverlay: finish !\n");
- printf("releaseOverlay: finish !\n");
-
- return 0;
+ return 0;
}
-int32 findOverlayByName2(uint8* name)
-{
- int i;
+int32 findOverlayByName2(uint8 *name) {
+ int i;
- for(i=1;i<numOfLoadedOverlay;i++)
- {
- if(!strcmpuint8(overlayTable[i].overlayName,name))
- return(i);
- }
+ for (i = 1; i < numOfLoadedOverlay; i++) {
+ if (!strcmpuint8(overlayTable[i].overlayName, name))
+ return (i);
+ }
- return(-4);
+ return (-4);
}
-int findOverlayByName(const char* overlayName)
-{
- int i;
+int findOverlayByName(const char *overlayName) {
+ int i;
- for(i=1;i<numOfLoadedOverlay;i++)
- {
- if(!strcmp(overlayTable[i].overlayName,overlayName))
- {
- return(i);
- }
- }
+ for (i = 1; i < numOfLoadedOverlay; i++) {
+ if (!strcmp(overlayTable[i].overlayName, overlayName)) {
+ return (i);
+ }
+ }
- return(-4);
+ return (-4);
}
-
} // End of namespace Cruise