aboutsummaryrefslogtreecommitdiff
path: root/engines/cruise/saveload.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/cruise/saveload.cpp')
-rw-r--r--engines/cruise/saveload.cpp748
1 files changed, 359 insertions, 389 deletions
diff --git a/engines/cruise/saveload.cpp b/engines/cruise/saveload.cpp
index fc5c07bca4..a903a293d3 100644
--- a/engines/cruise/saveload.cpp
+++ b/engines/cruise/saveload.cpp
@@ -26,418 +26,388 @@
namespace Cruise {
-void loadSavegameDataSub1(FILE* fileHandle)
-{
- int i;
-
- for(i=1;i<numOfLoadedOverlay;i++)
- {
- filesData[i].field_4 = NULL;
- filesData[i].field_0 = NULL;
- filesData2[i].field_0 = 0;
-
- if(overlayTable[i].alreadyLoaded)
- {
- fread(&filesData2[i].field_0,2,1,fileHandle);
-
- if(filesData2[i].field_0)
- {
- filesData[i].field_0 = (uint8*)mallocAndZero(filesData2[i].field_0);
- if(filesData[i].field_0)
- {
- fread(filesData[i].field_0,filesData2[i].field_0,1,fileHandle);
- }
- }
-
- fread(&filesData2[i].field_2,2,1,fileHandle);
-
- if(filesData2[i].field_2)
- {
- filesData[i].field_4 = (uint8*)mallocAndZero(filesData2[i].field_2*12);
- if(filesData[i].field_4)
- {
- fread(filesData[i].field_4,filesData2[i].field_2*12,1,fileHandle);
- }
- }
- }
- }
+void loadSavegameDataSub1(FILE *fileHandle) {
+ int i;
+
+ for (i = 1; i < numOfLoadedOverlay; i++) {
+ filesData[i].field_4 = NULL;
+ filesData[i].field_0 = NULL;
+ filesData2[i].field_0 = 0;
+
+ if (overlayTable[i].alreadyLoaded) {
+ fread(&filesData2[i].field_0, 2, 1, fileHandle);
+
+ if (filesData2[i].field_0) {
+ filesData[i].field_0 =
+ (uint8 *) mallocAndZero(filesData2[i].
+ field_0);
+ if (filesData[i].field_0) {
+ fread(filesData[i].field_0,
+ filesData2[i].field_0, 1,
+ fileHandle);
+ }
+ }
+
+ fread(&filesData2[i].field_2, 2, 1, fileHandle);
+
+ if (filesData2[i].field_2) {
+ filesData[i].field_4 =
+ (uint8 *) mallocAndZero(filesData2[i].
+ field_2 * 12);
+ if (filesData[i].field_4) {
+ fread(filesData[i].field_4,
+ filesData2[i].field_2 * 12, 1,
+ fileHandle);
+ }
+ }
+ }
+ }
}
-void loadScriptsFromSave(FILE* fileHandle,scriptInstanceStruct* entry)
-{
- short int numScripts;
- int i;
+void loadScriptsFromSave(FILE *fileHandle, scriptInstanceStruct *entry) {
+ short int numScripts;
+ int i;
- fread(&numScripts,2,1,fileHandle);
+ fread(&numScripts, 2, 1, fileHandle);
- for(i=0;i<numScripts;i++)
- {
- scriptInstanceStruct* ptr = (scriptInstanceStruct*)mallocAndZero(sizeof(scriptInstanceStruct));
+ for (i = 0; i < numScripts; i++) {
+ scriptInstanceStruct *ptr =
+ (scriptInstanceStruct *)
+ mallocAndZero(sizeof(scriptInstanceStruct));
- fread(ptr,0x1C,1,fileHandle); // use 0x1C as our scriptInstanceStruct is bigger than in original because of cross platform problems
+ fread(ptr, 0x1C, 1, fileHandle); // use 0x1C as our scriptInstanceStruct is bigger than in original because of cross platform problems
- fread(&ptr->varA,2,1,fileHandle);
+ fread(&ptr->varA, 2, 1, fileHandle);
- if(ptr->varA)
- {
- ptr->var6 = (uint8*)mallocAndZero(ptr->varA);
+ if (ptr->varA) {
+ ptr->var6 = (uint8 *) mallocAndZero(ptr->varA);
- fread(ptr->var6,ptr->varA,1,fileHandle);
- }
+ fread(ptr->var6, ptr->varA, 1, fileHandle);
+ }
+ /////////
+ ptr->bitMask = *((int16 *) ptr + 1);
+ /////////
- /////////
- ptr->bitMask = *((int16*)ptr+1);
- /////////
+ ptr->nextScriptPtr = 0;
- ptr->nextScriptPtr = 0;
-
- entry->nextScriptPtr = ptr;
- entry = ptr;
- }
+ entry->nextScriptPtr = ptr;
+ entry = ptr;
+ }
}
-void loadSavegameActor(FILE* fileHandle)
-{
- short int numEntry;
- actorStruct* ptr;
- int i;
+void loadSavegameActor(FILE *fileHandle) {
+ short int numEntry;
+ actorStruct *ptr;
+ int i;
- fread(&numEntry,2,1,fileHandle);
+ fread(&numEntry, 2, 1, fileHandle);
- ptr = &actorHead;
+ ptr = &actorHead;
- for(i=0;i<numEntry;i++)
- {
- actorStruct* current = (actorStruct*)mallocAndZero(sizeof(actorStruct));
- fseek(fileHandle, 4, SEEK_CUR);
- fread(current,0x26,1,fileHandle);
+ for (i = 0; i < numEntry; i++) {
+ actorStruct *current =
+ (actorStruct *) mallocAndZero(sizeof(actorStruct));
+ fseek(fileHandle, 4, SEEK_CUR);
+ fread(current, 0x26, 1, fileHandle);
- current->next = NULL;
- ptr->next = current;
- current->prev = actorHead.prev;
- actorHead.prev = current;
- ptr = current->next;
- }
+ current->next = NULL;
+ ptr->next = current;
+ current->prev = actorHead.prev;
+ actorHead.prev = current;
+ ptr = current->next;
+ }
}
-void loadSavegameDataSub5(FILE* fileHandle)
-{
- if(var1)
- {
- fread(&saveVar1,1,1,fileHandle);
-
- if(saveVar1)
- {
- fread(saveVar2,saveVar1,1,fileHandle);
- }
- }
- else
- {
- fread(&saveVar1,1,1,fileHandle);
- }
+void loadSavegameDataSub5(FILE *fileHandle) {
+ if (var1) {
+ fread(&saveVar1, 1, 1, fileHandle);
-}
+ if (saveVar1) {
+ fread(saveVar2, saveVar1, 1, fileHandle);
+ }
+ } else {
+ fread(&saveVar1, 1, 1, fileHandle);
+ }
-void loadSavegameDataSub6(FILE* fileHandle)
-{
- int32 var;
-
- fread(&var,4,1,fileHandle);
- flipLong(&var);
-
- if(var)
- {
- int i;
-
- fread(&numberOfWalkboxes, 2, 1, fileHandle);
-
- if(numberOfWalkboxes)
- {
- fread(walkboxType, numberOfWalkboxes * 2, 1, fileHandle);
- fread(walkboxType, numberOfWalkboxes * 2, 1, fileHandle);
- }
-
- for(i=0;i<10;i++)
- {
- fread(&persoTable[i],4,1,fileHandle);
-
- if(persoTable[i])
- {
- assert(sizeof(persoStruct) == 0x6AA);
- persoTable[i] = (persoStruct*)mallocAndZero(sizeof(persoStruct));
- fread(persoTable[i],0x6AA,1,fileHandle);
- }
- }
- }
}
+void loadSavegameDataSub6(FILE *fileHandle) {
+ int32 var;
+
+ fread(&var, 4, 1, fileHandle);
+ flipLong(&var);
+
+ if (var) {
+ int i;
+
+ fread(&numberOfWalkboxes, 2, 1, fileHandle);
+
+ if (numberOfWalkboxes) {
+ fread(walkboxType, numberOfWalkboxes * 2, 1,
+ fileHandle);
+ fread(walkboxType, numberOfWalkboxes * 2, 1,
+ fileHandle);
+ }
+
+ for (i = 0; i < 10; i++) {
+ fread(&persoTable[i], 4, 1, fileHandle);
+
+ if (persoTable[i]) {
+ assert(sizeof(persoStruct) == 0x6AA);
+ persoTable[i] =
+ (persoStruct *)
+ mallocAndZero(sizeof(persoStruct));
+ fread(persoTable[i], 0x6AA, 1, fileHandle);
+ }
+ }
+ }
+}
-int loadSavegameData(int saveGameIdx)
-{
- char buffer[256];
- FILE* fileHandle;
- char saveIdentBuffer[6];
- int j;
- int initVar1Save;
- cellStruct* currentcellHead;
-
- sprintf(buffer,"CR.%d",saveGameIdx);
-
- fileHandle = fopen(buffer,"rb");
-
- if(!fileHandle)
- {
- printInfoBlackBox("Sauvegarde non trouvée...");
- waitForPlayerInput();
- return(-1);
- }
-
- printInfoBlackBox("Chargement en cours...");
-
- fread(saveIdentBuffer,6,1,fileHandle);
-
- if(strcmp(saveIdentBuffer,"SAVPC"))
- {
- fclose(fileHandle);
- return(-1);
- }
-
- //initVars();
-
- fread(&var1,2,1,fileHandle);
- fread(&var2,2,1,fileHandle);
- fread(&var3,2,1,fileHandle);
- fread(&var4,2,1,fileHandle);
- fread(&userEnabled,2,1,fileHandle);
- fread(&var6,2,1,fileHandle);
- fread(&var7,2,1,fileHandle);
- fread(&var8,2,1,fileHandle);
- fread(&userDelay,2,1,fileHandle);
- fread(&sysKey,2,1,fileHandle);
- fread(&var11,2,1,fileHandle);
- fread(&var12,2,1,fileHandle);
- fread(&var13,2,1,fileHandle);
- fread(&var14,2,1,fileHandle);
- fread(&affichePasMenuJoueur,2,1,fileHandle);
- fread(&var20,2,1,fileHandle);
- fread(&var22,2,1,fileHandle);
- fread(&var23,2,1,fileHandle);
- fread(&var24,2,1,fileHandle);
- fread(&automaticMode,2,1,fileHandle);
-
- // video param (not loaded in EGA mode)
-
- fread(&video4,2,1,fileHandle);
- fread(&video2,2,1,fileHandle);
- fread(&video3,2,1,fileHandle);
- fread(&colorOfSelectedSaveDrive,2,1,fileHandle);
-
- //
-
- fread(&var30,2,1,fileHandle);
- fread(&var31,2,1,fileHandle);
- fread(&var34,2,1,fileHandle);
- fread(&var35,2,1,fileHandle);
- int16 bTemp;
- fread(&bTemp,2,1,fileHandle);
- animationStart = bTemp;
- fread(&currentActiveBackgroundPlane,2,1,fileHandle);
- fread(&initVar3,2,1,fileHandle);
- fread(&initVar2,2,1,fileHandle);
- fread(&var22,2,1,fileHandle);
- fread(&main5,2,1,fileHandle);
- fread(&numOfLoadedOverlay,2,1,fileHandle);
- fread(&setup1,2,1,fileHandle);
- fread(&fontFileIndex,2,1,fileHandle);
- fread(&currentActiveMenu,2,1,fileHandle);
- fread(&main7,2,1,fileHandle); // ok
- fread(&main17,2,1,fileHandle);
- fread(&main14,2,1,fileHandle);
- fread(&main8,2,1,fileHandle);
- fread(&var39,2,1,fileHandle);
- fread(&var42,2,1,fileHandle);
- fread(&var45,2,1,fileHandle);
- fread(&var46,2,1,fileHandle);
- fread(&var47,2,1,fileHandle);
- fread(&var48,2,1,fileHandle);
- fread(&flagCt,2,1,fileHandle);
- fread(&var41,2,1,fileHandle);
- fread(&entrerMenuJoueur,2,1,fileHandle);
-
- fread(var50,64,1,fileHandle);
- fread(var50,64,1,fileHandle); // Hu ? why 2 times ?
- fread(&systemStrings,sizeof(systemStrings),1,fileHandle); // ok
- fread(currentCtpName,40,1,fileHandle);
- fread(backgroundTable,120,1,fileHandle);
- fread(palette,256,2,fileHandle); // ok
- fread(initVar5,24,1,fileHandle);
- fread(globalVars,setup1*2,1,fileHandle);
- fread(filesDatabase,9766,1,fileHandle);
- fread(overlayTable,40*numOfLoadedOverlay,1,fileHandle); // ok
- fread(mediumVar,0x880,1,fileHandle);
-
- loadSavegameDataSub1(fileHandle);
- loadScriptsFromSave(fileHandle,&scriptHandle2);
- loadScriptsFromSave(fileHandle,&scriptHandle1);
-
- loadSavegameDataSub2(fileHandle);
- loadBackgroundIncrustFromSave(fileHandle);
- loadSavegameActor(fileHandle);
- loadSavegameDataSub5(fileHandle);
- loadSavegameDataSub6(fileHandle);
-
- fclose(fileHandle); // finished with loading !!!!! Yatta !
-
- for(j=0;j<64;j++)
- {
- mediumVar[j].ptr=NULL;
- }
-
- for(j=1;j<numOfLoadedOverlay;j++)
- {
- if(overlayTable[j].alreadyLoaded)
- {
- overlayTable[j].alreadyLoaded = 0;
- loadOverlay((uint8*)overlayTable[j].overlayName);
-
- if(overlayTable[j].alreadyLoaded)
- {
- ovlDataStruct* ovlData = overlayTable[j].ovlData;
-
- if(filesData[j].field_0)
- {
- if(ovlData->data4Ptr)
- {
- free(ovlData->data4Ptr);
- }
-
- ovlData->data4Ptr = (uint8*)filesData[j].field_0;
- ovlData->sizeOfData4 = filesData2[j].field_0;
- }
-
- if(filesData[j].field_4)
- {
- if(ovlData->objData2WorkTable)
- {
- free(ovlData->objData2WorkTable);
- }
-
- ovlData->objData2WorkTable = (objectParams*)filesData[j].field_4; // TODO: fix !
- ovlData->size9 = filesData2[j].field_2;
- }
-
- }
- }
- }
-
- updateAllScriptsImports();
-
- saveVar6[0] = 0;
-
- initVar1Save = initVar1;
-
- for(j=0;j<257;j++)
- {
- if(filesDatabase[j].subData.ptr)
- {
- int i;
- int k;
-
- for(i=j+1;i<257;i++)
- {
- if(filesDatabase[i].subData.ptr)
- {
- if(strcmpuint8(filesDatabase[j].subData.name,filesDatabase[i].subData.name))
- {
- break;
- }
- }
- else
- {
- break;
- }
- }
-
- for(k=j;k<i;k++)
- {
- if(filesDatabase[k].subData.ptr2)
- initVar1 = 0;
-
- filesDatabase[k].subData.ptr = NULL;
- filesDatabase[k].subData.ptr2 = NULL;
- }
-
- if(i<2)
- {
- printf("Unsupported mono file load!\n");
- exit(1);
- //loadFileMode1(filesDatabase[j].subData.name,filesDatabase[j].subData.var4);
- }
- else
- {
- loadFileMode2((uint8*)filesDatabase[j].subData.name,filesDatabase[j].subData.index, j, i-j);
- j = i-1;
- }
-
- initVar1 = initVar1Save;
- }
- }
-
- saveVar6[0] = 0;
-
- currentcellHead = cellHead.next;
-
- while(currentcellHead)
- {
- if(currentcellHead->type == 5)
- {
- uint8* ptr = mainProc14(currentcellHead->overlay,currentcellHead->idx);
-
- ASSERT(0);
-
- if(ptr)
- {
- ASSERT(0);
- //*(int16*)(currentcellHead->datas+0x2E) = getSprite(ptr,*(int16*)(currentcellHead->datas+0xE));
- }
- else
- {
- //*(int16*)(currentcellHead->datas+0x2E) = 0;
- }
- }
-
- currentcellHead = currentcellHead->next;
- }
-
- //TODO: here, restart music
-
- if(strlen((char*)currentCtpName))
- {
- ctpVar1 = 1;
- loadCtp(currentCtpName);
- ctpVar1 = 0;
- }
-
- //prepareFadeOut();
- //gfxModuleData.gfxFunction8();
-
- for(j=0;j<8;j++)
- {
- if(strlen((char*)backgroundTable[j].name))
- {
- loadBackground(backgroundTable[j].name,j);
- }
- }
-
- regenerateBackgroundIncrust(&backgroundIncrustHead);
-
- // to finish
-
- changeCursor(0);
- mainDraw(1);
- flipScreen();
-
- return(0);
+int loadSavegameData(int saveGameIdx) {
+ char buffer[256];
+ FILE *fileHandle;
+ char saveIdentBuffer[6];
+ int j;
+ int initVar1Save;
+ cellStruct *currentcellHead;
+
+ sprintf(buffer, "CR.%d", saveGameIdx);
+
+ fileHandle = fopen(buffer, "rb");
+
+ if (!fileHandle) {
+ printInfoBlackBox("Sauvegarde non trouvée...");
+ waitForPlayerInput();
+ return (-1);
+ }
+
+ printInfoBlackBox("Chargement en cours...");
+
+ fread(saveIdentBuffer, 6, 1, fileHandle);
+
+ if (strcmp(saveIdentBuffer, "SAVPC")) {
+ fclose(fileHandle);
+ return (-1);
+ }
+ //initVars();
+
+ fread(&var1, 2, 1, fileHandle);
+ fread(&var2, 2, 1, fileHandle);
+ fread(&var3, 2, 1, fileHandle);
+ fread(&var4, 2, 1, fileHandle);
+ fread(&userEnabled, 2, 1, fileHandle);
+ fread(&var6, 2, 1, fileHandle);
+ fread(&var7, 2, 1, fileHandle);
+ fread(&var8, 2, 1, fileHandle);
+ fread(&userDelay, 2, 1, fileHandle);
+ fread(&sysKey, 2, 1, fileHandle);
+ fread(&var11, 2, 1, fileHandle);
+ fread(&var12, 2, 1, fileHandle);
+ fread(&var13, 2, 1, fileHandle);
+ fread(&var14, 2, 1, fileHandle);
+ fread(&affichePasMenuJoueur, 2, 1, fileHandle);
+ fread(&var20, 2, 1, fileHandle);
+ fread(&var22, 2, 1, fileHandle);
+ fread(&var23, 2, 1, fileHandle);
+ fread(&var24, 2, 1, fileHandle);
+ fread(&automaticMode, 2, 1, fileHandle);
+
+ // video param (not loaded in EGA mode)
+
+ fread(&video4, 2, 1, fileHandle);
+ fread(&video2, 2, 1, fileHandle);
+ fread(&video3, 2, 1, fileHandle);
+ fread(&colorOfSelectedSaveDrive, 2, 1, fileHandle);
+
+ //
+
+ fread(&var30, 2, 1, fileHandle);
+ fread(&var31, 2, 1, fileHandle);
+ fread(&var34, 2, 1, fileHandle);
+ fread(&var35, 2, 1, fileHandle);
+ int16 bTemp;
+ fread(&bTemp, 2, 1, fileHandle);
+ animationStart = bTemp;
+ fread(&currentActiveBackgroundPlane, 2, 1, fileHandle);
+ fread(&initVar3, 2, 1, fileHandle);
+ fread(&initVar2, 2, 1, fileHandle);
+ fread(&var22, 2, 1, fileHandle);
+ fread(&main5, 2, 1, fileHandle);
+ fread(&numOfLoadedOverlay, 2, 1, fileHandle);
+ fread(&setup1, 2, 1, fileHandle);
+ fread(&fontFileIndex, 2, 1, fileHandle);
+ fread(&currentActiveMenu, 2, 1, fileHandle);
+ fread(&main7, 2, 1, fileHandle); // ok
+ fread(&main17, 2, 1, fileHandle);
+ fread(&main14, 2, 1, fileHandle);
+ fread(&main8, 2, 1, fileHandle);
+ fread(&var39, 2, 1, fileHandle);
+ fread(&var42, 2, 1, fileHandle);
+ fread(&var45, 2, 1, fileHandle);
+ fread(&var46, 2, 1, fileHandle);
+ fread(&var47, 2, 1, fileHandle);
+ fread(&var48, 2, 1, fileHandle);
+ fread(&flagCt, 2, 1, fileHandle);
+ fread(&var41, 2, 1, fileHandle);
+ fread(&entrerMenuJoueur, 2, 1, fileHandle);
+
+ fread(var50, 64, 1, fileHandle);
+ fread(var50, 64, 1, fileHandle); // Hu ? why 2 times ?
+ fread(&systemStrings, sizeof(systemStrings), 1, fileHandle); // ok
+ fread(currentCtpName, 40, 1, fileHandle);
+ fread(backgroundTable, 120, 1, fileHandle);
+ fread(palette, 256, 2, fileHandle); // ok
+ fread(initVar5, 24, 1, fileHandle);
+ fread(globalVars, setup1 * 2, 1, fileHandle);
+ fread(filesDatabase, 9766, 1, fileHandle);
+ fread(overlayTable, 40 * numOfLoadedOverlay, 1, fileHandle); // ok
+ fread(mediumVar, 0x880, 1, fileHandle);
+
+ loadSavegameDataSub1(fileHandle);
+ loadScriptsFromSave(fileHandle, &scriptHandle2);
+ loadScriptsFromSave(fileHandle, &scriptHandle1);
+
+ loadSavegameDataSub2(fileHandle);
+ loadBackgroundIncrustFromSave(fileHandle);
+ loadSavegameActor(fileHandle);
+ loadSavegameDataSub5(fileHandle);
+ loadSavegameDataSub6(fileHandle);
+
+ fclose(fileHandle); // finished with loading !!!!! Yatta !
+
+ for (j = 0; j < 64; j++) {
+ mediumVar[j].ptr = NULL;
+ }
+
+ for (j = 1; j < numOfLoadedOverlay; j++) {
+ if (overlayTable[j].alreadyLoaded) {
+ overlayTable[j].alreadyLoaded = 0;
+ loadOverlay((uint8 *) overlayTable[j].overlayName);
+
+ if (overlayTable[j].alreadyLoaded) {
+ ovlDataStruct *ovlData =
+ overlayTable[j].ovlData;
+
+ if (filesData[j].field_0) {
+ if (ovlData->data4Ptr) {
+ free(ovlData->data4Ptr);
+ }
+
+ ovlData->data4Ptr =
+ (uint8 *) filesData[j].field_0;
+ ovlData->sizeOfData4 =
+ filesData2[j].field_0;
+ }
+
+ if (filesData[j].field_4) {
+ if (ovlData->objData2WorkTable) {
+ free(ovlData->
+ objData2WorkTable);
+ }
+
+ ovlData->objData2WorkTable = (objectParams *) filesData[j].field_4; // TODO: fix !
+ ovlData->size9 = filesData2[j].field_2;
+ }
+
+ }
+ }
+ }
+
+ updateAllScriptsImports();
+
+ saveVar6[0] = 0;
+
+ initVar1Save = initVar1;
+
+ for (j = 0; j < 257; j++) {
+ if (filesDatabase[j].subData.ptr) {
+ int i;
+ int k;
+
+ for (i = j + 1; i < 257; i++) {
+ if (filesDatabase[i].subData.ptr) {
+ if (strcmpuint8(filesDatabase[j].
+ subData.name,
+ filesDatabase[i].subData.
+ name)) {
+ break;
+ }
+ } else {
+ break;
+ }
+ }
+
+ for (k = j; k < i; k++) {
+ if (filesDatabase[k].subData.ptr2)
+ initVar1 = 0;
+
+ filesDatabase[k].subData.ptr = NULL;
+ filesDatabase[k].subData.ptr2 = NULL;
+ }
+
+ if (i < 2) {
+ printf("Unsupported mono file load!\n");
+ exit(1);
+ //loadFileMode1(filesDatabase[j].subData.name,filesDatabase[j].subData.var4);
+ } else {
+ loadFileMode2((uint8 *) filesDatabase[j].
+ subData.name,
+ filesDatabase[j].subData.index, j, i - j);
+ j = i - 1;
+ }
+
+ initVar1 = initVar1Save;
+ }
+ }
+
+ saveVar6[0] = 0;
+
+ currentcellHead = cellHead.next;
+
+ while (currentcellHead) {
+ if (currentcellHead->type == 5) {
+ uint8 *ptr =
+ mainProc14(currentcellHead->overlay,
+ currentcellHead->idx);
+
+ ASSERT(0);
+
+ if (ptr) {
+ ASSERT(0);
+ //*(int16*)(currentcellHead->datas+0x2E) = getSprite(ptr,*(int16*)(currentcellHead->datas+0xE));
+ } else {
+ //*(int16*)(currentcellHead->datas+0x2E) = 0;
+ }
+ }
+
+ currentcellHead = currentcellHead->next;
+ }
+
+ //TODO: here, restart music
+
+ if (strlen((char *)currentCtpName)) {
+ ctpVar1 = 1;
+ loadCtp(currentCtpName);
+ ctpVar1 = 0;
+ }
+ //prepareFadeOut();
+ //gfxModuleData.gfxFunction8();
+
+ for (j = 0; j < 8; j++) {
+ if (strlen((char *)backgroundTable[j].name)) {
+ loadBackground(backgroundTable[j].name, j);
+ }
+ }
+
+ regenerateBackgroundIncrust(&backgroundIncrustHead);
+
+ // to finish
+
+ changeCursor(0);
+ mainDraw(1);
+ flipScreen();
+
+ return (0);
}
} // End of namespace Cruise