Fix loading savegame from original interpreter
svn-id: r29901
This commit is contained in:
parent
550aea90ff
commit
aa62d6355a
22 changed files with 418 additions and 193 deletions
|
@ -46,10 +46,10 @@ int loadMEN(uint8 **ptr) {
|
||||||
if (!strcmp(localPtr, "MEN")) {
|
if (!strcmp(localPtr, "MEN")) {
|
||||||
localPtr += 4;
|
localPtr += 4;
|
||||||
|
|
||||||
video4 = *(localPtr++);
|
titleColor = *(localPtr++);
|
||||||
video3 = *(localPtr++);
|
selectColor = *(localPtr++);
|
||||||
video2 = *(localPtr++);
|
itemColor = *(localPtr++);
|
||||||
colorOfSelectedSaveDrive = *(localPtr++);
|
subColor = *(localPtr++);
|
||||||
|
|
||||||
*ptr = (uint8 *) localPtr;
|
*ptr = (uint8 *) localPtr;
|
||||||
|
|
||||||
|
|
|
@ -108,7 +108,7 @@ void CruiseEngine::initialize() {
|
||||||
|
|
||||||
// video init stuff
|
// video init stuff
|
||||||
|
|
||||||
loadSystemFont();
|
initSystem();
|
||||||
|
|
||||||
// another bit of video init
|
// another bit of video init
|
||||||
|
|
||||||
|
|
|
@ -63,7 +63,7 @@ void drawInfoStringSmallBlackBox(uint8 *string) {
|
||||||
gfxModuleData_gfxWaitVSync();
|
gfxModuleData_gfxWaitVSync();
|
||||||
drawBlackSolidBoxSmall();
|
drawBlackSolidBoxSmall();
|
||||||
|
|
||||||
drawString(10, 100, string, gfxModuleData.pPage10, video4, 300);
|
drawString(10, 100, string, gfxModuleData.pPage10, titleColor, 300);
|
||||||
|
|
||||||
gfxModuleData_flip();
|
gfxModuleData_flip();
|
||||||
|
|
||||||
|
@ -337,8 +337,8 @@ int loadFileSub1(uint8 **ptr, const char *name, uint8 *ptr2) {
|
||||||
uint8 *unpackedBuffer;
|
uint8 *unpackedBuffer;
|
||||||
|
|
||||||
for (i = 0; i < 64; i++) {
|
for (i = 0; i < 64; i++) {
|
||||||
if (mediumVar[i].ptr) {
|
if (preloadData[i].ptr) {
|
||||||
if (!strcmp(mediumVar[i].name, name)) {
|
if (!strcmp(preloadData[i].name, name)) {
|
||||||
printf("Unsupported code in loadFIleSub1 !\n");
|
printf("Unsupported code in loadFIleSub1 !\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
@ -951,7 +951,7 @@ bool createDialog(int objOvl, int objIdx, int x, int y) {
|
||||||
int color;
|
int color;
|
||||||
|
|
||||||
if(objectState2==-2)
|
if(objectState2==-2)
|
||||||
color = colorOfSelectedSaveDrive;
|
color = subColor;
|
||||||
else
|
else
|
||||||
color = -1;
|
color = -1;
|
||||||
|
|
||||||
|
@ -1078,11 +1078,8 @@ int processInventory(void) {
|
||||||
menuElementSubStruct *pMenuElementSub = getSelectedEntryInMenu(menuTable[1]);
|
menuElementSubStruct *pMenuElementSub = getSelectedEntryInMenu(menuTable[1]);
|
||||||
|
|
||||||
if (pMenuElementSub) {
|
if (pMenuElementSub) {
|
||||||
//int var2;
|
int var2 = pMenuElementSub->ovlIdx;
|
||||||
//int var4;
|
int var4 = pMenuElementSub->header;
|
||||||
|
|
||||||
var2 = pMenuElementSub->ovlIdx;
|
|
||||||
var4 = pMenuElementSub->header;
|
|
||||||
|
|
||||||
freeMenu(menuTable[1]);
|
freeMenu(menuTable[1]);
|
||||||
menuTable[1] = NULL;
|
menuTable[1] = NULL;
|
||||||
|
@ -1743,7 +1740,7 @@ void mainLoop(void) {
|
||||||
|
|
||||||
strcpy(currentOverlay, "");
|
strcpy(currentOverlay, "");
|
||||||
systemStrings.bootScriptName[0] = 0;
|
systemStrings.bootScriptName[0] = 0;
|
||||||
initVar4[0] = 0;
|
cmdLine[0] = 0;
|
||||||
currentActiveMenu = -1;
|
currentActiveMenu = -1;
|
||||||
autoMsg = -1;
|
autoMsg = -1;
|
||||||
linkedRelation = 0;
|
linkedRelation = 0;
|
||||||
|
@ -1755,9 +1752,6 @@ void mainLoop(void) {
|
||||||
|
|
||||||
initAllData();
|
initAllData();
|
||||||
|
|
||||||
// debug code: automaticaly load savegame 0 at startup
|
|
||||||
// loadSavegameData(0);
|
|
||||||
|
|
||||||
{
|
{
|
||||||
int playerDontAskQuit = 1;
|
int playerDontAskQuit = 1;
|
||||||
int quitValue2 = 1;
|
int quitValue2 = 1;
|
||||||
|
@ -1783,7 +1777,7 @@ void mainLoop(void) {
|
||||||
|
|
||||||
processAnimation();
|
processAnimation();
|
||||||
|
|
||||||
if (var0) {
|
if (remdo) {
|
||||||
// ASSERT(0);
|
// ASSERT(0);
|
||||||
/* main3 = 0;
|
/* main3 = 0;
|
||||||
* var24 = 0;
|
* var24 = 0;
|
||||||
|
@ -1792,17 +1786,17 @@ void mainLoop(void) {
|
||||||
* freeStuff2(); */
|
* freeStuff2(); */
|
||||||
}
|
}
|
||||||
|
|
||||||
if (initVar4[0]) {
|
if (cmdLine[0]) {
|
||||||
ASSERT(0);
|
ASSERT(0);
|
||||||
/* redrawStrings(0,&initVar4,8);
|
/* redrawStrings(0,&cmdLine,8);
|
||||||
|
|
||||||
waitForPlayerInput();
|
waitForPlayerInput();
|
||||||
|
|
||||||
initVar4 = 0; */
|
cmdLine = 0; */
|
||||||
}
|
}
|
||||||
|
|
||||||
if (affichePasMenuJoueur) {
|
if (displayOn) {
|
||||||
if (main5)
|
if (doFade)
|
||||||
fadeVar = 0;
|
fadeVar = 0;
|
||||||
|
|
||||||
/*if (fadeVar)
|
/*if (fadeVar)
|
||||||
|
@ -1940,7 +1934,7 @@ int oldmain(int argc, char *argv[]) {
|
||||||
|
|
||||||
// video init stuff
|
// video init stuff
|
||||||
|
|
||||||
loadSystemFont();
|
initSystem();
|
||||||
|
|
||||||
// another bit of video init
|
// another bit of video init
|
||||||
|
|
||||||
|
|
|
@ -80,6 +80,10 @@ namespace Cruise {
|
||||||
|
|
||||||
extern gfxEntryStruct* linkedMsgList;
|
extern gfxEntryStruct* linkedMsgList;
|
||||||
|
|
||||||
|
extern int buttonDown;
|
||||||
|
extern int selectDown;
|
||||||
|
extern int menuDown;
|
||||||
|
|
||||||
bool delphineUnpack(byte *dst, const byte *src, int len);
|
bool delphineUnpack(byte *dst, const byte *src, int len);
|
||||||
int findHighColor();
|
int findHighColor();
|
||||||
ovlData3Struct *getOvlData3Entry(int32 scriptNumber, int32 param);
|
ovlData3Struct *getOvlData3Entry(int32 scriptNumber, int32 param);
|
||||||
|
@ -109,6 +113,11 @@ const char *getObjectName(int index, const char * string);
|
||||||
void mainLoop(void);
|
void mainLoop(void);
|
||||||
void getMouseStatus(int16 *pMouseVar, int16 *pMouseX, int16 *pMouseButton, int16 *pMouseY);
|
void getMouseStatus(int16 *pMouseVar, int16 *pMouseX, int16 *pMouseButton, int16 *pMouseY);
|
||||||
bool testMask(int x, int y, unsigned char* pData, int stride);
|
bool testMask(int x, int y, unsigned char* pData, int stride);
|
||||||
|
menuElementSubStruct *getSelectedEntryInMenu(menuStruct *pMenu);
|
||||||
|
void closeAllMenu(void);
|
||||||
|
int removeFinishedScripts(scriptInstanceStruct *ptrHandle);
|
||||||
|
void initBigVar3(void);
|
||||||
|
void resetActorPtr(actorStruct *ptr);
|
||||||
|
|
||||||
} // End of namespace Cruise
|
} // End of namespace Cruise
|
||||||
|
|
||||||
|
|
|
@ -750,7 +750,7 @@ int decompFunction(void) {
|
||||||
switch (currentScriptOpcodeType) {
|
switch (currentScriptOpcodeType) {
|
||||||
case 0x1:
|
case 0x1:
|
||||||
{
|
{
|
||||||
pushDecomp("_setMain5()");
|
pushDecomp("_setdoFade()");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x2:
|
case 0x2:
|
||||||
|
@ -1344,7 +1344,7 @@ int decompFunction(void) {
|
||||||
}
|
}
|
||||||
case 0x74:
|
case 0x74:
|
||||||
{
|
{
|
||||||
sprintf(tempbuffer, "_getInitVar1()");
|
sprintf(tempbuffer, "_getlowMemory()");
|
||||||
pushDecomp(tempbuffer);
|
pushDecomp(tempbuffer);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -166,29 +166,31 @@ void loadFNT(const char *fileName) {
|
||||||
fontFileHandle.close();
|
fontFileHandle.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
void loadSystemFont(void) {
|
void initSystem(void) {
|
||||||
int32 i;
|
int32 i;
|
||||||
|
|
||||||
video2 = 15;
|
itemColor = 15;
|
||||||
video4 = 9;
|
titleColor = 9;
|
||||||
video3 = 13;
|
selectColor = 13;
|
||||||
colorOfSelectedSaveDrive = 10;
|
subColor = 10;
|
||||||
|
|
||||||
for (i = 0; i < 64; i++) {
|
for (i = 0; i < 64; i++) {
|
||||||
mediumVar[i].ptr = NULL;
|
strcpy(preloadData[i].name, "");
|
||||||
mediumVar[i].nofree = 0;
|
preloadData[i].ptr = NULL;
|
||||||
|
preloadData[i].nofree = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
initVar1 = 0;
|
lowMemory = 0;
|
||||||
main5 = 0;
|
|
||||||
var22 = 0;
|
doFade = 0;
|
||||||
initVar2 = 0;
|
fadeFlag = 0;
|
||||||
|
scroll = 0;
|
||||||
switchPal = 0;
|
switchPal = 0;
|
||||||
currentActiveBackgroundPlane = 0;
|
currentActiveBackgroundPlane = 0;
|
||||||
|
|
||||||
//changeCursor();
|
changeCursor(CURSOR_NORMAL);
|
||||||
|
|
||||||
initVar4[0] = 0;
|
strcpy(cmdLine, "");
|
||||||
|
|
||||||
loadFNT("system.fnt");
|
loadFNT("system.fnt");
|
||||||
}
|
}
|
||||||
|
@ -438,7 +440,7 @@ void drawString(int32 x, int32 y, uint8 *string, uint8 *buffer, uint8 color,
|
||||||
|
|
||||||
if (character) {
|
if (character) {
|
||||||
if (character == ' ' || character == 0x7D) {
|
if (character == ' ' || character == 0x7D) {
|
||||||
drawPosPixel_X += var1 + 5;
|
drawPosPixel_X += wordSpacingWidth + 5;
|
||||||
} else {
|
} else {
|
||||||
if (data) {
|
if (data) {
|
||||||
short int *si =
|
short int *si =
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
namespace Cruise {
|
namespace Cruise {
|
||||||
|
|
||||||
void loadFNT(const char *fileName);
|
void loadFNT(const char *fileName);
|
||||||
void loadSystemFont(void);
|
void initSystem(void);
|
||||||
|
|
||||||
//////////////////////////////////////////////////
|
//////////////////////////////////////////////////
|
||||||
void flipShort(int16 * var);
|
void flipShort(int16 * var);
|
||||||
|
|
|
@ -205,7 +205,7 @@ int16 Op_PlayFX(void) { // TODO: implement
|
||||||
}
|
}
|
||||||
|
|
||||||
int16 Op_freeAllPerso(void) {
|
int16 Op_freeAllPerso(void) {
|
||||||
freeAllPerso();
|
freeCTP();
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -301,11 +301,8 @@ int16 Op_isFileLoaded(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int16 Op_RemoveFrame(void) {
|
int16 Op_RemoveFrame(void) {
|
||||||
//int var1;
|
int var1 = popVar();
|
||||||
//int var2;
|
int var2 = popVar();
|
||||||
|
|
||||||
var1 = popVar();
|
|
||||||
var2 = popVar();
|
|
||||||
|
|
||||||
resetFileEntryRange(var2, var1);
|
resetFileEntryRange(var2, var1);
|
||||||
|
|
||||||
|
@ -394,11 +391,11 @@ int16 Op_ChangeSaveAllowedState(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int16 Op_changeCutSceneState(void) {
|
int16 Op_changeCutSceneState(void) {
|
||||||
int oldValue = affichePasMenuJoueur;
|
int oldValue = displayOn;
|
||||||
int newValue = popVar();
|
int newValue = popVar();
|
||||||
|
|
||||||
if (newValue != -1) {
|
if (newValue != -1) {
|
||||||
affichePasMenuJoueur = newValue;
|
displayOn = newValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
return oldValue;
|
return oldValue;
|
||||||
|
@ -532,8 +529,8 @@ int16 Op_InitializeState(void) {
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int16 Op_GetInitVar1(void) {
|
int16 Op_GetlowMemory(void) {
|
||||||
return initVar1;
|
return lowMemory;
|
||||||
}
|
}
|
||||||
|
|
||||||
int16 Op_FadeOut(void) {
|
int16 Op_FadeOut(void) {
|
||||||
|
@ -580,7 +577,7 @@ int16 Op_2C(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int16 Op_FadeIn(void) {
|
int16 Op_FadeIn(void) {
|
||||||
main5 = 1;
|
doFade = 1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -829,10 +826,10 @@ int16 Op_removeBackground(void) {
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int op6AVar;
|
int vblLimit;
|
||||||
|
|
||||||
int16 Op_6A(void) {
|
int16 Op_6A(void) {
|
||||||
op6AVar = popVar();
|
vblLimit = popVar();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1194,10 +1191,10 @@ int16 Op_regenerateBackgroundIncrust(void) {
|
||||||
int16 Op_SetStringColors(void) {
|
int16 Op_SetStringColors(void) {
|
||||||
// TODO: here ignore if low color mode
|
// TODO: here ignore if low color mode
|
||||||
|
|
||||||
colorOfSelectedSaveDrive = (uint8) popVar();
|
subColor = (uint8) popVar();
|
||||||
video2 = (uint8) popVar();
|
itemColor = (uint8) popVar();
|
||||||
video3 = (uint8) popVar();
|
selectColor = (uint8) popVar();
|
||||||
video4 = (uint8) popVar();
|
titleColor = (uint8) popVar();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1205,11 +1202,11 @@ int16 Op_SetStringColors(void) {
|
||||||
int16 Op_1E(void) { // setup actor position
|
int16 Op_1E(void) { // setup actor position
|
||||||
actorStruct *pActor;
|
actorStruct *pActor;
|
||||||
|
|
||||||
var0 = popVar();
|
int var0 = popVar();
|
||||||
int actorY = popVar();
|
int actorY = popVar();
|
||||||
int actorX = popVar();
|
int actorX = popVar();
|
||||||
var1 = popVar();
|
int var1 = popVar();
|
||||||
var2 = popVar();
|
int var2 = popVar();
|
||||||
int overlay = popVar();
|
int overlay = popVar();
|
||||||
|
|
||||||
if (!overlay) {
|
if (!overlay) {
|
||||||
|
@ -1285,8 +1282,8 @@ int16 Op_40(void) {
|
||||||
//freeStuff1();
|
//freeStuff1();
|
||||||
freeStuff2();
|
freeStuff2();
|
||||||
|
|
||||||
var24 = 0;
|
playMusic2 = 0;
|
||||||
var23 = 0;
|
playMusic = 0;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1295,8 +1292,8 @@ int16 Op_6C(void) {
|
||||||
//int var1;
|
//int var1;
|
||||||
int temp;
|
int temp;
|
||||||
|
|
||||||
var0 = popVar();
|
int var0 = popVar();
|
||||||
var1 = popVar();
|
int var1 = popVar();
|
||||||
|
|
||||||
if (!var1) {
|
if (!var1) {
|
||||||
var1 = currentScriptPtr->overlayNumber;
|
var1 = currentScriptPtr->overlayNumber;
|
||||||
|
@ -1344,11 +1341,11 @@ int16 Op_60(void) {
|
||||||
* int var4;
|
* int var4;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var0 = popVar();
|
int var0 = popVar();
|
||||||
var1 = popVar();
|
int var1 = popVar();
|
||||||
var2 = popVar();
|
int var2 = popVar();
|
||||||
var3 = popVar();
|
int var3 = popVar();
|
||||||
var4 = popVar();
|
int var4 = popVar();
|
||||||
|
|
||||||
if (!var4) {
|
if (!var4) {
|
||||||
var4 = currentScriptPtr->overlayNumber;
|
var4 = currentScriptPtr->overlayNumber;
|
||||||
|
@ -1405,9 +1402,9 @@ int16 Op_6E(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int16 Op_InitializeState2(void) {
|
int16 Op_InitializeState2(void) {
|
||||||
var0 = popVar();
|
int var0 = popVar();
|
||||||
char *ptr = (char *)popPtr();
|
char *ptr = (char *)popPtr();
|
||||||
var1 = popVar();
|
int var1 = popVar();
|
||||||
|
|
||||||
if (!var1)
|
if (!var1)
|
||||||
var1 = currentScriptPtr->overlayNumber;
|
var1 = currentScriptPtr->overlayNumber;
|
||||||
|
@ -1671,7 +1668,7 @@ void setupOpcodeTable(void) {
|
||||||
opcodeTablePtr[0x71] = Op_SetColorrawLine;
|
opcodeTablePtr[0x71] = Op_SetColorrawLine;
|
||||||
opcodeTablePtr[0x72] = Op_InitializeState2;
|
opcodeTablePtr[0x72] = Op_InitializeState2;
|
||||||
opcodeTablePtr[0x73] = Op_SetXDial;
|
opcodeTablePtr[0x73] = Op_SetXDial;
|
||||||
opcodeTablePtr[0x74] = Op_GetInitVar1;
|
opcodeTablePtr[0x74] = Op_GetlowMemory;
|
||||||
opcodeTablePtr[0x76] = Op_InitializeState6;
|
opcodeTablePtr[0x76] = Op_InitializeState6;
|
||||||
opcodeTablePtr[0x79] = Op_PlayFXnterPlayerMenu;
|
opcodeTablePtr[0x79] = Op_PlayFXnterPlayerMenu;
|
||||||
opcodeTablePtr[0x78] = Op_InitializeState8;
|
opcodeTablePtr[0x78] = Op_InitializeState8;
|
||||||
|
|
|
@ -29,10 +29,13 @@
|
||||||
namespace Cruise {
|
namespace Cruise {
|
||||||
|
|
||||||
extern int flag_obstacle;
|
extern int flag_obstacle;
|
||||||
|
extern int vblLimit;
|
||||||
void setupOpcodeTable(void);
|
void setupOpcodeTable(void);
|
||||||
int32 opcodeType8(void);
|
int32 opcodeType8(void);
|
||||||
int16 computeZoom(int param);
|
int16 computeZoom(int param);
|
||||||
int16 subOp23(int param1, int param2);
|
int16 subOp23(int param1, int param2);
|
||||||
|
void freeObjectList(cellStruct *pListHead);
|
||||||
|
int removeAnimation(actorStruct * pHead, int overlay, int objIdx, int objType);
|
||||||
|
|
||||||
} // End of namespace Cruise
|
} // End of namespace Cruise
|
||||||
|
|
||||||
|
|
|
@ -1263,7 +1263,7 @@ void drawMenu(menuStruct *pMenu) {
|
||||||
int wx = x + (nbcol - 1) * (160/2);
|
int wx = x + (nbcol - 1) * (160/2);
|
||||||
|
|
||||||
if (wx <= 320 - 160) {
|
if (wx <= 320 - 160) {
|
||||||
drawMessage(pMenu->gfx, wx, y - hline, 160, video4, gfxModuleData.pPage10);
|
drawMessage(pMenu->gfx, wx, y - hline, 160, titleColor, gfxModuleData.pPage10);
|
||||||
}
|
}
|
||||||
|
|
||||||
wx = x;
|
wx = x;
|
||||||
|
@ -1281,12 +1281,12 @@ void drawMenu(menuStruct *pMenu) {
|
||||||
int color;
|
int color;
|
||||||
|
|
||||||
if (p1->varC) {
|
if (p1->varC) {
|
||||||
color = video3;
|
color = selectColor;
|
||||||
} else {
|
} else {
|
||||||
if (p1->color != 255) {
|
if (p1->color != 255) {
|
||||||
color = p1->color;
|
color = p1->color;
|
||||||
} else {
|
} else {
|
||||||
color = video2;
|
color = itemColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1494,7 +1494,7 @@ void mainDraw(int16 param) {
|
||||||
//----------------------------------------------------------------------------------------------------------------//
|
//----------------------------------------------------------------------------------------------------------------//
|
||||||
|
|
||||||
freeAutoCell();
|
freeAutoCell();
|
||||||
var20 = 0;
|
isMessage = 0;
|
||||||
|
|
||||||
//-------------------------------------------------- DRAW OBJECTS TYPE 5 (MSG)-----------------------------------------//
|
//-------------------------------------------------- DRAW OBJECTS TYPE 5 (MSG)-----------------------------------------//
|
||||||
|
|
||||||
|
@ -1503,7 +1503,7 @@ void mainDraw(int16 param) {
|
||||||
while (currentObjPtr) {
|
while (currentObjPtr) {
|
||||||
if (currentObjPtr->type == OBJ_TYPE_MSG && currentObjPtr->freeze == 0) {
|
if (currentObjPtr->type == OBJ_TYPE_MSG && currentObjPtr->freeze == 0) {
|
||||||
drawMessage(currentObjPtr->gfxPtr, currentObjPtr->x, currentObjPtr->field_C, currentObjPtr->spriteIdx, currentObjPtr->color, gfxModuleData.pPage10);
|
drawMessage(currentObjPtr->gfxPtr, currentObjPtr->x, currentObjPtr->field_C, currentObjPtr->spriteIdx, currentObjPtr->color, gfxModuleData.pPage10);
|
||||||
var20 = 1;
|
isMessage = 1;
|
||||||
}
|
}
|
||||||
currentObjPtr = currentObjPtr->next;
|
currentObjPtr = currentObjPtr->next;
|
||||||
}
|
}
|
||||||
|
|
|
@ -125,23 +125,16 @@ void updateMenuMouse(int mouseX, int mouseY, menuStruct *pMenu) {
|
||||||
if (pMenu->gfx) {
|
if (pMenu->gfx) {
|
||||||
int height = pMenu->gfx->height; // rustine
|
int height = pMenu->gfx->height; // rustine
|
||||||
int var_2 = 0;
|
int var_2 = 0;
|
||||||
menuElementStruct *pCurrentEntry =
|
menuElementStruct *pCurrentEntry = pMenu->ptrNextElement;
|
||||||
pMenu->ptrNextElement;
|
|
||||||
|
|
||||||
while (pCurrentEntry) {
|
while (pCurrentEntry) {
|
||||||
pCurrentEntry->varC = 0;
|
pCurrentEntry->varC = 0;
|
||||||
|
|
||||||
if (var_2 == 0) {
|
if (var_2 == 0) {
|
||||||
if ((mouseX > pCurrentEntry->x)
|
if ((mouseX > pCurrentEntry->x) && ((pCurrentEntry->x + 160) >= mouseX)) {
|
||||||
&& ((pCurrentEntry->x + 160) >=
|
if ((mouseY > pCurrentEntry->y) && ((pCurrentEntry->y + height) >= mouseY)) {
|
||||||
mouseX)) {
|
|
||||||
if ((mouseY > pCurrentEntry->y)
|
|
||||||
&& ((pCurrentEntry->y +
|
|
||||||
height) >=
|
|
||||||
mouseY)) {
|
|
||||||
var_2 = 1;
|
var_2 = 1;
|
||||||
pCurrentEntry->varC =
|
pCurrentEntry->varC = 1;
|
||||||
1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -194,18 +187,29 @@ int processMenu(menuStruct *pMenu) {
|
||||||
mainDraw(1);
|
mainDraw(1);
|
||||||
flipScreen();
|
flipScreen();
|
||||||
|
|
||||||
return 0;
|
if( mouseButton & 1) {
|
||||||
|
menuElementSubStruct* pSelectedEntry = getSelectedEntryInMenu(pMenu);
|
||||||
|
|
||||||
|
if(pSelectedEntry) {
|
||||||
|
return pSelectedEntry->header;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int playerMenu(int menuX, int menuY) {
|
int playerMenu(int menuX, int menuY) {
|
||||||
int retourMenu;
|
int retourMenu;
|
||||||
//int restartGame = 0;
|
//int restartGame = 0;
|
||||||
|
|
||||||
if (entrerMenuJoueur && affichePasMenuJoueur) {
|
if (entrerMenuJoueur && displayOn) {
|
||||||
if (var0) {
|
if (remdo) {
|
||||||
systemStrings.param = 0;
|
systemStrings.param = 0;
|
||||||
var24 = 0;
|
playMusic2 = 0;
|
||||||
var23 = 0;
|
playMusic = 0;
|
||||||
freeStuff2();
|
freeStuff2();
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
|
@ -236,20 +240,35 @@ int playerMenu(int menuX, int menuY) {
|
||||||
menuTable[0] = createMenu(menuX, menuY, "Menu Joueur");
|
menuTable[0] = createMenu(menuX, menuY, "Menu Joueur");
|
||||||
ASSERT(menuTable[0]);
|
ASSERT(menuTable[0]);
|
||||||
|
|
||||||
addSelectableMenuEntry(0, 3, menuTable[0], 1, -1,
|
//addSelectableMenuEntry(0, 3, menuTable[0], 1, -1, "Lecteur de Sauvegarde");
|
||||||
"Lecteur de Sauvegarde");
|
|
||||||
if (userEnabled) {
|
if (userEnabled) {
|
||||||
addSelectableMenuEntry(0, 4, menuTable[0], 1, -1,
|
addSelectableMenuEntry(0, 4, menuTable[0], 1, -1, "Sauvegarde");
|
||||||
"Sauvegarde");
|
|
||||||
}
|
}
|
||||||
addSelectableMenuEntry(0, 5, menuTable[0], 1, -1,
|
addSelectableMenuEntry(0, 5, menuTable[0], 1, -1, "Chargement");
|
||||||
"Chargement");
|
addSelectableMenuEntry(0, 6, menuTable[0], 1, -1, "Recommencer le jeu");
|
||||||
addSelectableMenuEntry(0, 6, menuTable[0], 1, -1,
|
addSelectableMenuEntry(0, 7, menuTable[0], 1, -1, "Quitter");
|
||||||
"Recommencer le jeu");
|
|
||||||
addSelectableMenuEntry(0, 7, menuTable[0], 1, -1,
|
|
||||||
"Chargement");
|
|
||||||
|
|
||||||
retourMenu = processMenu(menuTable[0]);
|
retourMenu = processMenu(menuTable[0]);
|
||||||
|
|
||||||
|
freeMenu(menuTable[0]);
|
||||||
|
menuTable[0] = NULL;
|
||||||
|
|
||||||
|
switch(retourMenu)
|
||||||
|
{
|
||||||
|
case 3: // select save drive
|
||||||
|
break;
|
||||||
|
case 4: // save
|
||||||
|
saveSavegameData(0);
|
||||||
|
break;
|
||||||
|
case 5: // load
|
||||||
|
loadSavegameData(0);
|
||||||
|
break;
|
||||||
|
case 6: // restart
|
||||||
|
break;
|
||||||
|
case 7: // exit
|
||||||
|
exit(0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -39,10 +39,9 @@ void freePerso(int persoIdx) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void freeAllPerso(void) {
|
void freeCTP(void) {
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < NUM_PERSONS; i++) {
|
for (unsigned long int i = 0; i < NUM_PERSONS; i++) {
|
||||||
freePerso(i);
|
freePerso(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,7 @@ extern persoStruct *persoTable[NUM_PERSONS];
|
||||||
extern int16 computedVar14;
|
extern int16 computedVar14;
|
||||||
|
|
||||||
void freePerso(int persoIdx);
|
void freePerso(int persoIdx);
|
||||||
void freeAllPerso(void);
|
void freeCTP(void);
|
||||||
void affiche_chemin(int16 persoIdx, int16 * returnVar);
|
void affiche_chemin(int16 persoIdx, int16 * returnVar);
|
||||||
int direction(int x1, int y1, int x2, int y2, int inc_jo1, int inc_jo2);
|
int direction(int x1, int y1, int x2, int y2, int inc_jo1, int inc_jo2);
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,154 @@ struct overlayRestoreTemporary {
|
||||||
|
|
||||||
overlayRestoreTemporary ovlRestoreData[90];
|
overlayRestoreTemporary ovlRestoreData[90];
|
||||||
|
|
||||||
|
void resetPreload()
|
||||||
|
{
|
||||||
|
for(unsigned long int i=0; i<64; i++)
|
||||||
|
{
|
||||||
|
if(strlen(preloadData[i].name))
|
||||||
|
{
|
||||||
|
if(preloadData[i].ptr)
|
||||||
|
{
|
||||||
|
free(preloadData[i].ptr);
|
||||||
|
preloadData[i].ptr = NULL;
|
||||||
|
}
|
||||||
|
strcpy(preloadData[i].name, "");
|
||||||
|
preloadData[i].nofree = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void unloadOverlay(const char*name, int overlayNumber)
|
||||||
|
{
|
||||||
|
releaseOverlay(name);
|
||||||
|
|
||||||
|
strcpy(overlayTable[overlayNumber].overlayName, "");
|
||||||
|
overlayTable[overlayNumber].ovlData = NULL;
|
||||||
|
overlayTable[overlayNumber].alreadyLoaded = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void initVars(void)
|
||||||
|
{
|
||||||
|
closeAllMenu();
|
||||||
|
resetFileEntryRange( 0, 257 );
|
||||||
|
|
||||||
|
resetPreload();
|
||||||
|
freeCTP();
|
||||||
|
|
||||||
|
freezeCell(&cellHead, -1, -1, -1, -1, -1, 0);
|
||||||
|
// TODO: unfreeze anims
|
||||||
|
|
||||||
|
freeObjectList(&cellHead);
|
||||||
|
removeAnimation(&actorHead, -1, -1, -1);
|
||||||
|
|
||||||
|
changeScriptParamInList(-1, -1, &procHead, -1, 0);
|
||||||
|
removeFinishedScripts(&procHead);
|
||||||
|
|
||||||
|
changeScriptParamInList(-1, -1, &relHead, -1, 0);
|
||||||
|
removeFinishedScripts(&relHead);
|
||||||
|
|
||||||
|
for(unsigned long int i=0; i<90; i++)
|
||||||
|
{
|
||||||
|
if(strlen(overlayTable[i].overlayName) && overlayTable[i].alreadyLoaded)
|
||||||
|
{
|
||||||
|
unloadOverlay(overlayTable[i].overlayName, i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO:
|
||||||
|
// stopSound();
|
||||||
|
// removeSound();
|
||||||
|
|
||||||
|
closeBase();
|
||||||
|
closeCnf();
|
||||||
|
|
||||||
|
initOverlayTable();
|
||||||
|
|
||||||
|
stateID = 0;
|
||||||
|
currentActiveBackgroundPlane = 0;
|
||||||
|
|
||||||
|
freeDisk();
|
||||||
|
|
||||||
|
initVar5[0] = -1;
|
||||||
|
initVar5[3] = -1;
|
||||||
|
initVar5[6] = -1;
|
||||||
|
initVar5[9] = -1;
|
||||||
|
|
||||||
|
for (unsigned long int i = 0; i < 8; i++) {
|
||||||
|
menuTable[i] = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (unsigned long int i = 0; i < 2000; i++) {
|
||||||
|
globalVars[i] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (unsigned long int i = 0; i < 8; i++) {
|
||||||
|
backgroundTable[i].name[0] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (unsigned long int i = 0; i < 257; i++) {
|
||||||
|
filesDatabase[i].subData.ptr = NULL;
|
||||||
|
filesDatabase[i].subData.ptrMask = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
initBigVar3();
|
||||||
|
|
||||||
|
resetPtr2(&procHead);
|
||||||
|
resetPtr2(&relHead);
|
||||||
|
|
||||||
|
resetPtr(&cellHead);
|
||||||
|
|
||||||
|
resetActorPtr(&actorHead);
|
||||||
|
resetBackgroundIncrustList(&backgroundIncrustHead);
|
||||||
|
|
||||||
|
vblLimit = 0;
|
||||||
|
remdo = 0;
|
||||||
|
songLoaded = 0;
|
||||||
|
songPlayed = 0;
|
||||||
|
songLoop = 1;
|
||||||
|
activeMouse = 0;
|
||||||
|
userEnabled = 1;
|
||||||
|
dialogueEnabled = 0;
|
||||||
|
dialogueOvl = 0;
|
||||||
|
dialogueObj = 0;
|
||||||
|
userDelay = 0;
|
||||||
|
sysKey = -1;
|
||||||
|
sysX = 0;
|
||||||
|
sysY = 0;
|
||||||
|
automoveInc = 0;
|
||||||
|
automoveMax = 0;
|
||||||
|
displayOn = true;
|
||||||
|
|
||||||
|
// here used to init clip
|
||||||
|
|
||||||
|
isMessage = 0;
|
||||||
|
fadeFlag = 0;
|
||||||
|
playMusic = 0;
|
||||||
|
playMusic2 = 0;
|
||||||
|
automaticMode = 0;
|
||||||
|
|
||||||
|
// video param (vga and mcga mode)
|
||||||
|
|
||||||
|
titleColor = 2;
|
||||||
|
itemColor = 1;
|
||||||
|
selectColor = 3;
|
||||||
|
subColor = 5;
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
|
narratorOvl = 0;
|
||||||
|
narratorIdx = 0;
|
||||||
|
aniX = 0;
|
||||||
|
aniY = 0;
|
||||||
|
animationStart = false;
|
||||||
|
selectDown = 0;
|
||||||
|
menuDown = 0;
|
||||||
|
buttonDown = 0;
|
||||||
|
var41 = 0;
|
||||||
|
entrerMenuJoueur = 0;
|
||||||
|
fadeVar = 0;
|
||||||
|
}
|
||||||
|
|
||||||
void loadSavegameDataSub1(Common::File& currentSaveFile) {
|
void loadSavegameDataSub1(Common::File& currentSaveFile) {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -156,7 +304,7 @@ void loadSavegameActor(Common::File& currentSaveFile) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void loadSavegameDataSub5(Common::File& currentSaveFile) {
|
void loadSavegameDataSub5(Common::File& currentSaveFile) {
|
||||||
if (var1) {
|
if (songLoaded) {
|
||||||
saveVar1 = currentSaveFile.readByte();
|
saveVar1 = currentSaveFile.readByte();
|
||||||
|
|
||||||
if (saveVar1) {
|
if (saveVar1) {
|
||||||
|
@ -196,10 +344,14 @@ void loadSavegameDataSub6(Common::File& currentSaveFile) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int saveSavegameData(int saveGameIdx) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int loadSavegameData(int saveGameIdx) {
|
int loadSavegameData(int saveGameIdx) {
|
||||||
char buffer[256];
|
char buffer[256];
|
||||||
char saveIdentBuffer[6];
|
char saveIdentBuffer[6];
|
||||||
int initVar1Save;
|
int lowMemorySave;
|
||||||
cellStruct *currentcellHead;
|
cellStruct *currentcellHead;
|
||||||
|
|
||||||
sprintf(buffer, "CR.%d", saveGameIdx);
|
sprintf(buffer, "CR.%d", saveGameIdx);
|
||||||
|
@ -221,12 +373,12 @@ int loadSavegameData(int saveGameIdx) {
|
||||||
currentSaveFile.close();
|
currentSaveFile.close();
|
||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
//initVars();
|
initVars();
|
||||||
|
|
||||||
var1 = currentSaveFile.readSint16LE();
|
songLoaded = currentSaveFile.readSint16LE();
|
||||||
var2 = currentSaveFile.readSint16LE();
|
songPlayed = currentSaveFile.readSint16LE();
|
||||||
var3 = currentSaveFile.readSint16LE();
|
songLoop = currentSaveFile.readSint16LE();
|
||||||
var4 = currentSaveFile.readSint16LE();
|
activeMouse = currentSaveFile.readSint16LE();
|
||||||
userEnabled = currentSaveFile.readSint16LE();
|
userEnabled = currentSaveFile.readSint16LE();
|
||||||
dialogueEnabled = currentSaveFile.readSint16LE();
|
dialogueEnabled = currentSaveFile.readSint16LE();
|
||||||
|
|
||||||
|
@ -236,21 +388,21 @@ int loadSavegameData(int saveGameIdx) {
|
||||||
sysKey = currentSaveFile.readSint16LE();
|
sysKey = currentSaveFile.readSint16LE();
|
||||||
sysX = currentSaveFile.readSint16LE();
|
sysX = currentSaveFile.readSint16LE();
|
||||||
sysY = currentSaveFile.readSint16LE();
|
sysY = currentSaveFile.readSint16LE();
|
||||||
var13 = currentSaveFile.readSint16LE();
|
automoveInc = currentSaveFile.readSint16LE();
|
||||||
var14 = currentSaveFile.readSint16LE();
|
automoveMax = currentSaveFile.readSint16LE();
|
||||||
affichePasMenuJoueur = currentSaveFile.readSint16LE();
|
displayOn = currentSaveFile.readSint16LE();
|
||||||
var20 = currentSaveFile.readSint16LE();
|
isMessage = currentSaveFile.readSint16LE();
|
||||||
var22 = currentSaveFile.readSint16LE();
|
fadeFlag = currentSaveFile.readSint16LE();
|
||||||
var23 = currentSaveFile.readSint16LE();
|
playMusic = currentSaveFile.readSint16LE();
|
||||||
var24 = currentSaveFile.readSint16LE();
|
playMusic2 = currentSaveFile.readSint16LE();
|
||||||
automaticMode = currentSaveFile.readSint16LE();
|
automaticMode = currentSaveFile.readSint16LE();
|
||||||
|
|
||||||
// video param (not loaded in EGA mode)
|
// video param (not loaded in EGA mode)
|
||||||
|
|
||||||
video4 = currentSaveFile.readSint16LE();
|
titleColor = currentSaveFile.readSint16LE();
|
||||||
video2 = currentSaveFile.readSint16LE();
|
itemColor = currentSaveFile.readSint16LE();
|
||||||
video3 = currentSaveFile.readSint16LE();
|
selectColor = currentSaveFile.readSint16LE();
|
||||||
colorOfSelectedSaveDrive = currentSaveFile.readSint16LE();
|
subColor = currentSaveFile.readSint16LE();
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
||||||
|
@ -266,9 +418,9 @@ int loadSavegameData(int saveGameIdx) {
|
||||||
|
|
||||||
currentActiveBackgroundPlane = currentSaveFile.readSint16LE();
|
currentActiveBackgroundPlane = currentSaveFile.readSint16LE();
|
||||||
switchPal = currentSaveFile.readSint16LE();
|
switchPal = currentSaveFile.readSint16LE();
|
||||||
initVar2 = currentSaveFile.readSint16LE();
|
scroll = currentSaveFile.readSint16LE();
|
||||||
var22 = currentSaveFile.readSint16LE();
|
fadeFlag = currentSaveFile.readSint16LE();
|
||||||
main5 = currentSaveFile.readSint16LE();
|
doFade = currentSaveFile.readSint16LE();
|
||||||
numOfLoadedOverlay = currentSaveFile.readSint16LE();
|
numOfLoadedOverlay = currentSaveFile.readSint16LE();
|
||||||
stateID = currentSaveFile.readSint16LE();
|
stateID = currentSaveFile.readSint16LE();
|
||||||
fontFileIndex = currentSaveFile.readSint16LE();
|
fontFileIndex = currentSaveFile.readSint16LE();
|
||||||
|
@ -338,14 +490,14 @@ int loadSavegameData(int saveGameIdx) {
|
||||||
|
|
||||||
for(int i=0; i<64; i++)
|
for(int i=0; i<64; i++)
|
||||||
{
|
{
|
||||||
currentSaveFile.read(mediumVar[i].name, 15);
|
currentSaveFile.read(preloadData[i].name, 15);
|
||||||
currentSaveFile.skip(1);
|
currentSaveFile.skip(1);
|
||||||
mediumVar[i].size = currentSaveFile.readSint32LE();
|
preloadData[i].size = currentSaveFile.readSint32LE();
|
||||||
mediumVar[i].sourceSize = currentSaveFile.readSint32LE();
|
preloadData[i].sourceSize = currentSaveFile.readSint32LE();
|
||||||
currentSaveFile.skip(4);
|
currentSaveFile.skip(4);
|
||||||
mediumVar[i].nofree = currentSaveFile.readSint16LE();
|
preloadData[i].nofree = currentSaveFile.readSint16LE();
|
||||||
mediumVar[i].protect = currentSaveFile.readSint16LE();
|
preloadData[i].protect = currentSaveFile.readSint16LE();
|
||||||
mediumVar[i].ovl = currentSaveFile.readSint16LE();
|
preloadData[i].ovl = currentSaveFile.readSint16LE();
|
||||||
}
|
}
|
||||||
|
|
||||||
loadSavegameDataSub1(currentSaveFile);
|
loadSavegameDataSub1(currentSaveFile);
|
||||||
|
@ -361,7 +513,7 @@ int loadSavegameData(int saveGameIdx) {
|
||||||
currentSaveFile.close();
|
currentSaveFile.close();
|
||||||
|
|
||||||
for (int j = 0; j < 64; j++) {
|
for (int j = 0; j < 64; j++) {
|
||||||
mediumVar[j].ptr = NULL;
|
preloadData[j].ptr = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int j = 1; j < numOfLoadedOverlay; j++) {
|
for (int j = 1; j < numOfLoadedOverlay; j++) {
|
||||||
|
@ -402,7 +554,7 @@ int loadSavegameData(int saveGameIdx) {
|
||||||
|
|
||||||
lastAni[0] = 0;
|
lastAni[0] = 0;
|
||||||
|
|
||||||
initVar1Save = initVar1;
|
lowMemorySave = lowMemory;
|
||||||
|
|
||||||
for (int i = 0; i < 257; i++) {
|
for (int i = 0; i < 257; i++) {
|
||||||
if (filesDatabase[i].subData.ptr) {
|
if (filesDatabase[i].subData.ptr) {
|
||||||
|
@ -413,7 +565,7 @@ int loadSavegameData(int saveGameIdx) {
|
||||||
|
|
||||||
for (k = i; k < j; k++) {
|
for (k = i; k < j; k++) {
|
||||||
if (filesDatabase[k].subData.ptrMask)
|
if (filesDatabase[k].subData.ptrMask)
|
||||||
initVar1 = 0;
|
lowMemory = 0;
|
||||||
|
|
||||||
filesDatabase[k].subData.ptr = NULL;
|
filesDatabase[k].subData.ptr = NULL;
|
||||||
filesDatabase[k].subData.ptrMask = NULL;
|
filesDatabase[k].subData.ptrMask = NULL;
|
||||||
|
@ -428,7 +580,7 @@ int loadSavegameData(int saveGameIdx) {
|
||||||
i = j - 1;
|
i = j - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
initVar1 = initVar1Save;
|
lowMemory = lowMemorySave;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
|
|
||||||
namespace Cruise {
|
namespace Cruise {
|
||||||
|
|
||||||
|
int saveSavegameData(int saveGameIdx);
|
||||||
int loadSavegameData(int saveGameIdx);
|
int loadSavegameData(int saveGameIdx);
|
||||||
|
|
||||||
} // End of namespace Cruise
|
} // End of namespace Cruise
|
||||||
|
|
|
@ -361,8 +361,8 @@ int32 opcodeType11(void) { // break
|
||||||
int32 opcodeType4(void) { // test
|
int32 opcodeType4(void) { // test
|
||||||
int boolVar = 0;
|
int boolVar = 0;
|
||||||
|
|
||||||
var1 = popVar();
|
int var1 = popVar();
|
||||||
var2 = popVar();
|
int var2 = popVar();
|
||||||
|
|
||||||
switch (currentScriptOpcodeType) {
|
switch (currentScriptOpcodeType) {
|
||||||
case 0:
|
case 0:
|
||||||
|
@ -431,8 +431,8 @@ int32 opcodeType6(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int32 opcodeType7(void) {
|
int32 opcodeType7(void) {
|
||||||
var1 = popVar();
|
int var1 = popVar();
|
||||||
var2 = popVar();
|
int var2 = popVar();
|
||||||
|
|
||||||
pushVar(var1);
|
pushVar(var1);
|
||||||
pushVar(var2);
|
pushVar(var2);
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
|
|
||||||
namespace Cruise {
|
namespace Cruise {
|
||||||
|
|
||||||
uint16 var0 = 0;
|
uint16 remdo = 0;
|
||||||
uint16 fadeVar;
|
uint16 fadeVar;
|
||||||
|
|
||||||
int16 readB16(void *ptr) {
|
int16 readB16(void *ptr) {
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
|
|
||||||
namespace Cruise {
|
namespace Cruise {
|
||||||
|
|
||||||
extern uint16 var0;
|
extern uint16 remdo;
|
||||||
extern uint16 fadeVar;
|
extern uint16 fadeVar;
|
||||||
|
|
||||||
int16 readB16(void *ptr);
|
int16 readB16(void *ptr);
|
||||||
|
|
|
@ -29,21 +29,21 @@ namespace Cruise {
|
||||||
|
|
||||||
uint8 *_systemFNT;
|
uint8 *_systemFNT;
|
||||||
|
|
||||||
uint8 video2 = 1;
|
uint8 itemColor = 1;
|
||||||
uint8 video3 = 3;
|
uint8 selectColor = 3;
|
||||||
uint8 video4 = 2;
|
uint8 titleColor = 2;
|
||||||
uint8 colorOfSelectedSaveDrive = 5;
|
uint8 subColor = 5;
|
||||||
|
|
||||||
int16 initVar1;
|
int16 lowMemory;
|
||||||
int16 initVar2;
|
int16 scroll;
|
||||||
int16 switchPal;
|
int16 switchPal;
|
||||||
uint8 initVar4[90];
|
char cmdLine[90];
|
||||||
|
|
||||||
int16 currentActiveBackgroundPlane;
|
int16 currentActiveBackgroundPlane;
|
||||||
int16 main5;
|
int16 doFade;
|
||||||
int16 var22 = 0;
|
int16 fadeFlag = 0;
|
||||||
|
|
||||||
mediumVarStruct mediumVar[64];
|
preloadStruct preloadData[64];
|
||||||
|
|
||||||
volumeDataStruct volumeData[20];
|
volumeDataStruct volumeData[20];
|
||||||
|
|
||||||
|
@ -75,7 +75,7 @@ uint32 volumeFileDescriptorSize;
|
||||||
int16 volumeSizeOfEntry;
|
int16 volumeSizeOfEntry;
|
||||||
int16 volumeNumberOfEntry;
|
int16 volumeNumberOfEntry;
|
||||||
|
|
||||||
int16 affichePasMenuJoueur = 1;
|
int16 displayOn = 1;
|
||||||
|
|
||||||
int16 globalVars[2000];
|
int16 globalVars[2000];
|
||||||
|
|
||||||
|
@ -104,10 +104,10 @@ int16 saveOpcodeVar;
|
||||||
int16 narratorOvl = 0;
|
int16 narratorOvl = 0;
|
||||||
int16 narratorIdx = 0;
|
int16 narratorIdx = 0;
|
||||||
|
|
||||||
int16 var1;
|
int16 songLoaded;
|
||||||
int16 var2;
|
int16 songPlayed;
|
||||||
int16 var3;
|
int16 songLoop;
|
||||||
int16 var4;
|
int16 activeMouse;
|
||||||
int16 userEnabled;
|
int16 userEnabled;
|
||||||
int16 var5;
|
int16 var5;
|
||||||
int16 dialogueEnabled;
|
int16 dialogueEnabled;
|
||||||
|
@ -119,11 +119,11 @@ int16 sysKey = -1;
|
||||||
int16 sysX = 0;
|
int16 sysX = 0;
|
||||||
int16 sysY = 0;
|
int16 sysY = 0;
|
||||||
|
|
||||||
int16 var13;
|
int16 automoveInc;
|
||||||
int16 var14;
|
int16 automoveMax;
|
||||||
int16 var20;
|
int16 isMessage;
|
||||||
int16 var23;
|
int16 playMusic;
|
||||||
int16 var24;
|
int16 playMusic2;
|
||||||
int16 automaticMode;
|
int16 automaticMode;
|
||||||
int16 aniX;
|
int16 aniX;
|
||||||
int16 aniY;
|
int16 aniY;
|
||||||
|
|
|
@ -54,21 +54,21 @@ typedef int16(*opcodeFunction) (void);
|
||||||
extern uint8 *_systemFNT;
|
extern uint8 *_systemFNT;
|
||||||
extern int16 fontFileIndex;
|
extern int16 fontFileIndex;
|
||||||
|
|
||||||
extern uint8 video2;
|
extern uint8 itemColor;
|
||||||
extern uint8 video3;
|
extern uint8 selectColor;
|
||||||
extern uint8 video4;
|
extern uint8 titleColor;
|
||||||
extern uint8 colorOfSelectedSaveDrive;
|
extern uint8 subColor;
|
||||||
|
|
||||||
extern int16 initVar1;
|
extern int16 lowMemory;
|
||||||
extern int16 initVar2;
|
extern int16 scroll;
|
||||||
extern int16 switchPal;
|
extern int16 switchPal;
|
||||||
extern uint8 initVar4[90];
|
extern char cmdLine[90];
|
||||||
|
|
||||||
extern int16 currentActiveBackgroundPlane;
|
extern int16 currentActiveBackgroundPlane;
|
||||||
extern int16 main5;
|
extern int16 doFade;
|
||||||
extern int16 var22;
|
extern int16 fadeFlag;
|
||||||
|
|
||||||
struct mediumVarStruct {
|
struct preloadStruct {
|
||||||
char name[15];
|
char name[15];
|
||||||
int32 size;
|
int32 size;
|
||||||
int32 sourceSize;
|
int32 sourceSize;
|
||||||
|
@ -137,7 +137,7 @@ struct systemStringsStruct {
|
||||||
char bootScriptName[8];
|
char bootScriptName[8];
|
||||||
};
|
};
|
||||||
|
|
||||||
extern mediumVarStruct mediumVar[64];
|
extern preloadStruct preloadData[64];
|
||||||
|
|
||||||
extern volumeDataStruct volumeData[20];
|
extern volumeDataStruct volumeData[20];
|
||||||
|
|
||||||
|
@ -170,7 +170,7 @@ extern uint32 volumeFileDescriptorSize;
|
||||||
extern int16 volumeSizeOfEntry;
|
extern int16 volumeSizeOfEntry;
|
||||||
extern int16 volumeNumberOfEntry;
|
extern int16 volumeNumberOfEntry;
|
||||||
|
|
||||||
extern int16 affichePasMenuJoueur;
|
extern int16 displayOn;
|
||||||
|
|
||||||
extern int16 globalVars[2000];
|
extern int16 globalVars[2000];
|
||||||
extern dataFileEntry filesDatabase[257];
|
extern dataFileEntry filesDatabase[257];
|
||||||
|
@ -197,10 +197,10 @@ extern int16 saveOpcodeVar;
|
||||||
extern int16 narratorOvl;
|
extern int16 narratorOvl;
|
||||||
extern int16 narratorIdx;
|
extern int16 narratorIdx;
|
||||||
|
|
||||||
extern int16 var1;
|
extern int16 songLoaded;
|
||||||
extern int16 var2;
|
extern int16 songPlayed;
|
||||||
extern int16 var3;
|
extern int16 songLoop;
|
||||||
extern int16 var4;
|
extern int16 activeMouse;
|
||||||
extern int16 userEnabled;
|
extern int16 userEnabled;
|
||||||
extern int16 var5;
|
extern int16 var5;
|
||||||
extern int16 dialogueEnabled;
|
extern int16 dialogueEnabled;
|
||||||
|
@ -210,11 +210,11 @@ extern int16 userDelay;
|
||||||
extern int16 sysKey;
|
extern int16 sysKey;
|
||||||
extern int16 sysX;
|
extern int16 sysX;
|
||||||
extern int16 sysY;
|
extern int16 sysY;
|
||||||
extern int16 var13;
|
extern int16 automoveInc;
|
||||||
extern int16 var14;
|
extern int16 automoveMax;
|
||||||
extern int16 var20;
|
extern int16 isMessage;
|
||||||
extern int16 var23;
|
extern int16 playMusic;
|
||||||
extern int16 var24;
|
extern int16 playMusic2;
|
||||||
extern int16 automaticMode;
|
extern int16 automaticMode;
|
||||||
extern int16 aniX;
|
extern int16 aniX;
|
||||||
extern int16 aniY;
|
extern int16 aniY;
|
||||||
|
|
|
@ -33,6 +33,8 @@ uint8 *PAL_ptr = NULL;
|
||||||
int16 numLoadedPal;
|
int16 numLoadedPal;
|
||||||
int16 fileData2;
|
int16 fileData2;
|
||||||
|
|
||||||
|
char currentBaseName[15] = "";
|
||||||
|
|
||||||
void loadPal(volumeDataStruct *entry) {
|
void loadPal(volumeDataStruct *entry) {
|
||||||
char name[20];
|
char name[20];
|
||||||
|
|
||||||
|
@ -56,6 +58,38 @@ void loadPal(volumeDataStruct *entry) {
|
||||||
PAL_ptr = (uint8 *) malloc(numLoadedPal * fileData2);
|
PAL_ptr = (uint8 *) malloc(numLoadedPal * fileData2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void closePal(void)
|
||||||
|
{
|
||||||
|
if(PAL_fileHandle)
|
||||||
|
{
|
||||||
|
fclose(PAL_fileHandle);
|
||||||
|
|
||||||
|
free(PAL_ptr);
|
||||||
|
PAL_ptr = NULL;
|
||||||
|
|
||||||
|
numLoadedPal = 0;
|
||||||
|
fileData2 = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int closeBase(void)
|
||||||
|
{
|
||||||
|
if(currentVolumeFile.isOpen())
|
||||||
|
{
|
||||||
|
currentVolumeFile.close();
|
||||||
|
|
||||||
|
free(volumePtrToFileDescriptor);
|
||||||
|
|
||||||
|
strcpy(currentBaseName, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(PAL_fileHandle) {
|
||||||
|
closePal();
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int getVolumeDataEntry(volumeDataStruct *entry) {
|
int getVolumeDataEntry(volumeDataStruct *entry) {
|
||||||
char buffer[256];
|
char buffer[256];
|
||||||
int i;
|
int i;
|
||||||
|
@ -89,8 +123,7 @@ int getVolumeDataEntry(volumeDataStruct *entry) {
|
||||||
|
|
||||||
assert(volumeSizeOfEntry == 14 + 4 + 4 + 4 + 4);
|
assert(volumeSizeOfEntry == 14 + 4 + 4 + 4 + 4);
|
||||||
|
|
||||||
volumePtrToFileDescriptor =
|
volumePtrToFileDescriptor = (fileEntry *) mallocAndZero(sizeof(fileEntry) * volumeNumEntry);
|
||||||
(fileEntry *) mallocAndZero(sizeof(fileEntry) * volumeNumEntry);
|
|
||||||
|
|
||||||
for (i = 0; i < volumeNumEntry; i++) {
|
for (i = 0; i < volumeNumEntry; i++) {
|
||||||
volumePtrToFileDescriptor[i].name[0] = 0;
|
volumePtrToFileDescriptor[i].name[0] = 0;
|
||||||
|
@ -102,11 +135,9 @@ int getVolumeDataEntry(volumeDataStruct *entry) {
|
||||||
|
|
||||||
for (i = 0; i < volumeNumEntry; i++) {
|
for (i = 0; i < volumeNumEntry; i++) {
|
||||||
currentVolumeFile.read(&volumePtrToFileDescriptor[i].name, 14);
|
currentVolumeFile.read(&volumePtrToFileDescriptor[i].name, 14);
|
||||||
currentVolumeFile.read(&volumePtrToFileDescriptor[i].offset,
|
currentVolumeFile.read(&volumePtrToFileDescriptor[i].offset, 4);
|
||||||
4);
|
|
||||||
currentVolumeFile.read(&volumePtrToFileDescriptor[i].size, 4);
|
currentVolumeFile.read(&volumePtrToFileDescriptor[i].size, 4);
|
||||||
currentVolumeFile.read(&volumePtrToFileDescriptor[i].extSize,
|
currentVolumeFile.read(&volumePtrToFileDescriptor[i].extSize, 4);
|
||||||
4);
|
|
||||||
currentVolumeFile.read(&volumePtrToFileDescriptor[i].unk3, 4);
|
currentVolumeFile.read(&volumePtrToFileDescriptor[i].unk3, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -116,6 +147,8 @@ int getVolumeDataEntry(volumeDataStruct *entry) {
|
||||||
flipLong(&volumePtrToFileDescriptor[i].extSize);
|
flipLong(&volumePtrToFileDescriptor[i].extSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
strcpy(currentBaseName, entry->ident);
|
||||||
|
|
||||||
loadPal(entry);
|
loadPal(entry);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -309,6 +342,19 @@ int16 findFileInDisks(char *fileName) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int closeCnf(void) {
|
||||||
|
for(long int i=0; i<numOfDisks; i++) {
|
||||||
|
if(volumeData[i].ptr) {
|
||||||
|
free(volumeData[i].ptr);
|
||||||
|
volumeData[i].ptr = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
volumeDataLoaded = 0;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int16 readVolCnf(void) {
|
int16 readVolCnf(void) {
|
||||||
int i;
|
int i;
|
||||||
Common::File fileHandle;
|
Common::File fileHandle;
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
namespace Cruise {
|
namespace Cruise {
|
||||||
|
|
||||||
int16 readVolCnf(void);
|
int16 readVolCnf(void);
|
||||||
|
int closeCnf(void);
|
||||||
int16 findFileInDisks(char * fileName);
|
int16 findFileInDisks(char * fileName);
|
||||||
void freeDisk(void);
|
void freeDisk(void);
|
||||||
int16 findFileInList(const char * fileName);
|
int16 findFileInList(const char * fileName);
|
||||||
|
@ -40,6 +41,8 @@ void drawMsgString(const char * string);
|
||||||
void askDisk(int16 discNumber);
|
void askDisk(int16 discNumber);
|
||||||
void setObjectPosition(int16 param1, int16 param2, int16 param3, int16 param4);
|
void setObjectPosition(int16 param1, int16 param2, int16 param3, int16 param4);
|
||||||
|
|
||||||
|
int closeBase(void);
|
||||||
|
|
||||||
} // End of namespace Cruise
|
} // End of namespace Cruise
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue