aboutsummaryrefslogtreecommitdiff
path: root/engines/cruise/volume.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/cruise/volume.cpp')
-rw-r--r--engines/cruise/volume.cpp361
1 files changed, 157 insertions, 204 deletions
diff --git a/engines/cruise/volume.cpp b/engines/cruise/volume.cpp
index ef877d6026..a31178a0cd 100644
--- a/engines/cruise/volume.cpp
+++ b/engines/cruise/volume.cpp
@@ -26,77 +26,72 @@
namespace Cruise {
-FILE* PAL_fileHandle = NULL;
-uint8* PAL_ptr = NULL;
+FILE *PAL_fileHandle = NULL;
+uint8 *PAL_ptr = NULL;
int16 numLoadedPal;
int16 fileData2;
-void loadPal(volumeDataStruct* entry)
-{
- char name[20];
+void loadPal(volumeDataStruct *entry) {
+ char name[20];
return;
- if(PAL_fileHandle)
- {
- fclose(PAL_fileHandle);
- }
+ if (PAL_fileHandle) {
+ fclose(PAL_fileHandle);
+ }
+
+ removeExtention(entry->ident, name);
+ strcat(name, ".PAL");
- removeExtention(entry->ident, name);
- strcat(name,".PAL");
-
- PAL_fileHandle = fopen(name,"rb");
+ PAL_fileHandle = fopen(name, "rb");
- fread(&numLoadedPal, 2, 1, PAL_fileHandle);
- fread(&fileData2, 2, 1, PAL_fileHandle);
+ fread(&numLoadedPal, 2, 1, PAL_fileHandle);
+ fread(&fileData2, 2, 1, PAL_fileHandle);
- flipShort(&numLoadedPal);
- flipShort(&fileData2);
+ flipShort(&numLoadedPal);
+ flipShort(&fileData2);
- PAL_ptr = (uint8*)malloc(numLoadedPal*fileData2);
+ PAL_ptr = (uint8 *) malloc(numLoadedPal * fileData2);
}
-int getVolumeDataEntry(volumeDataStruct* entry)
-{
+int getVolumeDataEntry(volumeDataStruct *entry) {
char buffer[256];
int i;
volumeNumEntry = 0;
volumeNumberOfEntry = 0;
- if(currentVolumeFile.isOpen())
- {
+ if (currentVolumeFile.isOpen()) {
freeDisk();
}
askDisk(-1);
- strcpyuint8(buffer,entry->ident);
+ strcpyuint8(buffer, entry->ident);
currentVolumeFile.open(buffer);
- if(!currentVolumeFile.isOpen())
- {
- return(-14);
+ if (!currentVolumeFile.isOpen()) {
+ return (-14);
}
changeCursor(1);
- currentVolumeFile.read(&volumeNumberOfEntry,2);
- currentVolumeFile.read(&volumeSizeOfEntry,2);
+ currentVolumeFile.read(&volumeNumberOfEntry, 2);
+ currentVolumeFile.read(&volumeSizeOfEntry, 2);
flipShort(&volumeNumberOfEntry);
flipShort(&volumeSizeOfEntry);
volumeNumEntry = volumeNumberOfEntry;
- assert(volumeSizeOfEntry == 14+4+4+4+4);
+ assert(volumeSizeOfEntry == 14 + 4 + 4 + 4 + 4);
- volumePtrToFileDescriptor = (fileEntry*)mallocAndZero(sizeof(fileEntry) * volumeNumEntry);
+ volumePtrToFileDescriptor =
+ (fileEntry *) mallocAndZero(sizeof(fileEntry) * volumeNumEntry);
- for(i=0;i<volumeNumEntry;i++)
- {
+ for (i = 0; i < volumeNumEntry; i++) {
volumePtrToFileDescriptor[i].name[0] = 0;
volumePtrToFileDescriptor[i].offset = 0;
volumePtrToFileDescriptor[i].size = 0;
@@ -104,177 +99,153 @@ int getVolumeDataEntry(volumeDataStruct* entry)
volumePtrToFileDescriptor[i].unk3 = 0;
}
- for(i=0;i<volumeNumEntry;i++)
- {
+ for (i = 0; i < volumeNumEntry; i++) {
currentVolumeFile.read(&volumePtrToFileDescriptor[i].name, 14);
- currentVolumeFile.read(&volumePtrToFileDescriptor[i].offset, 4);
+ currentVolumeFile.read(&volumePtrToFileDescriptor[i].offset,
+ 4);
currentVolumeFile.read(&volumePtrToFileDescriptor[i].size, 4);
- currentVolumeFile.read(&volumePtrToFileDescriptor[i].extSize, 4);
+ currentVolumeFile.read(&volumePtrToFileDescriptor[i].extSize,
+ 4);
currentVolumeFile.read(&volumePtrToFileDescriptor[i].unk3, 4);
}
- for(i=0;i<volumeNumEntry;i++)
- {
+ for (i = 0; i < volumeNumEntry; i++) {
flipLong(&volumePtrToFileDescriptor[i].offset);
flipLong(&volumePtrToFileDescriptor[i].size);
flipLong(&volumePtrToFileDescriptor[i].extSize);
}
loadPal(entry);
-
+
return 0;
}
-int searchFileInVolCnf(uint8* fileName,int32 diskNumber)
-{
+int searchFileInVolCnf(uint8 *fileName, int32 diskNumber) {
int foundDisk = -1;
int i;
- for(i=0;i<numOfDisks;i++)
- {
- if(volumeData[i].diskNumber == diskNumber)
- {
+ for (i = 0; i < numOfDisks; i++) {
+ if (volumeData[i].diskNumber == diskNumber) {
int j;
int numOfEntry = volumeData[i].size / 13;
- for(j=0;j<numOfEntry;j++)
- {
- if(!strcmpuint8(volumeData[i].ptr[j].name,fileName))
- {
- return(i);
+ for (j = 0; j < numOfEntry; j++) {
+ if (!strcmpuint8(volumeData[i].ptr[j].name,
+ fileName)) {
+ return (i);
}
}
}
}
- return(foundDisk);
+ return (foundDisk);
}
-int32 findFileInDisksSub1(uint8* fileName)
-{
+int32 findFileInDisksSub1(uint8 *fileName) {
int foundDisk = -1;
int i;
- for(i=0;i<numOfDisks;i++)
- {
+ for (i = 0; i < numOfDisks; i++) {
int j;
int numOfEntry = volumeData[i].size / 13;
- for(j=0;j<numOfEntry;j++)
- {
- if(!strcmpuint8(volumeData[i].ptr[j].name,fileName))
- {
- return(i);
+ for (j = 0; j < numOfEntry; j++) {
+ if (!strcmpuint8(volumeData[i].ptr[j].name, fileName)) {
+ return (i);
}
}
}
- return(foundDisk);
+ return (foundDisk);
}
-void strToUpper(uint8* fileName)
-{
+void strToUpper(uint8 *fileName) {
char character;
- do
- {
+ do {
character = *fileName;
- if(character>='a' && character<='z')
- {
- character&=0xDF;
+ if (character >= 'a' && character <= 'z') {
+ character &= 0xDF;
*fileName = character;
}
fileName++;
- }while(character);
+ } while (character);
}
-int16 fileExist(uint8* fileName)
-{
- FILE* fHandle;
+int16 fileExist(uint8 *fileName) {
+ FILE *fHandle;
- fHandle = fopenuint8(fileName,"rb");
+ fHandle = fopenuint8(fileName, "rb");
- if(fHandle)
- {
+ if (fHandle) {
fclose(fHandle);
- return(0);
+ return (0);
}
-
- return(1);
+
+ return (1);
}
-void freeDisk(void)
-{
- if(currentVolumeFile.isOpen())
- {
+void freeDisk(void) {
+ if (currentVolumeFile.isOpen()) {
currentVolumeFile.close();
free(volumePtrToFileDescriptor);
}
/* TODO
- if(PAL_fileHandle)
- {
- freeAllDataPtr();
- }
- */
+ * if(PAL_fileHandle)
+ * {
+ * freeAllDataPtr();
+ * }
+ */
}
-int16 findFileInList(uint8* fileName)
-{
+int16 findFileInList(uint8 *fileName) {
int i;
-
- if(!currentVolumeFile.isOpen())
- {
- return(-1);
+
+ if (!currentVolumeFile.isOpen()) {
+ return (-1);
}
strToUpper(fileName);
- if(volumeNumEntry<=0)
- {
- return(-1);
+ if (volumeNumEntry <= 0) {
+ return (-1);
}
- for(i=0;i<volumeNumEntry;i++)
- {
- if(!strcmpuint8(volumePtrToFileDescriptor[i].name,fileName))
- {
- return(i);
+ for (i = 0; i < volumeNumEntry; i++) {
+ if (!strcmpuint8(volumePtrToFileDescriptor[i].name, fileName)) {
+ return (i);
}
}
- return(-1);
+ return (-1);
}
-void askDisk(int16 discNumber)
-{
+void askDisk(int16 discNumber) {
char diskNumberString[256];
uint8 fileName[256];
uint8 string[256];
char messageDrawn = 0;
- if(discNumber != -1)
- {
+ if (discNumber != -1) {
currentDiskNumber = discNumber;
}
-
// skip drive selection stuff
- strcpyuint8(fileName,"VOL.");
- sprintf(diskNumberString,"%d",currentDiskNumber);
- strcatuint8(fileName,diskNumberString);
+ strcpyuint8(fileName, "VOL.");
+ sprintf(diskNumberString, "%d", currentDiskNumber);
+ strcatuint8(fileName, diskNumberString);
- strcpyuint8(string,"INSERER LE DISQUE ");
- strcatuint8(string,diskNumberString);
- strcatuint8(string," EN ");
+ strcpyuint8(string, "INSERER LE DISQUE ");
+ strcatuint8(string, diskNumberString);
+ strcatuint8(string, " EN ");
-// while(fileExist(fileName))
+// while(fileExist(fileName))
{
- if(!messageDrawn)
- {
+ if (!messageDrawn) {
drawMsgString(string);
messageDrawn = 1;
}
@@ -283,20 +254,15 @@ void askDisk(int16 discNumber)
changeCursor(currentCursor);
}
-
-
-int16 findFileInDisks(uint8* fileName)
-{
+int16 findFileInDisks(uint8 *fileName) {
int disk;
int fileIdx;
-
+
strToUpper(fileName);
- if(!volumeDataLoaded)
- {
+ if (!volumeDataLoaded) {
printf("CNF wasn't loaded, reading now...\n");
- if(currentVolumeFile.isOpen())
- {
+ if (currentVolumeFile.isOpen()) {
askDisk(-1);
freeDisk();
}
@@ -305,28 +271,24 @@ int16 findFileInDisks(uint8* fileName)
readVolCnf();
}
- if(currentVolumeFile.isOpen())
- {
+ if (currentVolumeFile.isOpen()) {
askDisk(-1);
}
fileIdx = findFileInList(fileName);
- if(fileIdx>=0)
- {
- return(fileIdx);
+ if (fileIdx >= 0) {
+ return (fileIdx);
}
- disk = searchFileInVolCnf(fileName,currentDiskNumber);
+ disk = searchFileInVolCnf(fileName, currentDiskNumber);
- if(disk>=0)
- {
+ if (disk >= 0) {
int temp;
printf("File found on disk %d\n", disk);
-
- if(currentVolumeFile.isOpen())
- {
+
+ if (currentVolumeFile.isOpen()) {
askDisk(-1);
}
@@ -338,69 +300,61 @@ int16 findFileInDisks(uint8* fileName)
temp = findFileInList(fileName);
- if(temp>=0)
- return(temp);
+ if (temp >= 0)
+ return (temp);
- return(-1);
+ return (-1);
- }
- else
- {
+ } else {
int temp;
temp = findFileInDisksSub1(fileName);
- if(temp>=0)
- {
+ if (temp >= 0) {
int temp2;
-
+
askDisk(volumeData[temp].diskNumber);
getVolumeDataEntry(&volumeData[temp]);
temp2 = findFileInList(fileName);
- if(temp2>=0)
- return(temp2);
+ if (temp2 >= 0)
+ return (temp2);
}
-
- return(-1);
+ return (-1);
}
}
-int16 readVolCnf(void)
-{
+int16 readVolCnf(void) {
int i;
Common::File fileHandle;
short int sizeHEntry;
volumeDataLoaded = 0;
- for(i=0;i<20;i++)
- {
+ for (i = 0; i < 20; i++) {
volumeData[i].ident[0] = 0;
volumeData[i].ptr = NULL;
- volumeData[i].diskNumber = i+1;
+ volumeData[i].diskNumber = i + 1;
volumeData[i].size = 0;
}
fileHandle.open("VOL.CNF");
- if(!fileHandle.isOpen())
- {
- return(0);
+ if (!fileHandle.isOpen()) {
+ return (0);
}
- fileHandle.read(&numOfDisks,2);
+ fileHandle.read(&numOfDisks, 2);
flipShort(&numOfDisks);
- fileHandle.read(&sizeHEntry,2);
- flipShort(&sizeHEntry); // size of one header entry - 20 bytes
+ fileHandle.read(&sizeHEntry, 2);
+ flipShort(&sizeHEntry); // size of one header entry - 20 bytes
- for(i=0;i<numOfDisks;i++)
- {
- // fread(&volumeData[i],20,1,fileHandle);
+ for (i = 0; i < numOfDisks; i++) {
+ // fread(&volumeData[i],20,1,fileHandle);
fileHandle.read(&volumeData[i].ident, 10);
fileHandle.read(&volumeData[i].ptr, 4);
fileHandle.read(&volumeData[i].diskNumber, 2);
@@ -411,24 +365,22 @@ int16 readVolCnf(void)
flipLong(&volumeData[i].size);
}
- for(i=0;i<numOfDisks;i++)
- {
- fileName* ptr;
-
- fileHandle.read(&volumeData[i].size,4);
+ for (i = 0; i < numOfDisks; i++) {
+ fileName *ptr;
+
+ fileHandle.read(&volumeData[i].size, 4);
flipLong(&volumeData[i].size);
- ptr = (fileName*)mallocAndZero(volumeData[i].size);
+ ptr = (fileName *) mallocAndZero(volumeData[i].size);
volumeData[i].ptr = ptr;
- if(!ptr)
- {
+ if (!ptr) {
fileHandle.close();
- return(-2);
+ return (-2);
}
- fileHandle.read(ptr,volumeData[i].size);
+ fileHandle.read(ptr, volumeData[i].size);
}
fileHandle.close();
@@ -438,31 +390,29 @@ int16 readVolCnf(void)
//#define dumpResources
#ifdef dumpResources
- for(i=0;i<numOfDisks;i++)
- {
+ for (i = 0; i < numOfDisks; i++) {
int j;
char nameBuffer[256];
- fileEntry* buffer;
+ fileEntry *buffer;
- sprintf(nameBuffer,"D%d.",i+1);
+ sprintf(nameBuffer, "D%d.", i + 1);
- fileHandle = fopen(nameBuffer,"rb");
+ fileHandle = fopen(nameBuffer, "rb");
short int numEntry;
short int sizeEntry;
- fread(&numEntry,2,1,fileHandle);
- fread(&sizeEntry,2,1,fileHandle);
+ fread(&numEntry, 2, 1, fileHandle);
+ fread(&sizeEntry, 2, 1, fileHandle);
flipShort(&numEntry);
flipShort(&sizeEntry);
- buffer = (fileEntry*)mallocAndZero(numEntry*sizeEntry);
+ buffer = (fileEntry *) mallocAndZero(numEntry * sizeEntry);
- fread(buffer,numEntry*sizeEntry,1,fileHandle);
+ fread(buffer, numEntry * sizeEntry, 1, fileHandle);
- for(j=0;j<numEntry;j++)
- {
+ for (j = 0; j < numEntry; j++) {
flipLong(&buffer[j].offset);
flipLong(&buffer[j].size);
flipLong(&buffer[j].unk2);
@@ -470,29 +420,33 @@ int16 readVolCnf(void)
fseek(fileHandle, buffer[j].offset, SEEK_SET);
- char* bufferLocal;
- bufferLocal = (char*)mallocAndZero(buffer[j].size);
+ char *bufferLocal;
+ bufferLocal = (char *)mallocAndZero(buffer[j].size);
- fread(bufferLocal,buffer[j].size,1,fileHandle);
+ fread(bufferLocal, buffer[j].size, 1, fileHandle);
char nameBuffer[256];
- sprintf(nameBuffer,"D%d.dmp/%s",i+1,buffer[j].name);
+ sprintf(nameBuffer, "D%d.dmp/%s", i + 1,
+ buffer[j].name);
- if(buffer[j].size == buffer[j].unk2)
- {
- FILE* fOut = fopen(nameBuffer,"wb+");
- fwrite(bufferLocal,buffer[j].size,1,fOut);
+ if (buffer[j].size == buffer[j].unk2) {
+ FILE *fOut = fopen(nameBuffer, "wb+");
+ fwrite(bufferLocal, buffer[j].size, 1, fOut);
fclose(fOut);
- }
- else
- {
- char* uncompBuffer = (char*)mallocAndZero(buffer[j].unk2+500);
-
- decomp((uint8*)bufferLocal+buffer[j].size-4,(uint8*)uncompBuffer+buffer[j].unk2+500,buffer[j].unk2);
-
- FILE* fOut = fopen(nameBuffer,"wb+");
- fwrite(uncompBuffer+500,buffer[j].unk2,1,fOut);
+ } else {
+ char *uncompBuffer =
+ (char *)mallocAndZero(buffer[j].unk2 +
+ 500);
+
+ decomp((uint8 *) bufferLocal + buffer[j].size -
+ 4,
+ (uint8 *) uncompBuffer + buffer[j].unk2 +
+ 500, buffer[j].unk2);
+
+ FILE *fOut = fopen(nameBuffer, "wb+");
+ fwrite(uncompBuffer + 500, buffer[j].unk2, 1,
+ fOut);
fclose(fOut);
//free(uncompBuffer);
@@ -505,13 +459,12 @@ int16 readVolCnf(void)
#endif
- return(1);
+ return (1);
}
///////////////////////////::
-void drawMsgString(uint8* string)
-{
+void drawMsgString(uint8 *string) {
//printf("%s\n",string);
}