From c01aa37caaadb2e65667b1156a907e92e859fee8 Mon Sep 17 00:00:00 2001 From: Vincent Hamm Date: Fri, 27 Apr 2007 12:58:35 +0000 Subject: Add cruise source code for scummvm svn-id: r26605 --- engines/cruise/function.cpp | 1718 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1718 insertions(+) create mode 100644 engines/cruise/function.cpp (limited to 'engines/cruise/function.cpp') diff --git a/engines/cruise/function.cpp b/engines/cruise/function.cpp new file mode 100644 index 0000000000..ed81853cc5 --- /dev/null +++ b/engines/cruise/function.cpp @@ -0,0 +1,1718 @@ +/* ScummVM - Scumm Interpreter + * Copyright (C) 2006 The ScummVM project + * + * cinE Engine is (C) 2004-2005 by CinE Team + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + * + */ + +#include "cruise/cruise_main.h" + +namespace Cruise { + +opcodeFunction opcodeTablePtr[256]; + +struct actorTableStruct +{ + int data[13]; +}; + +typedef struct actorTableStruct actorTableStruct; + +actorTableStruct actorTable1[] = { + { + 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { + 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { + 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { + -38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + } +}; + +int16 Op_loadOverlay(void) +{ + uint8* originalScriptName; + uint8 scriptName[38]; + int returnValue; + + scriptName[0] = 0; + + originalScriptName = (uint8*)popPtr(); + + if(originalScriptName) + { + strcpyuint8(scriptName,originalScriptName); + } + + if(!scriptName[0] || !originalScriptName) + { + return(0); + } + + strToUpper(scriptName); + + //gfxModuleData.field_84(); + //gfxModuleData.field_84(); + + returnValue = loadOverlay(scriptName); + + updateAllScriptsImports(); + + strcpyuint8(scriptNameBuffer,scriptName); + + return(returnValue); +} + +int16 Op_strcpy(void) +{ + char* ptr1 = (char*)popPtr(); + char* ptr2 = (char*)popPtr(); + + //printf("strcpy %s\n",ptr1); + + while(*ptr1) + { + *ptr2 = *ptr1; + + ptr2++; + ptr1++; + } + + *ptr2 = 0; + + return(0); +} + +int16 Op_startScript(void) +{ + int scriptIdx; + int ovlIdx; + uint8* ptr; + uint8* ptr2; + + short int popTable[256]; // TODO: check original size; + + int numOfArgToPop = popVar(); + + int i=0; + + for(i=0;ioverlayNumber; + } + + ptr = attacheNewScriptToTail(ovlIdx,&scriptHandle2,scriptIdx,currentScriptPtr->type,currentScriptPtr->scriptNumber,currentScriptPtr->overlayNumber,scriptType_Minus20); + + if(!ptr) + return(0); + + if(numOfArgToPop<=0) + { + return(0); + } + + ptr2 = ptr; + + for(i=0;i0) + { + printf("Unsuported arg pop in Op_6!\n"); + exit(1); + } + + pop2 = popVar(); + overlay = popVar(); + + if(!overlay) + overlay = currentScriptPtr->overlayNumber; + + if(!overlay) + return(0); + + attacheNewScriptToTail(overlay,&scriptHandle2,pop2,currentScriptPtr->type,currentScriptPtr->scriptNumber,currentScriptPtr->overlayNumber,scriptType_20); + + if(pop1>0) + { + printf("Unsupported art send in op6!\n"); + exit(1); + } + + return(0); +} + +int16 Op_37(void) +{ + int pop1 = popVar(); + int pop2 = popVar(); + + if(!pop2) + pop2 = currentScriptPtr->overlayNumber; + + var30 = pop2; + var31 = pop1; + + return(0); +} + +int16 Op_GetMouseX(void) // TODO: implement properly +{ + int16 dummy; + int16 mouseX; + int16 mouseY; + int16 mouseButton; + + getMouseStatus(&dummy, &mouseX, &mouseButton, &mouseY); + + return(mouseX); +} + +int16 Op_GetMouseY(void) // TODO: implement properly +{ + int16 dummy; + int16 mouseX; + int16 mouseY; + int16 mouseButton; + + getMouseStatus(&dummy, &mouseX, &mouseButton, &mouseY); + + return(mouseY); +} + +int16 Op_rand(void) // TODO: implement +{ + int var = popVar(); + + if(var<2) + { + return(0); + } + +// return(8); + return(rand()%var); +} + +int16 Op_E(void) // TODO: implement +{ + popVar(); + popVar(); + popVar(); + popVar(); + + // printf("Op_E, implement (sound related)\n"); + + return(0); +} + +int16 Op_freeAllPerso(void) +{ + freeAllPerso(); + return(0); +} + +void freeObjectList(objectStruct* pListHead) +{ + int var_2 = 0; + objectStruct* pCurrent = pListHead->next; + + while(pCurrent) + { + objectStruct* pNext = pCurrent->next; + + if(pCurrent->hide == 0) + { + free(pCurrent->gfxPtr); + free(pCurrent); + } + + var_2 = 1; + + pCurrent = pNext; + } + + if(var_2) + { + resetPtr(pListHead); + } +} + +int16 Op_freeObjectList(void) +{ + freeObjectList(&objectHead); + return(0); +} + +int16 Op_freeBackgroundInscrustList(void) +{ + freeBackgroundIncrustList(&backgroundIncrustHead); + return(0); +} + +int16 Op_removeBackground(void) +{ + int backgroundIdx; + + backgroundIdx = popVar(); + + printf("Op_removeBackground: remove background %d\n",backgroundIdx); + return(0); +} + +int16 Op_freeMediumVar(void) +{ + // TODO: implement + printf("Op_freeMediumVar, implement\n"); + return(0); +} + +int16 Op_14(void) +{ + int idx; + int overlay; + + idx = popVar(); + overlay = popVar(); + + if(!overlay) + { + overlay = currentScriptPtr->overlayNumber; + } + + removeObjectFromList(overlay, idx, &objectHead, currentActiveBackgroundPlane, 5); + + return(0); +} + +int16 Op_isFileLoaded(void) +{ + int16 i; + uint8 name[36] = ""; + uint8* ptr; + + ptr = (uint8*)popPtr(); + + if(!ptr) + { + return -1; + } + + strcpyuint8(name,ptr); + strToUpper(name); + + for(i=0;i<257;i++) + { + if(!strcmpuint8(name,filesDatabase[i].subData.name)) + { + return(i); + } + } + + return -1; +} + +int16 Op_resetFilesEntries(void) +{ + int var1; + int var2; + + var1 = popVar(); + var2 = popVar(); + + resetFileEntryRange(var2,var1); + + return(0); +} + +int16 Op_comment(void) +{ + char* var; + + var = (char*)popPtr(); + + printf("COMMENT: \"%s\"\n",var); + + return(0); +} + +int16 Op_removeScript(void) +{ + int idx; + int overlay; + + idx = popVar(); + overlay = popVar(); + + if(!overlay) + { + overlay = currentScriptPtr->overlayNumber; + } + + removeScript(overlay,idx,&scriptHandle2); + + return(0); +} + +int16 Op_releaseScript2(void) +{ + uint8 localName[36] = ""; + uint8* namePtr; + + namePtr = (uint8*)popPtr(); + + strcpyuint8(localName,namePtr); + + if(localName[0]) + { + strToUpper(localName); + releaseOverlay((char*)localName); + } + + return 0; +} + +int16 Op_2B(void) +{ + uint8 name[36] = ""; + uint8* ptr; + int param; + + ptr = (uint8*)popPtr(); + + strcpyuint8(name,ptr); + + param = getProcParam(popVar(),20,name); + + return param; +} + +int16 Op_freeAllMenu(void) +{ + // TODO: implement + printf("Op_freeAllMenu, implement\n"); + + return 0; +} + +int16 Op_EnterPlayerMenu(void) +{ + int oldValue = entrerMenuJoueur; + entrerMenuJoueur = popVar(); + + return oldValue; +} + +int16 Op_ChangeSaveAllowedState(void) +{ + int oldValue = userEnabled; + int newValue = popVar(); + + if(newValue != -1) + { + userEnabled = newValue; + } + + return oldValue; +} + +int16 Op_changeCutSceneState(void) +{ + int oldValue = affichePasMenuJoueur; + int newValue = popVar(); + + if(newValue != -1) + { + affichePasMenuJoueur = newValue; + } + + return oldValue; +} + +int16 Op_62(void) +{ + if(currentScriptPtr->var1A == 20) + { + changeScriptParamInList(currentScriptPtr->var18,currentScriptPtr->var16,&scriptHandle2,9997,-1); + } + else + if(currentScriptPtr->var1A == 30) + { + changeScriptParamInList(currentScriptPtr->var18,currentScriptPtr->var16,&scriptHandle1,9997,-1); + } + + return 0; +} + +int16 Op_loadBackground(void) +{ + int result = 0; + uint8 bgName[36] = ""; + uint8* ptr; + int bgIdx; + + ptr = (uint8*)popPtr(); + + strcpyuint8(bgName,ptr); + + bgIdx = popVar(); + + if(bgIdx >= 0 || bgIdx < 8) + { + strToUpper(bgName); + + gfxModuleData_gfxWaitVSync(); + gfxModuleData_gfxWaitVSync(); + + result = loadBackground((char*)bgName,bgIdx); + } + + changeCursor(0); + + return result; +} + +int16 Op_isFileLoaded2(void) +{ + int param; + + param = popVar(); + + if(param<0 || param>255) + { + return 0; + } + + if(filesDatabase[param].subData.ptr) + { + return 1; + } + + return 0; +} + +int16 Op_loadFile(void) +{ + int param1; + int param2; + int param3; + uint8 name[36] = ""; + uint8* ptr; + + ptr = (uint8*)popPtr(); + + strcpyuint8(name,ptr); + + param1 = popVar(); + param2 = popVar(); + param3 = popVar(); + + if(param3 >= 0 || param3 < 257) + { + strToUpper(name); + + gfxModuleData_gfxWaitVSync(); + gfxModuleData_gfxWaitVSync(); + + saveVar6[0] = 0; + + loadFileMode2(name,param3,param2,param1); + + saveVar6[0] = 0; + } + + changeCursor(0); + return 0; +} + +int16 Op_loadFullBundle(void) +{ + int param1; +// int param2; +// int param3; + uint8 name[36] = ""; + uint8* ptr; + int result = 0; + + ptr = (uint8*)popPtr(); + + strcpyuint8(name,ptr); + + param1 = popVar(); + + if(param1 >= 0 || param1 < 257) + { + strToUpper(name); + + gfxModuleData_gfxWaitVSync(); + gfxModuleData_gfxWaitVSync(); + + result = loadFullBundle(name,param1); + } + + changeCursor(0); + return result; +} + +int16 Op_7(void) +{ + int param1 = popVar(); + int objIdx = popVar(); + int ovlIdx = popVar(); + + if(!ovlIdx) + ovlIdx = currentScriptPtr->overlayNumber; + + Op_7Sub(ovlIdx,objIdx,param1); + + return(0); +} + +int16 Op_GetInitVar1(void) +{ + return initVar1; +} + +int16 Op_prepareFadeOut(void) +{ + printf("Op_prepareFadeOut dummy\n"); + return 0; +} + +int16 isOverlayLoaded(uint8* name) +{ + int16 i; + + for(i=1;ioverlayNumber; + + addObject(overlayIdx,param2,&objectHead,currentScriptPtr->type,currentScriptPtr->scriptNumber,currentScriptPtr->overlayNumber,currentActiveBackgroundPlane,param1); + + return 0; +} + +int16 Op_2F(void) +{ + int16 param1 = popVar(); + int16 param2 = popVar(); + + int16 overlayIdx = popVar(); + + if(!overlayIdx) + overlayIdx = currentScriptPtr->overlayNumber; + + addBackgroundIncrust(overlayIdx,param2,&backgroundIncrustHead,currentScriptPtr->scriptNumber,currentScriptPtr->overlayNumber,currentActiveBackgroundPlane,param1); + + return 0; +} + +int16 Op_8(void) +{ + int var1 = popVar(); + int objectIdx = popVar(); + int ovlNumber = popVar(); + + if(!ovlNumber) + { + ovlNumber = currentScriptPtr->overlayNumber; + } + + removeObjectFromList(ovlNumber, objectIdx, &objectHead, currentActiveBackgroundPlane, var1); + + return 0; +} + +int16 fontFileIndex; + +int16 Op_SetFontFileIndex(void) +{ + fontFileIndex = popVar(); + + return 0; +} + +int16 Op_63(void) +{ + if(currentScriptPtr->var1A == 0x14) + { + changeScriptParamInList(currentScriptPtr->var18,currentScriptPtr->var16,&scriptHandle2,0,-1); + } + else + if(currentScriptPtr->var1A == 0x1E) + { + changeScriptParamInList(currentScriptPtr->var18,currentScriptPtr->var16,&scriptHandle1,0,-1); + } + + return 0; +} + +int16 op7CVar = 0; + +int16 Op_7C(void) +{ + int16 temp = op7CVar; + int16 newVar; + + newVar = popVar(); + if(newVar != -1) + { + op7CVar = newVar; + } + return temp; +} + +int16 Op_message(void) +{ + int16 color = popVar(); + int16 var_2 = popVar(); + int16 var_4 = popVar(); + int16 var_6 = popVar(); + int16 var_8 = popVar(); + int16 overlayIdx = popVar(); + + if(!overlayIdx) + overlayIdx = currentScriptPtr->overlayNumber; + + if( color == -1 ) + { + color = 0; + //ASSERT(0); + //color = calcTabSomething(); + } + else + { + if(CVTLoaded) + { + color = cvtPalette[color]; + } + } + + createTextObject(overlayIdx, var_8, &objectHead, currentScriptPtr->scriptNumber, currentScriptPtr->overlayNumber, currentActiveBackgroundPlane, color, var_2, var_4, var_6); + + return 0; +} + +int16 Op_loadAudioResource(void) +{ + popPtr(); + popVar(); + + return 0; +} + +int16 Op_loadCtp(void) +{ + return loadCtp((uint8*)popPtr()); +} + +int16 Op_loadMusic(void) +{ + popPtr(); + return 0; +} + +int16 Op_21(void) +{ + int param1 = popVar(); + int param2 = popVar(); + int overlay = popVar(); + + if(!overlay) + overlay = currentScriptPtr->overlayNumber; + + return mainProc13(overlay, param2, &actorHead, param1); +} + +int16 Op_76(void) +{ + popPtr(); + popVar(); + + return 0; +} + +int16 Op_65(void) +{ + objectStruct* pObject; + int var_C = popVar(); + int var_E = popVar(); + int var_4 = popVar(); + int var_10 = popVar(); + int var_12 = popVar(); + int di = popVar(); + int var_8 = popVar(); + int var_2 = popVar(); + int var_6 = popVar(); + int overlay = popVar(); + + if(!overlay) + overlay = currentScriptPtr->overlayNumber; + + pObject = addObject(overlay, var_6, &objectHead, currentScriptPtr->type, currentScriptPtr->scriptNumber, currentScriptPtr->overlayNumber, currentActiveBackgroundPlane, 4); + + if(!pObject) + return 0; + + pObject->field_2C = var_C; + pObject->field_30 = var_E; + pObject->nextAnimDelay = var_4; + pObject->field_26 = var_10; + pObject->field_22 = var_12; + pObject->field_20 = di; + pObject->field_2A = var_8; + pObject->field_28 = var_2; + + if(var_8) + { + if(currentScriptPtr->type == 20) + { + changeScriptParamInList(currentScriptPtr->overlayNumber, currentScriptPtr->scriptNumber, &scriptHandle2, 9996, -1); + } + else + if(currentScriptPtr->type == 30) + { + changeScriptParamInList(currentScriptPtr->overlayNumber, currentScriptPtr->scriptNumber, &scriptHandle1, 9996, -1); + } + } + + if(var_2 == 5) + { + Op_7Sub(pObject->overlay, pObject->idx, di); + } + else + { + setObjectPosition(pObject->overlay, pObject->idx, pObject->field_28, di); + } + + if(var_4 < 0) + { + objectParamsQuery params; + + getMultipleObjectParam(overlay, var_6, ¶ms); + pObject->currentAnimDelay = params.var6; + } + + return 0; +} + +int16 Op_66(void) +{ + objectParamsQuery params; + int index = popVar(); + int overlay = popVar(); + + if(!overlay) + overlay = currentScriptPtr->overlayNumber; + + getMultipleObjectParam(overlay, index, ¶ms); + + return params.var7; +} + +int16 Op_SetActiveBackgroundPlane(void) +{ + int currentPlane = currentActiveBackgroundPlane; + int newPlane = popVar(); + + if(newPlane >= 0 && newPlane < 8) + { + if(backgroundPtrtable[newPlane]) + { + currentActiveBackgroundPlane = newPlane; + initVar3 = 1; + } + } + + return currentPlane; +} + +int op6AVar; + +int16 Op_6A(void) +{ + op6AVar = popVar(); + return 0; +} + +int op7BVar = 0; + +int16 Op_7B(void) +{ + int di = popVar(); + int si = 1 - op7BVar; + int sign; + + if(di) + { + sign = di/(abs(di)); + } + else + { + sign = 0; + } + + op7BVar = -sign; + + return si; +} + +void removeBackgroundIncrust(int overlay, int idx, backgroundIncrustStruct* pHead) +{ + objectParamsQuery params; + int var_4; + int var_6; + + backgroundIncrustStruct* pCurrent; + backgroundIncrustStruct* pCurrentHead; + + getMultipleObjectParam(overlay, idx, ¶ms); + + var_4 = params.X; + var_6 = params.Y; + + pCurrent = pHead->next; + + while(pCurrent) + { + if( (pCurrent->overlayIdx == overlay || overlay == -1) && + (pCurrent->objectIdx == idx || idx == -1) && + (pCurrent->X == var_4) && + (pCurrent->Y == var_6)) + { + pCurrent->field_6 = -1; + } + + pCurrent = pCurrent->next; + } + + pCurrentHead = pHead; + pCurrent = pHead->next; + + while(pCurrent) + { + if(pCurrent->field_6 == -1) + { + backgroundIncrustStruct* pNext = pCurrent->next; + backgroundIncrustStruct* bx = pCurrentHead; + backgroundIncrustStruct* cx; + + bx->next = pNext; + cx = pNext; + + if(!pNext) + { + cx = pHead; + } + + bx = cx; + bx->prev = pCurrent->next; + + if(pCurrent->ptr) + { + free(pCurrent->ptr); + } + + free(pCurrent); + + pCurrent = pNext; + } + else + { + pCurrentHead = pCurrent; + pCurrent = pCurrent->next; + } + } +} + + +int16 Op_removeBackgroundIncrust(void) +{ + int idx = popVar(); + int overlay = popVar(); + + if(!overlay) + { + overlay = currentScriptPtr->overlayNumber; + } + + removeBackgroundIncrust(overlay, idx, &backgroundIncrustHead); + + return 0; +} + +int16 Op_D(void) // TODO: palette manipulation +{ + int var_4 = popVar(); + int var_6 = popVar(); + int var_8 = popVar(); + int si = popVar(); + int di = popVar(); + + return 0; +} + +int16 Op_78(void) +{ + int si = var41; + + var41 = popVar(); + + return si; +} + +int16 Op_releaseOverlay(void) +{ + int overlayIdx; + + overlayIdx = popVar(); + + if(strlen(overlayTable[overlayIdx].overlayName)) + { + releaseOverlay(overlayTable[overlayIdx].overlayName); + } + + return 0; +} + +int16 Op_drawLine(void) +{ + int di = popVar(); + int var_2 = popVar(); + int var_4 = popVar(); + int var_6 = popVar(); + uint8* ptr = (uint8*)popPtr(); + + //drawLinePtr(var_6, var_4, var_2, ptr); + + // flipGen(ptr); + + return 0; +} + +int16 Op_61(void) +{ + int si = popVar(); + popVar(); + + return si; +} + +int16 Op_1A(void) +{ + var46 = popVar(); + var45 = popVar(); + var42 = popVar(); + var39 = popVar(); + return 0; +} + +int16 subOp22(int param) +{ + return (((param - var46)*(var39-var42))/(var45 - var46))+var42; +} + +int16 subOp23(int param1, int param2) +{ + return (param1*param2)>>8; +} + +int16 Op_23(void) +{ + int si = popVar(); + int dx = popVar(); + + return subOp23(dx,si); +} + +int16 Op_22(void) +{ + return(subOp22(popVar())); +} + +actorStruct* addAnimation(int overlay, int idx, actorStruct* pHead2, int param, int param2) +{ + actorStruct* pCurrent; + actorStruct* pHead = pHead2; + actorStruct* si = pHead->next; + actorStruct* bx = pHead; + actorStruct* pNewElement; + + if(si) + { + do + { + bx = si; + si = bx->next; + }while(si); + } + + pHead = bx; + pCurrent = si; + + if(pCurrent && (pCurrent->overlayNumber == overlay) && (pCurrent->var4 == idx) && (pCurrent->type == param2)) + { + return NULL; + } + else + { + actorStruct* cx; + + si = pNewElement = (actorStruct*)malloc(sizeof(actorStruct)); + + pNewElement->next = pHead->next; + pHead->next = pNewElement; + + cx = pCurrent; + + if(!pCurrent) + { + cx = pHead; + } + + bx = cx; + si->prev = bx->prev; + bx->prev = si; + si->var4 = idx; + si->type = param2; + si->pathId = -1; + si->overlayNumber = overlay; + si->startDirection = param; + si->nextDirection = -1; + si->stepX = 5; + si->stepY = 2; + si->phase = ANIM_PHASE_WAIT; + si->flag = 0; + si->freeze = 0; + + return si; + } +} + +int flag_obstacle; // computedVar14Bis + +void checkCollisionWithWalkBoxesBoundingBoxes(int x, int y) +{ + ctpVar19Struct* di = ctpVar19; + + do + { + int minX; + int maxX; + int minY; + int maxY; + + ctpVar19SubStruct* subStruct; + + if(-1 == (int) di->field_0) // ok, ugly, but it's in the original + { + flag_obstacle = 0; + return; + } + + subStruct = &di->subStruct; + + minX = subStruct->minX; + maxX = subStruct->maxX; + minY = subStruct->minY; + maxY = subStruct->maxY; + + computedVar14 = subStruct->boxIdx; // Box index + + if(!(walkboxChange[subStruct->boxIdx]) && (minY >= x) && (maxY <= x) && (minX >= y) && (maxX <= y)) + { + /**************/ + + flag_obstacle = walkboxType[computedVar14]; + + /**************/ + } + + di = di->field_0; + } while(1); + + flag_obstacle = 0; +} + +// add animation +int16 Op_18(void) +{ + int var_C = popVar(); + int var_E = popVar(); + int direction = popVar(); + int var_8 = popVar(); + int var_A = popVar(); + int var_2 = popVar(); + int overlay = popVar(); + + if(!overlay) + { + overlay = currentScriptPtr->overlayNumber; + } + + if(direction>=0 && direction<=3) + { + actorStruct* si; + + si = addAnimation(overlay, var_2, &actorHead, direction, var_A); + + if(si) + { + int var_4; + objectParamsQuery params; + + getMultipleObjectParam(overlay, var_2, ¶ms); + + si->x = params.X; + si->y = params.Y; + si->x_dest = -1; + si->y_dest = -1; + si->endDirection = -1; + si->start = var_8; + si->stepX = var_E; + si->stepY = var_C; + + var_A = abs(actorTable1[direction].data[0]) - 1; + + var_4 = subOp22(params.Y); + + if(actorTable1[direction].data[0] < 0) + { + var_4 = - var_4; + } + + checkCollisionWithWalkBoxesBoundingBoxes(params.X, params.Y); + + setObjectPosition(overlay, var_2, 3, var_8 + var_A); + setObjectPosition(overlay, var_2, 4, var_4); + setObjectPosition(overlay, var_2, 5, computedVar14); + + animationStart = 0; + } + } + + return 0; +} + +int16 Op_regenerateBackgroundIncrust(void) +{ + regenerateBackgroundIncrust(&backgroundIncrustHead); + return 0; +} + +int16 Op_SetStringColors(void) +{ + // TODO: here ignore if low color mode + + colorOfSelectedSaveDrive = (uint8)popVar(); + video2 = (uint8)popVar(); + video3 = (uint8)popVar(); + video4 = (uint8)popVar(); + + return 0; +} + +int16 Op_1E(void) // setup actor position +{ + actorStruct* pActor; + + int var0 = popVar(); + int actorY = popVar(); + int actorX = popVar(); + int var1 = popVar(); + int var2 = popVar(); + int overlay = popVar(); + + if(!overlay) + { + overlay = currentScriptPtr->overlayNumber; + } + + pActor = findActor(overlay,var2,&actorHead,var1); + + if(!pActor) + { + return 1; + } + + animationStart = 0; + + pActor->x_dest = actorX; + pActor->y_dest = actorY; + pActor->flag = 1; + pActor->endDirection = var0; + + return 0; +} + +int16 Op_45(void) +{ + printf("Partial op 45 stop sound\n"); + + return 0; +} + +int16 Op_5C(void) +{ + popPtr(); + popVar(); + + printf("Partial op 5C\n"); + + return 0; +} + +int16 Op_5E(void) +{ + popVar(); + + printf("Partial op 5E (sound related)\n"); + + return 0; +} + +int16 Op_3E(void) +{ + printf("Partial op 3E (sound related)\n"); + + return 0; +} + +void setVar49Value(int value) +{ + flagCt = value; +} + +int16 Op_3A(void) +{ + setVar49Value(1); + return 0; +} + +int16 Op_3B(void) +{ + setVar49Value(0); + return 0; +} + +int16 Op_3F(void) +{ + printf("Partial op 3F (sound related)\n"); + return 0; +} + +int16 Op_40(void) +{ + printf("Partial op 40 (sound related)\n"); + //freeStuff1(); + freeStuff2(); + + var24 = 0; + var23 = 0; + return 0; +} + +int16 Op_19(void) +{ + popVar(); + popVar(); + popVar(); + + printf("Partial op 19 (remove actor)\n"); + + return 0; +} + +int16 Op_6C(void) +{ + int var0; + int var1; + int temp; + + var0 = popVar(); + var1 = popVar(); + + if(!var1) + { + var1 = currentScriptPtr->overlayNumber; + } + + temp = overlayTable[var1].executeScripts; + overlayTable[var1].executeScripts = var0; + + return temp; +} + +void configureAllObjects(int overlayIdx, objectStruct* pObject, int var4, int var0, int var1, int var2, int var3) +{ + while(pObject) + { + if((pObject->overlay == overlayIdx) || (overlayIdx == -1)) + { + if((pObject->idx == var4) || (var4 == -1)) + { + if((pObject->type == var3) || (var3 == -1)) + { + if((pObject->backgroundPlane == var2) || (var2 == -1)) + { + if((pObject->hide == var1) || (var1 == -1)) + { + pObject->hide = var0; + } + } + } + } + } + + pObject = pObject->next; + } +} + +int16 Op_16(void) +{ + int var0; + int var1; + int var2; + int var3; + int var4; + int var5; + + var0 = popVar(); + var1 = popVar(); + var2 = popVar(); + var3 = popVar(); + var4 = popVar(); + var5 = popVar(); + + if(!var5) + { + var5 = currentScriptPtr->overlayNumber; + } + + configureAllObjects(var5, &objectHead, var4, var0, var1, var2, var3); + + return 0; +} + +void Op_60Sub(int overlayIdx, actorStruct* pActorHead, int var0, int var1, int var2, int var3) +{ + actorStruct* pActor = findActor(overlayIdx, var0, pActorHead, var3); + + if(pActor) + { + if((pActor->freeze == var2) || (var2 == -1)) + { + pActor->freeze = var1; + } + } +} + +int16 Op_60(void) +{ + int var0; + int var1; + int var2; + int var3; + int var4; + + var0 = popVar(); + var1 = popVar(); + var2 = popVar(); + var3 = popVar(); + var4 = popVar(); + + if(!var4) + { + var4 = currentScriptPtr->overlayNumber; + } + + Op_60Sub(var4, &actorHead, var3, var0, var1, var2); + + return 0; +} + +int16 Op_6F(void) +{ + int numArgs = popVar(); + + assert(numArgs == 0); + + { + int var = popVar(); + char* string = (char*)popPtr(); + + printf("partial opcode 6F sprintf (%s)\n", string); + } + + return 0; +} + +int16 Op_6E(void) +{ + char* ptr0 = (char*)popPtr(); + char* ptr1 = (char*)popPtr(); + + printf("partial opcode 6E (%s)(%s)\n", ptr0, ptr1); + + return 0; +} + +int16 Op_72(void) +{ + int var0 = popVar(); + char* ptr = (char*)popPtr(); + int var1 = popVar(); + + if(!var1) + var1 = currentScriptPtr->overlayNumber; + + return getProcParam(var1, var0, (uint8*)ptr); +} + +int16 Op_2A(void) +{ + char var_26[36]; + char* ptr = (char*)popPtr(); + int overlayIdx; + + var_26[0] = 0; + + if(ptr) + { + strcpy(var_26, ptr); + } + + overlayIdx = popVar(); + + if(!overlayIdx) + overlayIdx = currentScriptPtr->overlayNumber; + + return getProcParam(overlayIdx, 40, (uint8*)var_26); +} + +void setupOpcodeTable(void) +{ + int i; + + for(i=0;i<256;i++) + { + opcodeTablePtr[i] = NULL; + } + + opcodeTablePtr[0x1] = Op_setMain5; + opcodeTablePtr[0x2] = Op_prepareFadeOut; + opcodeTablePtr[0x3] = Op_loadBackground; + opcodeTablePtr[0x4] = Op_loadFullBundle; + opcodeTablePtr[0x5] = Op_5; + opcodeTablePtr[0x6] = Op_startObject; + opcodeTablePtr[0x7] = Op_7; + opcodeTablePtr[0x8] = Op_8; + opcodeTablePtr[0x9] = Op_freeObjectList; + opcodeTablePtr[0xA] = Op_removeScript; + opcodeTablePtr[0xB] = Op_resetFilesEntries; + opcodeTablePtr[0xC] = Op_loadOverlay; + opcodeTablePtr[0xD] = Op_D; + opcodeTablePtr[0xE] = Op_E; + opcodeTablePtr[0x10] = Op_releaseScript2; + opcodeTablePtr[0x11] = Op_isOverlayLoaded; + opcodeTablePtr[0x13] = Op_message; + opcodeTablePtr[0x14] = Op_14; + opcodeTablePtr[0x16] = Op_16; + opcodeTablePtr[0x17] = Op_loadCtp; + opcodeTablePtr[0x18] = Op_18; + opcodeTablePtr[0x19] = Op_19; + opcodeTablePtr[0x1A] = Op_1A; + opcodeTablePtr[0x1E] = Op_1E; + opcodeTablePtr[0x21] = Op_21; + opcodeTablePtr[0x22] = Op_22; + opcodeTablePtr[0x24] = Op_SetStringColors; + opcodeTablePtr[0x28] = Op_ChangeSaveAllowedState; + opcodeTablePtr[0x29] = Op_freeAllPerso; + opcodeTablePtr[0x2A] = Op_2A; + opcodeTablePtr[0x2B] = Op_2B; + opcodeTablePtr[0x2C] = Op_2C; + opcodeTablePtr[0x2E] = Op_releaseOverlay; + opcodeTablePtr[0x2F] = Op_2F; + opcodeTablePtr[0x30] = Op_removeBackgroundIncrust; + opcodeTablePtr[0x32] = Op_freeBackgroundInscrustList; + opcodeTablePtr[0x37] = Op_37; + opcodeTablePtr[0x38] = Op_removeBackground; + opcodeTablePtr[0x39] = Op_SetActiveBackgroundPlane; + opcodeTablePtr[0x3A] = Op_3A; + opcodeTablePtr[0x3B] = Op_3B; + opcodeTablePtr[0x3C] = Op_rand; + opcodeTablePtr[0x3D] = Op_loadMusic; + opcodeTablePtr[0x3E] = Op_3E; + opcodeTablePtr[0x3F] = Op_3F; + opcodeTablePtr[0x40] = Op_40; + opcodeTablePtr[0x41] = Op_isFileLoaded2; + opcodeTablePtr[0x45] = Op_45; + opcodeTablePtr[0x54] = Op_SetFontFileIndex; + opcodeTablePtr[0x56] = Op_changeCutSceneState; + opcodeTablePtr[0x57] = Op_GetMouseX; + opcodeTablePtr[0x58] = Op_GetMouseY; + opcodeTablePtr[0x59] = Op_GetMouseClick3; + opcodeTablePtr[0x5A] = Op_isFileLoaded; + opcodeTablePtr[0x5B] = Op_regenerateBackgroundIncrust; + opcodeTablePtr[0x5C] = Op_5C; + opcodeTablePtr[0x5E] = Op_5E; + opcodeTablePtr[0x60] = Op_60; + opcodeTablePtr[0x61] = Op_61; + opcodeTablePtr[0x62] = Op_62; + opcodeTablePtr[0x63] = Op_63; + opcodeTablePtr[0x64] = Op_startScript; + opcodeTablePtr[0x65] = Op_65; + opcodeTablePtr[0x66] = Op_66; + opcodeTablePtr[0x67] = Op_loadAudioResource; + opcodeTablePtr[0x68] = Op_freeMediumVar; + opcodeTablePtr[0x6A] = Op_6A; + opcodeTablePtr[0x6B] = Op_loadFile; + opcodeTablePtr[0x6C] = Op_6C; + opcodeTablePtr[0x6D] = Op_strcpy; + opcodeTablePtr[0x6E] = Op_6E; + opcodeTablePtr[0x6F] = Op_6F; + opcodeTablePtr[0x70] = Op_comment; + opcodeTablePtr[0x71] = Op_drawLine; + opcodeTablePtr[0x72] = Op_72; + opcodeTablePtr[0x74] = Op_GetInitVar1; + opcodeTablePtr[0x76] = Op_76; + opcodeTablePtr[0x79] = Op_EnterPlayerMenu; + opcodeTablePtr[0x78] = Op_78; + opcodeTablePtr[0x7B] = Op_7B; + opcodeTablePtr[0x7C] = Op_7C; + opcodeTablePtr[0x7D] = Op_freeAllMenu; + // TODO: copy the opcodes here +} + +int32 opcodeType8(void) +{ + int opcode = getByteFromScript(); + + if(!opcode) + return(-21); + + if(opcode>0x100) + return(-21); + + if(opcodeTablePtr[opcode]) + { + //printf("Function: %X\n",opcode); + pushVar(opcodeTablePtr[opcode]()); + return(0); + } + else + { + printf("Unsupported opcode %X in opcode type 8\n",opcode); + // exit(1); + } + + return 0; + +} + + +} // End of namespace Cruise -- cgit v1.2.3 From a1217a9b6a38ba91e93968cc63e4d917246150ae Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Fri, 27 Apr 2007 15:53:25 +0000 Subject: Fixed some warnings and unused variables svn-id: r26611 --- engines/cruise/function.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'engines/cruise/function.cpp') diff --git a/engines/cruise/function.cpp b/engines/cruise/function.cpp index ed81853cc5..bf0e92b24a 100644 --- a/engines/cruise/function.cpp +++ b/engines/cruise/function.cpp @@ -1047,11 +1047,13 @@ int16 Op_removeBackgroundIncrust(void) int16 Op_D(void) // TODO: palette manipulation { + /* int var_4 = popVar(); int var_6 = popVar(); int var_8 = popVar(); int si = popVar(); int di = popVar(); + */ return 0; } @@ -1081,11 +1083,13 @@ int16 Op_releaseOverlay(void) int16 Op_drawLine(void) { + /* int di = popVar(); int var_2 = popVar(); int var_4 = popVar(); int var_6 = popVar(); uint8* ptr = (uint8*)popPtr(); + */ //drawLinePtr(var_6, var_4, var_2, ptr); -- cgit v1.2.3 From def6179a641fd5765e524bb7fdc18c4538175f08 Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Fri, 27 Apr 2007 16:03:45 +0000 Subject: Fixing some more warnings svn-id: r26612 --- engines/cruise/function.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'engines/cruise/function.cpp') diff --git a/engines/cruise/function.cpp b/engines/cruise/function.cpp index bf0e92b24a..72030b7359 100644 --- a/engines/cruise/function.cpp +++ b/engines/cruise/function.cpp @@ -354,8 +354,8 @@ int16 Op_isFileLoaded(void) int16 Op_resetFilesEntries(void) { - int var1; - int var2; + //int var1; + //int var2; var1 = popVar(); var2 = popVar(); @@ -713,7 +713,7 @@ int16 Op_2F(void) int16 Op_8(void) { - int var1 = popVar(); + var1 = popVar(); int objectIdx = popVar(); int ovlNumber = popVar(); @@ -1324,11 +1324,11 @@ int16 Op_1E(void) // setup actor position { actorStruct* pActor; - int var0 = popVar(); + var0 = popVar(); int actorY = popVar(); int actorX = popVar(); - int var1 = popVar(); - int var2 = popVar(); + var1 = popVar(); + var2 = popVar(); int overlay = popVar(); if(!overlay) @@ -1433,8 +1433,8 @@ int16 Op_19(void) int16 Op_6C(void) { - int var0; - int var1; + //int var0; + //int var1; int temp; var0 = popVar(); @@ -1478,12 +1478,14 @@ void configureAllObjects(int overlayIdx, objectStruct* pObject, int var4, int va int16 Op_16(void) { + /* int var0; int var1; int var2; int var3; int var4; int var5; + */ var0 = popVar(); var1 = popVar(); @@ -1517,11 +1519,13 @@ void Op_60Sub(int overlayIdx, actorStruct* pActorHead, int var0, int var1, int v int16 Op_60(void) { + /* int var0; int var1; int var2; int var3; int var4; + */ var0 = popVar(); var1 = popVar(); -- cgit v1.2.3 From 63fcc7feea6c56d148ccffeb4059b51b757c7318 Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Fri, 27 Apr 2007 16:23:12 +0000 Subject: Removed some more warnings, fixed a regression made svn-id: r26613 --- engines/cruise/function.cpp | 46 +++++++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 20 deletions(-) (limited to 'engines/cruise/function.cpp') diff --git a/engines/cruise/function.cpp b/engines/cruise/function.cpp index 72030b7359..63186fef5a 100644 --- a/engines/cruise/function.cpp +++ b/engines/cruise/function.cpp @@ -1047,13 +1047,13 @@ int16 Op_removeBackgroundIncrust(void) int16 Op_D(void) // TODO: palette manipulation { - /* - int var_4 = popVar(); - int var_6 = popVar(); - int var_8 = popVar(); - int si = popVar(); - int di = popVar(); - */ + var_4 = popVar(); + var_6 = popVar(); + var_8 = popVar(); + //int si = popVar(); + //int di = popVar(); + popVar(); + popVar(); return 0; } @@ -1091,6 +1091,12 @@ int16 Op_drawLine(void) uint8* ptr = (uint8*)popPtr(); */ + popVar(); + popVar(); + popVar(); + popVar(); + popPtr(); + //drawLinePtr(var_6, var_4, var_2, ptr); // flipGen(ptr); @@ -1451,21 +1457,21 @@ int16 Op_6C(void) return temp; } -void configureAllObjects(int overlayIdx, objectStruct* pObject, int var4, int var0, int var1, int var2, int var3) +void configureAllObjects(int overlayIdx, objectStruct* pObject, int _var4, int _var0, int _var1, int _var2, int _var3) { while(pObject) { if((pObject->overlay == overlayIdx) || (overlayIdx == -1)) { - if((pObject->idx == var4) || (var4 == -1)) + if((pObject->idx == _var4) || (_var4 == -1)) { - if((pObject->type == var3) || (var3 == -1)) + if((pObject->type == _var3) || (_var3 == -1)) { - if((pObject->backgroundPlane == var2) || (var2 == -1)) + if((pObject->backgroundPlane == _var2) || (_var2 == -1)) { - if((pObject->hide == var1) || (var1 == -1)) + if((pObject->hide == _var1) || (_var1 == -1)) { - pObject->hide = var0; + pObject->hide = _var0; } } } @@ -1504,15 +1510,15 @@ int16 Op_16(void) return 0; } -void Op_60Sub(int overlayIdx, actorStruct* pActorHead, int var0, int var1, int var2, int var3) +void Op_60Sub(int overlayIdx, actorStruct* pActorHead, int _var0, int _var1, int _var2, int _var3) { - actorStruct* pActor = findActor(overlayIdx, var0, pActorHead, var3); + actorStruct* pActor = findActor(overlayIdx, _var0, pActorHead, _var3); if(pActor) { - if((pActor->freeze == var2) || (var2 == -1)) + if((pActor->freeze == _var2) || (_var2 == -1)) { - pActor->freeze = var1; + pActor->freeze = _var1; } } } @@ -1550,7 +1556,7 @@ int16 Op_6F(void) assert(numArgs == 0); { - int var = popVar(); + popVar(); char* string = (char*)popPtr(); printf("partial opcode 6F sprintf (%s)\n", string); @@ -1571,9 +1577,9 @@ int16 Op_6E(void) int16 Op_72(void) { - int var0 = popVar(); + var0 = popVar(); char* ptr = (char*)popPtr(); - int var1 = popVar(); + var1 = popVar(); if(!var1) var1 = currentScriptPtr->overlayNumber; -- cgit v1.2.3 From b5bc32cf56575286c0b6653d130f0f3980023df7 Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Fri, 27 Apr 2007 16:28:22 +0000 Subject: Wrong paste svn-id: r26614 --- engines/cruise/function.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'engines/cruise/function.cpp') diff --git a/engines/cruise/function.cpp b/engines/cruise/function.cpp index 63186fef5a..c1c3ca58ec 100644 --- a/engines/cruise/function.cpp +++ b/engines/cruise/function.cpp @@ -1047,13 +1047,16 @@ int16 Op_removeBackgroundIncrust(void) int16 Op_D(void) // TODO: palette manipulation { - var_4 = popVar(); - var_6 = popVar(); - var_8 = popVar(); + //var_4 = popVar(); + //var_6 = popVar(); + //var_8 = popVar(); //int si = popVar(); //int di = popVar(); popVar(); popVar(); + popVar(); + popVar(); + popVar(); return 0; } -- cgit v1.2.3 From b4e196e4fd2f6efef5e109cf0e8449eb8ae50130 Mon Sep 17 00:00:00 2001 From: Max Horn Date: Fri, 27 Apr 2007 19:54:14 +0000 Subject: Fixing lots of warnings svn-id: r26617 --- engines/cruise/function.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'engines/cruise/function.cpp') diff --git a/engines/cruise/function.cpp b/engines/cruise/function.cpp index c1c3ca58ec..e35b680f26 100644 --- a/engines/cruise/function.cpp +++ b/engines/cruise/function.cpp @@ -984,7 +984,7 @@ void removeBackgroundIncrust(int overlay, int idx, backgroundIncrustStruct* pHea (pCurrent->X == var_4) && (pCurrent->Y == var_6)) { - pCurrent->field_6 = -1; + pCurrent->field_6 = (uint16)-1; } pCurrent = pCurrent->next; @@ -995,7 +995,7 @@ void removeBackgroundIncrust(int overlay, int idx, backgroundIncrustStruct* pHea while(pCurrent) { - if(pCurrent->field_6 == -1) + if(pCurrent->field_6 == (uint16)-1) { backgroundIncrustStruct* pNext = pCurrent->next; backgroundIncrustStruct* bx = pCurrentHead; -- cgit v1.2.3 From 0d07a51acf775b638b1112e707cc615041a2e938 Mon Sep 17 00:00:00 2001 From: Vincent Hamm Date: Fri, 27 Apr 2007 20:31:43 +0000 Subject: Cleanup svn-id: r26624 --- engines/cruise/function.cpp | 460 ++++++++++++++++++++++---------------------- 1 file changed, 226 insertions(+), 234 deletions(-) (limited to 'engines/cruise/function.cpp') diff --git a/engines/cruise/function.cpp b/engines/cruise/function.cpp index e35b680f26..eb40ca13e7 100644 --- a/engines/cruise/function.cpp +++ b/engines/cruise/function.cpp @@ -23,6 +23,7 @@ */ #include "cruise/cruise_main.h" +#include "cruise/cell.h" namespace Cruise { @@ -50,7 +51,7 @@ actorTableStruct actorTable1[] = { } }; -int16 Op_loadOverlay(void) +int16 Op_LoadOverlay(void) { uint8* originalScriptName; uint8 scriptName[38]; @@ -151,7 +152,7 @@ int16 Op_startScript(void) return(0); } -int16 Op_startObject(void) +int16 Op_AddProc(void) { int pop1 = popVar(); int pop2; @@ -234,14 +235,14 @@ int16 Op_rand(void) // TODO: implement return(rand()%var); } -int16 Op_E(void) // TODO: implement +int16 Op_PlayFX(void) // TODO: implement { popVar(); popVar(); popVar(); popVar(); - // printf("Op_E, implement (sound related)\n"); + // printf("Op_PlayFX, implement (sound related)\n"); return(0); } @@ -252,16 +253,16 @@ int16 Op_freeAllPerso(void) return(0); } -void freeObjectList(objectStruct* pListHead) +void freeObjectList(cellStruct* pListHead) { int var_2 = 0; - objectStruct* pCurrent = pListHead->next; + cellStruct* pCurrent = pListHead->next; while(pCurrent) { - objectStruct* pNext = pCurrent->next; + cellStruct* pNext = pCurrent->next; - if(pCurrent->hide == 0) + if(pCurrent->freeze == 0) { free(pCurrent->gfxPtr); free(pCurrent); @@ -278,9 +279,9 @@ void freeObjectList(objectStruct* pListHead) } } -int16 Op_freeObjectList(void) +int16 Op_FreeCell(void) { - freeObjectList(&objectHead); + freeObjectList(&cellHead); return(0); } @@ -307,7 +308,7 @@ int16 Op_freeMediumVar(void) return(0); } -int16 Op_14(void) +int16 Op_RemoveMessage(void) { int idx; int overlay; @@ -320,7 +321,7 @@ int16 Op_14(void) overlay = currentScriptPtr->overlayNumber; } - removeObjectFromList(overlay, idx, &objectHead, currentActiveBackgroundPlane, 5); + removeObjectFromList(overlay, idx, &cellHead, currentActiveBackgroundPlane, 5); return(0); } @@ -352,7 +353,7 @@ int16 Op_isFileLoaded(void) return -1; } -int16 Op_resetFilesEntries(void) +int16 Op_RemoveFrame(void) { //int var1; //int var2; @@ -376,7 +377,7 @@ int16 Op_comment(void) return(0); } -int16 Op_removeScript(void) +int16 Op_RemoveProc(void) { int idx; int overlay; @@ -394,7 +395,7 @@ int16 Op_removeScript(void) return(0); } -int16 Op_releaseScript2(void) +int16 Op_FreeOverlay(void) { uint8 localName[36] = ""; uint8* namePtr; @@ -435,7 +436,7 @@ int16 Op_freeAllMenu(void) return 0; } -int16 Op_EnterPlayerMenu(void) +int16 Op_PlayFXnterPlayerMenu(void) { int oldValue = entrerMenuJoueur; entrerMenuJoueur = popVar(); @@ -484,7 +485,7 @@ int16 Op_62(void) return 0; } -int16 Op_loadBackground(void) +int16 Op_LoadBackground(void) { int result = 0; uint8 bgName[36] = ""; @@ -565,7 +566,7 @@ int16 Op_loadFile(void) return 0; } -int16 Op_loadFullBundle(void) +int16 Op_LoadAbs(void) { int param1; // int param2; @@ -594,7 +595,7 @@ int16 Op_loadFullBundle(void) return result; } -int16 Op_7(void) +int16 Op_InitializeState(void) { int param1 = popVar(); int objIdx = popVar(); @@ -603,7 +604,7 @@ int16 Op_7(void) if(!ovlIdx) ovlIdx = currentScriptPtr->overlayNumber; - Op_7Sub(ovlIdx,objIdx,param1); + Op_InitializeStateSub(ovlIdx,objIdx,param1); return(0); } @@ -613,9 +614,9 @@ int16 Op_GetInitVar1(void) return initVar1; } -int16 Op_prepareFadeOut(void) +int16 Op_FadeOut(void) { - printf("Op_prepareFadeOut dummy\n"); + printf("Op_FadeOut dummy\n"); return 0; } @@ -634,7 +635,7 @@ int16 isOverlayLoaded(uint8* name) return 0; } -int16 Op_isOverlayLoaded(void) +int16 Op_FindOverlay(void) { uint8 name[36] = ""; uint8* ptr; @@ -662,7 +663,7 @@ int16 Op_2C(void) return returnParam; } -int16 Op_setMain5(void) +int16 Op_FadeIn(void) { main5 = 1; return 0; @@ -682,7 +683,7 @@ int16 Op_GetMouseClick3(void) return 0; } -int16 Op_5(void) +int16 Op_AddCell(void) { int16 param1 = popVar(); int16 param2 = popVar(); @@ -691,7 +692,7 @@ int16 Op_5(void) if(!overlayIdx) overlayIdx = currentScriptPtr->overlayNumber; - addObject(overlayIdx,param2,&objectHead,currentScriptPtr->type,currentScriptPtr->scriptNumber,currentScriptPtr->overlayNumber,currentActiveBackgroundPlane,param1); + addCell(overlayIdx,param2,&cellHead,currentScriptPtr->type,currentScriptPtr->scriptNumber,currentScriptPtr->overlayNumber,currentActiveBackgroundPlane,param1); return 0; } @@ -711,7 +712,7 @@ int16 Op_2F(void) return 0; } -int16 Op_8(void) +int16 Op_RemoveCell(void) { var1 = popVar(); int objectIdx = popVar(); @@ -722,7 +723,7 @@ int16 Op_8(void) ovlNumber = currentScriptPtr->overlayNumber; } - removeObjectFromList(ovlNumber, objectIdx, &objectHead, currentActiveBackgroundPlane, var1); + removeObjectFromList(ovlNumber, objectIdx, &cellHead, currentActiveBackgroundPlane, var1); return 0; } @@ -753,7 +754,7 @@ int16 Op_63(void) int16 op7CVar = 0; -int16 Op_7C(void) +int16 Op_InitializeStateC(void) { int16 temp = op7CVar; int16 newVar; @@ -766,7 +767,7 @@ int16 Op_7C(void) return temp; } -int16 Op_message(void) +int16 Op_AddMessage(void) { int16 color = popVar(); int16 var_2 = popVar(); @@ -792,7 +793,7 @@ int16 Op_message(void) } } - createTextObject(overlayIdx, var_8, &objectHead, currentScriptPtr->scriptNumber, currentScriptPtr->overlayNumber, currentActiveBackgroundPlane, color, var_2, var_4, var_6); + createTextObject(overlayIdx, var_8, &cellHead, currentScriptPtr->scriptNumber, currentScriptPtr->overlayNumber, currentActiveBackgroundPlane, color, var_2, var_4, var_6); return 0; } @@ -805,7 +806,7 @@ int16 Op_loadAudioResource(void) return 0; } -int16 Op_loadCtp(void) +int16 Op_LoadCt(void) { return loadCtp((uint8*)popPtr()); } @@ -828,7 +829,7 @@ int16 Op_21(void) return mainProc13(overlay, param2, &actorHead, param1); } -int16 Op_76(void) +int16 Op_InitializeState6(void) { popPtr(); popVar(); @@ -836,38 +837,39 @@ int16 Op_76(void) return 0; } -int16 Op_65(void) +int16 Op_AutoCell(void) { - objectStruct* pObject; - int var_C = popVar(); - int var_E = popVar(); - int var_4 = popVar(); - int var_10 = popVar(); - int var_12 = popVar(); - int di = popVar(); - int var_8 = popVar(); - int var_2 = popVar(); - int var_6 = popVar(); + cellStruct* pObject; + + int signal = popVar(); + int loop = popVar(); + int wait = popVar(); + int animStep = popVar(); + int end = popVar(); + int start = popVar(); + int type = popVar(); + int change = popVar(); + int obj = popVar(); int overlay = popVar(); if(!overlay) overlay = currentScriptPtr->overlayNumber; - pObject = addObject(overlay, var_6, &objectHead, currentScriptPtr->type, currentScriptPtr->scriptNumber, currentScriptPtr->overlayNumber, currentActiveBackgroundPlane, 4); + pObject = addCell(overlay, obj, &cellHead, currentScriptPtr->type, currentScriptPtr->scriptNumber, currentScriptPtr->overlayNumber, currentActiveBackgroundPlane, 4); if(!pObject) return 0; - pObject->field_2C = var_C; - pObject->field_30 = var_E; - pObject->nextAnimDelay = var_4; - pObject->field_26 = var_10; - pObject->field_22 = var_12; - pObject->field_20 = di; - pObject->field_2A = var_8; - pObject->field_28 = var_2; + pObject->field_2C = signal; + pObject->field_30 = loop; + pObject->nextAnimDelay = wait; + pObject->animStep = animStep; + pObject->field_22 = end; + pObject->field_20 = start; + pObject->field_2A = type; + pObject->field_28 = change; - if(var_8) + if(type) { if(currentScriptPtr->type == 20) { @@ -880,21 +882,21 @@ int16 Op_65(void) } } - if(var_2 == 5) + if(change == 5) { - Op_7Sub(pObject->overlay, pObject->idx, di); + Op_InitializeStateSub(pObject->overlay, pObject->idx, start); } else { - setObjectPosition(pObject->overlay, pObject->idx, pObject->field_28, di); + setObjectPosition(pObject->overlay, pObject->idx, pObject->field_28, start); } - if(var_4 < 0) + if(wait < 0) { objectParamsQuery params; - getMultipleObjectParam(overlay, var_6, ¶ms); - pObject->currentAnimDelay = params.var6; + getMultipleObjectParam(overlay, obj, ¶ms); + pObject->currentAnimDelay = params.var6-1; } return 0; @@ -941,7 +943,7 @@ int16 Op_6A(void) int op7BVar = 0; -int16 Op_7B(void) +int16 Op_InitializeStateB(void) { int di = popVar(); int si = 1 - op7BVar; @@ -1045,7 +1047,7 @@ int16 Op_removeBackgroundIncrust(void) return 0; } -int16 Op_D(void) // TODO: palette manipulation +int16 Op_SetColor(void) // TODO: palette manipulation { //var_4 = popVar(); //var_6 = popVar(); @@ -1061,7 +1063,7 @@ int16 Op_D(void) // TODO: palette manipulation return 0; } -int16 Op_78(void) +int16 Op_InitializeState8(void) { int si = var41; @@ -1084,7 +1086,7 @@ int16 Op_releaseOverlay(void) return 0; } -int16 Op_drawLine(void) +int16 Op_SetColorrawLine(void) { /* int di = popVar(); @@ -1124,7 +1126,7 @@ int16 Op_1A(void) return 0; } -int16 subOp22(int param) +int16 computeZoom(int param) { return (((param - var46)*(var39-var42))/(var45 - var46))+var42; } @@ -1144,66 +1146,54 @@ int16 Op_23(void) int16 Op_22(void) { - return(subOp22(popVar())); + return(computeZoom(popVar())); } -actorStruct* addAnimation(int overlay, int idx, actorStruct* pHead2, int param, int param2) +actorStruct* addAnimation(actorStruct* pHead, int overlay, int objIdx, int param, int param2) { - actorStruct* pCurrent; - actorStruct* pHead = pHead2; - actorStruct* si = pHead->next; - actorStruct* bx = pHead; - actorStruct* pNewElement; + actorStruct* pPrevious = pHead; + actorStruct* pCurrent = pHead->next; - if(si) - { - do - { - bx = si; - si = bx->next; - }while(si); - } + // go to the end of the list + while(pCurrent) + { + pPrevious = pCurrent; + pCurrent = pPrevious->next; + } - pHead = bx; - pCurrent = si; + if(pCurrent && (pCurrent->overlayNumber == overlay) && (pCurrent->idx == objIdx) && (pCurrent->type == param2)) + { + return NULL; + } - if(pCurrent && (pCurrent->overlayNumber == overlay) && (pCurrent->var4 == idx) && (pCurrent->type == param2)) - { - return NULL; - } - else - { - actorStruct* cx; + actorStruct* pNewElement = (actorStruct*)malloc(sizeof(actorStruct)); + if(!pNewElement) + return NULL; - si = pNewElement = (actorStruct*)malloc(sizeof(actorStruct)); + pNewElement->next = pPrevious->next; + pPrevious->next = pNewElement; - pNewElement->next = pHead->next; - pHead->next = pNewElement; + if(!pCurrent) + { + pCurrent = pHead; + } - cx = pCurrent; + pNewElement->prev = pCurrent->prev; + pCurrent->prev = pNewElement; - if(!pCurrent) - { - cx = pHead; - } + pNewElement->idx = objIdx; + pNewElement->type = param2; + pNewElement->pathId = -1; + pNewElement->overlayNumber = overlay; + pNewElement->startDirection = param; + pNewElement->nextDirection = -1; + pNewElement->stepX = 5; + pNewElement->stepY = 2; + pNewElement->phase = ANIM_PHASE_WAIT; + pNewElement->flag = 0; + pNewElement->freeze = 0; - bx = cx; - si->prev = bx->prev; - bx->prev = si; - si->var4 = idx; - si->type = param2; - si->pathId = -1; - si->overlayNumber = overlay; - si->startDirection = param; - si->nextDirection = -1; - si->stepX = 5; - si->stepY = 2; - si->phase = ANIM_PHASE_WAIT; - si->flag = 0; - si->freeze = 0; - - return si; - } + return pNewElement; } int flag_obstacle; // computedVar14Bis @@ -1252,14 +1242,14 @@ void checkCollisionWithWalkBoxesBoundingBoxes(int x, int y) } // add animation -int16 Op_18(void) +int16 Op_AddAnimation(void) { - int var_C = popVar(); - int var_E = popVar(); + int stepY = popVar(); + int stepX = popVar(); int direction = popVar(); - int var_8 = popVar(); - int var_A = popVar(); - int var_2 = popVar(); + int start = popVar(); + int type = popVar(); + int obj = popVar(); int overlay = popVar(); if(!overlay) @@ -1271,46 +1261,56 @@ int16 Op_18(void) { actorStruct* si; - si = addAnimation(overlay, var_2, &actorHead, direction, var_A); + si = addAnimation(&actorHead, overlay, obj, direction, type); if(si) { - int var_4; objectParamsQuery params; - getMultipleObjectParam(overlay, var_2, ¶ms); + getMultipleObjectParam(overlay, obj, ¶ms); si->x = params.X; si->y = params.Y; si->x_dest = -1; si->y_dest = -1; si->endDirection = -1; - si->start = var_8; - si->stepX = var_E; - si->stepY = var_C; + si->start = start; + si->stepX = stepX; + si->stepY = stepY; - var_A = abs(actorTable1[direction].data[0]) - 1; + int newFrame = abs(actorTable1[direction].data[0]) - 1; - var_4 = subOp22(params.Y); + int zoom = computeZoom(params.Y); if(actorTable1[direction].data[0] < 0) { - var_4 = - var_4; + zoom = -zoom; } checkCollisionWithWalkBoxesBoundingBoxes(params.X, params.Y); - setObjectPosition(overlay, var_2, 3, var_8 + var_A); - setObjectPosition(overlay, var_2, 4, var_4); - setObjectPosition(overlay, var_2, 5, computedVar14); + setObjectPosition(overlay, obj, 3, newFrame + start); + setObjectPosition(overlay, obj, 4, zoom); + setObjectPosition(overlay, obj, 5, computedVar14); - animationStart = 0; + animationStart = false; } } return 0; } +int16 Op_RemoveAnimation(void) +{ + popVar(); + popVar(); + popVar(); + + printf("Partial op 19 (remove actor)\n"); + + return 0; +} + int16 Op_regenerateBackgroundIncrust(void) { regenerateBackgroundIncrust(&backgroundIncrustHead); @@ -1352,7 +1352,7 @@ int16 Op_1E(void) // setup actor position return 1; } - animationStart = 0; + animationStart = false; pActor->x_dest = actorX; pActor->y_dest = actorY; @@ -1369,7 +1369,7 @@ int16 Op_45(void) return 0; } -int16 Op_5C(void) +int16 Op_AddCellC(void) { popPtr(); popVar(); @@ -1379,7 +1379,7 @@ int16 Op_5C(void) return 0; } -int16 Op_5E(void) +int16 Op_AddCellE(void) { popVar(); @@ -1429,17 +1429,6 @@ int16 Op_40(void) return 0; } -int16 Op_19(void) -{ - popVar(); - popVar(); - popVar(); - - printf("Partial op 19 (remove actor)\n"); - - return 0; -} - int16 Op_6C(void) { //int var0; @@ -1460,7 +1449,7 @@ int16 Op_6C(void) return temp; } -void configureAllObjects(int overlayIdx, objectStruct* pObject, int _var4, int _var0, int _var1, int _var2, int _var3) +void configureAllObjects(int overlayIdx, cellStruct* pObject, int _var4, int var0, int var1, int _var2, int _var3) { while(pObject) { @@ -1472,9 +1461,9 @@ void configureAllObjects(int overlayIdx, objectStruct* pObject, int _var4, int _ { if((pObject->backgroundPlane == _var2) || (_var2 == -1)) { - if((pObject->hide == _var1) || (_var1 == -1)) + if((pObject->freeze == var1) || (var1 == -1)) { - pObject->hide = _var0; + pObject->freeze = var0; } } } @@ -1485,7 +1474,7 @@ void configureAllObjects(int overlayIdx, objectStruct* pObject, int _var4, int _ } } -int16 Op_16(void) +int16 Op_FreezeCell(void) { /* int var0; @@ -1508,7 +1497,7 @@ int16 Op_16(void) var5 = currentScriptPtr->overlayNumber; } - configureAllObjects(var5, &objectHead, var4, var0, var1, var2, var3); + configureAllObjects(var5, &cellHead, var4, var0, var1, var2, var3); return 0; } @@ -1578,7 +1567,7 @@ int16 Op_6E(void) return 0; } -int16 Op_72(void) +int16 Op_InitializeState2(void) { var0 = popVar(); char* ptr = (char*)popPtr(); @@ -1620,89 +1609,92 @@ void setupOpcodeTable(void) opcodeTablePtr[i] = NULL; } - opcodeTablePtr[0x1] = Op_setMain5; - opcodeTablePtr[0x2] = Op_prepareFadeOut; - opcodeTablePtr[0x3] = Op_loadBackground; - opcodeTablePtr[0x4] = Op_loadFullBundle; - opcodeTablePtr[0x5] = Op_5; - opcodeTablePtr[0x6] = Op_startObject; - opcodeTablePtr[0x7] = Op_7; - opcodeTablePtr[0x8] = Op_8; - opcodeTablePtr[0x9] = Op_freeObjectList; - opcodeTablePtr[0xA] = Op_removeScript; - opcodeTablePtr[0xB] = Op_resetFilesEntries; - opcodeTablePtr[0xC] = Op_loadOverlay; - opcodeTablePtr[0xD] = Op_D; - opcodeTablePtr[0xE] = Op_E; - opcodeTablePtr[0x10] = Op_releaseScript2; - opcodeTablePtr[0x11] = Op_isOverlayLoaded; - opcodeTablePtr[0x13] = Op_message; - opcodeTablePtr[0x14] = Op_14; - opcodeTablePtr[0x16] = Op_16; - opcodeTablePtr[0x17] = Op_loadCtp; - opcodeTablePtr[0x18] = Op_18; - opcodeTablePtr[0x19] = Op_19; - opcodeTablePtr[0x1A] = Op_1A; - opcodeTablePtr[0x1E] = Op_1E; - opcodeTablePtr[0x21] = Op_21; - opcodeTablePtr[0x22] = Op_22; - opcodeTablePtr[0x24] = Op_SetStringColors; - opcodeTablePtr[0x28] = Op_ChangeSaveAllowedState; - opcodeTablePtr[0x29] = Op_freeAllPerso; - opcodeTablePtr[0x2A] = Op_2A; - opcodeTablePtr[0x2B] = Op_2B; - opcodeTablePtr[0x2C] = Op_2C; - opcodeTablePtr[0x2E] = Op_releaseOverlay; - opcodeTablePtr[0x2F] = Op_2F; - opcodeTablePtr[0x30] = Op_removeBackgroundIncrust; - opcodeTablePtr[0x32] = Op_freeBackgroundInscrustList; - opcodeTablePtr[0x37] = Op_37; - opcodeTablePtr[0x38] = Op_removeBackground; - opcodeTablePtr[0x39] = Op_SetActiveBackgroundPlane; - opcodeTablePtr[0x3A] = Op_3A; - opcodeTablePtr[0x3B] = Op_3B; - opcodeTablePtr[0x3C] = Op_rand; - opcodeTablePtr[0x3D] = Op_loadMusic; - opcodeTablePtr[0x3E] = Op_3E; - opcodeTablePtr[0x3F] = Op_3F; - opcodeTablePtr[0x40] = Op_40; - opcodeTablePtr[0x41] = Op_isFileLoaded2; - opcodeTablePtr[0x45] = Op_45; + opcodeTablePtr[0x1] = Op_FadeIn; + opcodeTablePtr[0x2] = Op_FadeOut; + opcodeTablePtr[0x3] = Op_LoadBackground; + opcodeTablePtr[0x4] = Op_LoadAbs; + opcodeTablePtr[0x5] = Op_AddCell; + opcodeTablePtr[0x6] = Op_AddProc; + opcodeTablePtr[0x7] = Op_InitializeState; + opcodeTablePtr[0x8] = Op_RemoveCell; + opcodeTablePtr[0x9] = Op_FreeCell; + opcodeTablePtr[0xA] = Op_RemoveProc; + opcodeTablePtr[0xB] = Op_RemoveFrame; + opcodeTablePtr[0xC] = Op_LoadOverlay; + opcodeTablePtr[0xD] = Op_SetColor; + opcodeTablePtr[0xE] = Op_PlayFX; + opcodeTablePtr[0xF] = NULL; // used to be debug + opcodeTablePtr[0x10] = Op_FreeOverlay; + opcodeTablePtr[0x11] = Op_FindOverlay; + opcodeTablePtr[0x12] = NULL; // used to be exec debug + opcodeTablePtr[0x13] = Op_AddMessage; + opcodeTablePtr[0x14] = Op_RemoveMessage; + opcodeTablePtr[0x15] = NULL; // user wait + opcodeTablePtr[0x16] = Op_FreezeCell; + opcodeTablePtr[0x17] = Op_LoadCt; + opcodeTablePtr[0x18] = Op_AddAnimation; + opcodeTablePtr[0x19] = Op_RemoveAnimation; + opcodeTablePtr[0x1A] = Op_1A; + opcodeTablePtr[0x1E] = Op_1E; + opcodeTablePtr[0x21] = Op_21; + opcodeTablePtr[0x22] = Op_22; + opcodeTablePtr[0x24] = Op_SetStringColors; + opcodeTablePtr[0x28] = Op_ChangeSaveAllowedState; + opcodeTablePtr[0x29] = Op_freeAllPerso; + opcodeTablePtr[0x2A] = Op_2A; + opcodeTablePtr[0x2B] = Op_2B; + opcodeTablePtr[0x2C] = Op_2C; + opcodeTablePtr[0x2E] = Op_releaseOverlay; + opcodeTablePtr[0x2F] = Op_2F; + opcodeTablePtr[0x30] = Op_removeBackgroundIncrust; + opcodeTablePtr[0x32] = Op_freeBackgroundInscrustList; + opcodeTablePtr[0x37] = Op_37; + opcodeTablePtr[0x38] = Op_removeBackground; + opcodeTablePtr[0x39] = Op_SetActiveBackgroundPlane; + opcodeTablePtr[0x3A] = Op_3A; + opcodeTablePtr[0x3B] = Op_3B; + opcodeTablePtr[0x3C] = Op_rand; + opcodeTablePtr[0x3D] = Op_loadMusic; + opcodeTablePtr[0x3E] = Op_3E; + opcodeTablePtr[0x3F] = Op_3F; + opcodeTablePtr[0x40] = Op_40; + opcodeTablePtr[0x41] = Op_isFileLoaded2; + opcodeTablePtr[0x45] = Op_45; opcodeTablePtr[0x54] = Op_SetFontFileIndex; - opcodeTablePtr[0x56] = Op_changeCutSceneState; - opcodeTablePtr[0x57] = Op_GetMouseX; - opcodeTablePtr[0x58] = Op_GetMouseY; - opcodeTablePtr[0x59] = Op_GetMouseClick3; - opcodeTablePtr[0x5A] = Op_isFileLoaded; - opcodeTablePtr[0x5B] = Op_regenerateBackgroundIncrust; - opcodeTablePtr[0x5C] = Op_5C; - opcodeTablePtr[0x5E] = Op_5E; - opcodeTablePtr[0x60] = Op_60; - opcodeTablePtr[0x61] = Op_61; - opcodeTablePtr[0x62] = Op_62; - opcodeTablePtr[0x63] = Op_63; + opcodeTablePtr[0x56] = Op_changeCutSceneState; + opcodeTablePtr[0x57] = Op_GetMouseX; + opcodeTablePtr[0x58] = Op_GetMouseY; + opcodeTablePtr[0x59] = Op_GetMouseClick3; + opcodeTablePtr[0x5A] = Op_isFileLoaded; + opcodeTablePtr[0x5B] = Op_regenerateBackgroundIncrust; + opcodeTablePtr[0x5C] = Op_AddCellC; + opcodeTablePtr[0x5E] = Op_AddCellE; + opcodeTablePtr[0x60] = Op_60; + opcodeTablePtr[0x61] = Op_61; + opcodeTablePtr[0x62] = Op_62; + opcodeTablePtr[0x63] = Op_63; opcodeTablePtr[0x64] = Op_startScript; - opcodeTablePtr[0x65] = Op_65; - opcodeTablePtr[0x66] = Op_66; - opcodeTablePtr[0x67] = Op_loadAudioResource; - opcodeTablePtr[0x68] = Op_freeMediumVar; - opcodeTablePtr[0x6A] = Op_6A; - opcodeTablePtr[0x6B] = Op_loadFile; - opcodeTablePtr[0x6C] = Op_6C; - opcodeTablePtr[0x6D] = Op_strcpy; - opcodeTablePtr[0x6E] = Op_6E; - opcodeTablePtr[0x6F] = Op_6F; - opcodeTablePtr[0x70] = Op_comment; - opcodeTablePtr[0x71] = Op_drawLine; - opcodeTablePtr[0x72] = Op_72; - opcodeTablePtr[0x74] = Op_GetInitVar1; - opcodeTablePtr[0x76] = Op_76; - opcodeTablePtr[0x79] = Op_EnterPlayerMenu; - opcodeTablePtr[0x78] = Op_78; - opcodeTablePtr[0x7B] = Op_7B; - opcodeTablePtr[0x7C] = Op_7C; - opcodeTablePtr[0x7D] = Op_freeAllMenu; - // TODO: copy the opcodes here + opcodeTablePtr[0x65] = Op_AutoCell; + opcodeTablePtr[0x66] = Op_66; + opcodeTablePtr[0x67] = Op_loadAudioResource; + opcodeTablePtr[0x68] = Op_freeMediumVar; + opcodeTablePtr[0x6A] = Op_6A; + opcodeTablePtr[0x6B] = Op_loadFile; + opcodeTablePtr[0x6C] = Op_6C; + opcodeTablePtr[0x6D] = Op_strcpy; + opcodeTablePtr[0x6E] = Op_6E; + opcodeTablePtr[0x6F] = Op_6F; + opcodeTablePtr[0x70] = Op_comment; + opcodeTablePtr[0x71] = Op_SetColorrawLine; + opcodeTablePtr[0x72] = Op_InitializeState2; + opcodeTablePtr[0x74] = Op_GetInitVar1; + opcodeTablePtr[0x76] = Op_InitializeState6; + opcodeTablePtr[0x79] = Op_PlayFXnterPlayerMenu; + opcodeTablePtr[0x78] = Op_InitializeState8; + opcodeTablePtr[0x7B] = Op_InitializeStateB; + opcodeTablePtr[0x7C] = Op_InitializeStateC; + opcodeTablePtr[0x7D] = Op_freeAllMenu; + // TODO: copy the opcodes here } int32 opcodeType8(void) -- cgit v1.2.3 From 101fbdd64f1a9d62c40dcdd20d618a098dc9df7e Mon Sep 17 00:00:00 2001 From: Max Horn Date: Fri, 27 Apr 2007 22:12:46 +0000 Subject: Fixing more warnings svn-id: r26630 --- engines/cruise/function.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'engines/cruise/function.cpp') diff --git a/engines/cruise/function.cpp b/engines/cruise/function.cpp index eb40ca13e7..5603cdd68e 100644 --- a/engines/cruise/function.cpp +++ b/engines/cruise/function.cpp @@ -1449,7 +1449,7 @@ int16 Op_6C(void) return temp; } -void configureAllObjects(int overlayIdx, cellStruct* pObject, int _var4, int var0, int var1, int _var2, int _var3) +void configureAllObjects(int overlayIdx, cellStruct* pObject, int _var4, int _var0, int _var1, int _var2, int _var3) { while(pObject) { @@ -1461,9 +1461,9 @@ void configureAllObjects(int overlayIdx, cellStruct* pObject, int _var4, int var { if((pObject->backgroundPlane == _var2) || (_var2 == -1)) { - if((pObject->freeze == var1) || (var1 == -1)) + if((pObject->freeze == _var1) || (_var1 == -1)) { - pObject->freeze = var0; + pObject->freeze = _var0; } } } -- cgit v1.2.3 From ffce26ebfea301ec33f3d485fa9dbaa0dffccb5b Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Fri, 27 Apr 2007 22:33:45 +0000 Subject: Fix code formatting (partially) and guard defines in includes. svn-id: r26631 --- engines/cruise/function.cpp | 2068 ++++++++++++++++++++----------------------- 1 file changed, 950 insertions(+), 1118 deletions(-) (limited to 'engines/cruise/function.cpp') diff --git a/engines/cruise/function.cpp b/engines/cruise/function.cpp index 5603cdd68e..e8e86d82b6 100644 --- a/engines/cruise/function.cpp +++ b/engines/cruise/function.cpp @@ -29,724 +29,649 @@ namespace Cruise { opcodeFunction opcodeTablePtr[256]; -struct actorTableStruct -{ - int data[13]; +struct actorTableStruct { + int data[13]; }; typedef struct actorTableStruct actorTableStruct; -actorTableStruct actorTable1[] = { - { - 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }, - { - 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }, - { - 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }, - { - -38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - } +actorTableStruct actorTable1[] = { + { 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + { 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + { 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {-38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }; -int16 Op_LoadOverlay(void) -{ - uint8* originalScriptName; - uint8 scriptName[38]; - int returnValue; +int16 Op_LoadOverlay(void) { + uint8 *originalScriptName; + uint8 scriptName[38]; + int returnValue; - scriptName[0] = 0; + scriptName[0] = 0; - originalScriptName = (uint8*)popPtr(); + originalScriptName = (uint8 *) popPtr(); - if(originalScriptName) - { - strcpyuint8(scriptName,originalScriptName); - } + if (originalScriptName) { + strcpyuint8(scriptName, originalScriptName); + } - if(!scriptName[0] || !originalScriptName) - { - return(0); - } + if (!scriptName[0] || !originalScriptName) { + return (0); + } - strToUpper(scriptName); + strToUpper(scriptName); - //gfxModuleData.field_84(); - //gfxModuleData.field_84(); + //gfxModuleData.field_84(); + //gfxModuleData.field_84(); - returnValue = loadOverlay(scriptName); + returnValue = loadOverlay(scriptName); - updateAllScriptsImports(); + updateAllScriptsImports(); - strcpyuint8(scriptNameBuffer,scriptName); + strcpyuint8(scriptNameBuffer, scriptName); - return(returnValue); + return (returnValue); } -int16 Op_strcpy(void) -{ - char* ptr1 = (char*)popPtr(); - char* ptr2 = (char*)popPtr(); +int16 Op_strcpy(void) { + char *ptr1 = (char *)popPtr(); + char *ptr2 = (char *)popPtr(); - //printf("strcpy %s\n",ptr1); + //printf("strcpy %s\n",ptr1); - while(*ptr1) - { - *ptr2 = *ptr1; + while (*ptr1) { + *ptr2 = *ptr1; - ptr2++; - ptr1++; - } + ptr2++; + ptr1++; + } - *ptr2 = 0; + *ptr2 = 0; - return(0); + return (0); } -int16 Op_startScript(void) -{ - int scriptIdx; - int ovlIdx; - uint8* ptr; - uint8* ptr2; +int16 Op_startScript(void) { + int scriptIdx; + int ovlIdx; + uint8 *ptr; + uint8 *ptr2; - short int popTable[256]; // TODO: check original size; + short int popTable[256]; // TODO: check original size; - int numOfArgToPop = popVar(); + int numOfArgToPop = popVar(); - int i=0; + int i = 0; - for(i=0;ioverlayNumber; - } + if (!ovlIdx) { + ovlIdx = currentScriptPtr->overlayNumber; + } - ptr = attacheNewScriptToTail(ovlIdx,&scriptHandle2,scriptIdx,currentScriptPtr->type,currentScriptPtr->scriptNumber,currentScriptPtr->overlayNumber,scriptType_Minus20); + ptr = + attacheNewScriptToTail(ovlIdx, &scriptHandle2, scriptIdx, + currentScriptPtr->type, currentScriptPtr->scriptNumber, + currentScriptPtr->overlayNumber, scriptType_Minus20); - if(!ptr) - return(0); + if (!ptr) + return (0); - if(numOfArgToPop<=0) - { - return(0); - } + if (numOfArgToPop <= 0) { + return (0); + } - ptr2 = ptr; + ptr2 = ptr; - for(i=0;i0) - { - printf("Unsuported arg pop in Op_6!\n"); - exit(1); - } + if (pop1 - 1 > 0) { + printf("Unsuported arg pop in Op_6!\n"); + exit(1); + } - pop2 = popVar(); - overlay = popVar(); + pop2 = popVar(); + overlay = popVar(); - if(!overlay) - overlay = currentScriptPtr->overlayNumber; + if (!overlay) + overlay = currentScriptPtr->overlayNumber; - if(!overlay) - return(0); + if (!overlay) + return (0); - attacheNewScriptToTail(overlay,&scriptHandle2,pop2,currentScriptPtr->type,currentScriptPtr->scriptNumber,currentScriptPtr->overlayNumber,scriptType_20); + attacheNewScriptToTail(overlay, &scriptHandle2, pop2, + currentScriptPtr->type, currentScriptPtr->scriptNumber, + currentScriptPtr->overlayNumber, scriptType_20); - if(pop1>0) - { - printf("Unsupported art send in op6!\n"); - exit(1); - } + if (pop1 > 0) { + printf("Unsupported art send in op6!\n"); + exit(1); + } - return(0); + return (0); } -int16 Op_37(void) -{ - int pop1 = popVar(); - int pop2 = popVar(); +int16 Op_37(void) { + int pop1 = popVar(); + int pop2 = popVar(); - if(!pop2) - pop2 = currentScriptPtr->overlayNumber; + if (!pop2) + pop2 = currentScriptPtr->overlayNumber; - var30 = pop2; - var31 = pop1; + var30 = pop2; + var31 = pop1; - return(0); + return (0); } -int16 Op_GetMouseX(void) // TODO: implement properly -{ - int16 dummy; - int16 mouseX; - int16 mouseY; - int16 mouseButton; +int16 Op_GetMouseX(void) { // TODO: implement properly + int16 dummy; + int16 mouseX; + int16 mouseY; + int16 mouseButton; - getMouseStatus(&dummy, &mouseX, &mouseButton, &mouseY); + getMouseStatus(&dummy, &mouseX, &mouseButton, &mouseY); - return(mouseX); + return (mouseX); } -int16 Op_GetMouseY(void) // TODO: implement properly -{ - int16 dummy; - int16 mouseX; - int16 mouseY; - int16 mouseButton; +int16 Op_GetMouseY(void) { // TODO: implement properly + int16 dummy; + int16 mouseX; + int16 mouseY; + int16 mouseButton; - getMouseStatus(&dummy, &mouseX, &mouseButton, &mouseY); + getMouseStatus(&dummy, &mouseX, &mouseButton, &mouseY); - return(mouseY); + return (mouseY); } -int16 Op_rand(void) // TODO: implement -{ - int var = popVar(); - - if(var<2) - { - return(0); - } +int16 Op_rand(void) { // TODO: implement + int var = popVar(); -// return(8); - return(rand()%var); + if (var < 2) { + return (0); + } +// return(8); + return (rand() % var); } -int16 Op_PlayFX(void) // TODO: implement -{ - popVar(); - popVar(); - popVar(); - popVar(); +int16 Op_PlayFX(void) { // TODO: implement + popVar(); + popVar(); + popVar(); + popVar(); - // printf("Op_PlayFX, implement (sound related)\n"); + // printf("Op_PlayFX, implement (sound related)\n"); - return(0); + return (0); } -int16 Op_freeAllPerso(void) -{ - freeAllPerso(); - return(0); +int16 Op_freeAllPerso(void) { + freeAllPerso(); + return (0); } -void freeObjectList(cellStruct* pListHead) -{ - int var_2 = 0; - cellStruct* pCurrent = pListHead->next; +void freeObjectList(cellStruct *pListHead) { + int var_2 = 0; + cellStruct *pCurrent = pListHead->next; - while(pCurrent) - { - cellStruct* pNext = pCurrent->next; + while (pCurrent) { + cellStruct *pNext = pCurrent->next; - if(pCurrent->freeze == 0) - { - free(pCurrent->gfxPtr); - free(pCurrent); - } + if (pCurrent->freeze == 0) { + free(pCurrent->gfxPtr); + free(pCurrent); + } - var_2 = 1; + var_2 = 1; - pCurrent = pNext; - } + pCurrent = pNext; + } - if(var_2) - { - resetPtr(pListHead); - } + if (var_2) { + resetPtr(pListHead); + } } -int16 Op_FreeCell(void) -{ - freeObjectList(&cellHead); - return(0); +int16 Op_FreeCell(void) { + freeObjectList(&cellHead); + return (0); } -int16 Op_freeBackgroundInscrustList(void) -{ - freeBackgroundIncrustList(&backgroundIncrustHead); - return(0); +int16 Op_freeBackgroundInscrustList(void) { + freeBackgroundIncrustList(&backgroundIncrustHead); + return (0); } -int16 Op_removeBackground(void) -{ - int backgroundIdx; +int16 Op_removeBackground(void) { + int backgroundIdx; - backgroundIdx = popVar(); + backgroundIdx = popVar(); - printf("Op_removeBackground: remove background %d\n",backgroundIdx); - return(0); + printf("Op_removeBackground: remove background %d\n", backgroundIdx); + return (0); } -int16 Op_freeMediumVar(void) -{ - // TODO: implement - printf("Op_freeMediumVar, implement\n"); - return(0); +int16 Op_freeMediumVar(void) { + // TODO: implement + printf("Op_freeMediumVar, implement\n"); + return (0); } -int16 Op_RemoveMessage(void) -{ - int idx; - int overlay; +int16 Op_RemoveMessage(void) { + int idx; + int overlay; + + idx = popVar(); + overlay = popVar(); - idx = popVar(); - overlay = popVar(); + if (!overlay) { + overlay = currentScriptPtr->overlayNumber; + } - if(!overlay) - { - overlay = currentScriptPtr->overlayNumber; - } + removeObjectFromList(overlay, idx, &cellHead, + currentActiveBackgroundPlane, 5); - removeObjectFromList(overlay, idx, &cellHead, currentActiveBackgroundPlane, 5); - - return(0); + return (0); } -int16 Op_isFileLoaded(void) -{ - int16 i; - uint8 name[36] = ""; - uint8* ptr; +int16 Op_isFileLoaded(void) { + int16 i; + uint8 name[36] = ""; + uint8 *ptr; - ptr = (uint8*)popPtr(); + ptr = (uint8 *) popPtr(); - if(!ptr) - { - return -1; - } + if (!ptr) { + return -1; + } - strcpyuint8(name,ptr); - strToUpper(name); + strcpyuint8(name, ptr); + strToUpper(name); - for(i=0;i<257;i++) - { - if(!strcmpuint8(name,filesDatabase[i].subData.name)) - { - return(i); - } - } + for (i = 0; i < 257; i++) { + if (!strcmpuint8(name, filesDatabase[i].subData.name)) { + return (i); + } + } - return -1; + return -1; } -int16 Op_RemoveFrame(void) -{ - //int var1; - //int var2; +int16 Op_RemoveFrame(void) { + //int var1; + //int var2; - var1 = popVar(); - var2 = popVar(); + var1 = popVar(); + var2 = popVar(); - resetFileEntryRange(var2,var1); + resetFileEntryRange(var2, var1); - return(0); + return (0); } -int16 Op_comment(void) -{ - char* var; +int16 Op_comment(void) { + char *var; - var = (char*)popPtr(); + var = (char *)popPtr(); - printf("COMMENT: \"%s\"\n",var); + printf("COMMENT: \"%s\"\n", var); - return(0); + return (0); } -int16 Op_RemoveProc(void) -{ - int idx; - int overlay; +int16 Op_RemoveProc(void) { + int idx; + int overlay; - idx = popVar(); - overlay = popVar(); + idx = popVar(); + overlay = popVar(); - if(!overlay) - { - overlay = currentScriptPtr->overlayNumber; - } + if (!overlay) { + overlay = currentScriptPtr->overlayNumber; + } - removeScript(overlay,idx,&scriptHandle2); + removeScript(overlay, idx, &scriptHandle2); - return(0); + return (0); } -int16 Op_FreeOverlay(void) -{ - uint8 localName[36] = ""; - uint8* namePtr; +int16 Op_FreeOverlay(void) { + uint8 localName[36] = ""; + uint8 *namePtr; - namePtr = (uint8*)popPtr(); + namePtr = (uint8 *) popPtr(); - strcpyuint8(localName,namePtr); + strcpyuint8(localName, namePtr); - if(localName[0]) - { - strToUpper(localName); - releaseOverlay((char*)localName); - } + if (localName[0]) { + strToUpper(localName); + releaseOverlay((char *)localName); + } - return 0; + return 0; } -int16 Op_2B(void) -{ - uint8 name[36] = ""; - uint8* ptr; - int param; +int16 Op_2B(void) { + uint8 name[36] = ""; + uint8 *ptr; + int param; - ptr = (uint8*)popPtr(); + ptr = (uint8 *) popPtr(); - strcpyuint8(name,ptr); + strcpyuint8(name, ptr); - param = getProcParam(popVar(),20,name); + param = getProcParam(popVar(), 20, name); - return param; + return param; } -int16 Op_freeAllMenu(void) -{ - // TODO: implement - printf("Op_freeAllMenu, implement\n"); +int16 Op_freeAllMenu(void) { + // TODO: implement + printf("Op_freeAllMenu, implement\n"); - return 0; + return 0; } -int16 Op_PlayFXnterPlayerMenu(void) -{ - int oldValue = entrerMenuJoueur; - entrerMenuJoueur = popVar(); +int16 Op_PlayFXnterPlayerMenu(void) { + int oldValue = entrerMenuJoueur; + entrerMenuJoueur = popVar(); - return oldValue; + return oldValue; } -int16 Op_ChangeSaveAllowedState(void) -{ - int oldValue = userEnabled; - int newValue = popVar(); +int16 Op_ChangeSaveAllowedState(void) { + int oldValue = userEnabled; + int newValue = popVar(); - if(newValue != -1) - { - userEnabled = newValue; - } + if (newValue != -1) { + userEnabled = newValue; + } - return oldValue; + return oldValue; } -int16 Op_changeCutSceneState(void) -{ - int oldValue = affichePasMenuJoueur; - int newValue = popVar(); +int16 Op_changeCutSceneState(void) { + int oldValue = affichePasMenuJoueur; + int newValue = popVar(); - if(newValue != -1) - { - affichePasMenuJoueur = newValue; - } + if (newValue != -1) { + affichePasMenuJoueur = newValue; + } - return oldValue; + return oldValue; } -int16 Op_62(void) -{ - if(currentScriptPtr->var1A == 20) - { - changeScriptParamInList(currentScriptPtr->var18,currentScriptPtr->var16,&scriptHandle2,9997,-1); - } - else - if(currentScriptPtr->var1A == 30) - { - changeScriptParamInList(currentScriptPtr->var18,currentScriptPtr->var16,&scriptHandle1,9997,-1); - } +int16 Op_62(void) { + if (currentScriptPtr->var1A == 20) { + changeScriptParamInList(currentScriptPtr->var18, + currentScriptPtr->var16, &scriptHandle2, 9997, -1); + } else if (currentScriptPtr->var1A == 30) { + changeScriptParamInList(currentScriptPtr->var18, + currentScriptPtr->var16, &scriptHandle1, 9997, -1); + } - return 0; + return 0; } -int16 Op_LoadBackground(void) -{ - int result = 0; - uint8 bgName[36] = ""; - uint8* ptr; - int bgIdx; +int16 Op_LoadBackground(void) { + int result = 0; + uint8 bgName[36] = ""; + uint8 *ptr; + int bgIdx; - ptr = (uint8*)popPtr(); + ptr = (uint8 *) popPtr(); - strcpyuint8(bgName,ptr); + strcpyuint8(bgName, ptr); - bgIdx = popVar(); + bgIdx = popVar(); - if(bgIdx >= 0 || bgIdx < 8) - { - strToUpper(bgName); + if (bgIdx >= 0 || bgIdx < 8) { + strToUpper(bgName); - gfxModuleData_gfxWaitVSync(); - gfxModuleData_gfxWaitVSync(); + gfxModuleData_gfxWaitVSync(); + gfxModuleData_gfxWaitVSync(); - result = loadBackground((char*)bgName,bgIdx); - } + result = loadBackground((char *)bgName, bgIdx); + } - changeCursor(0); + changeCursor(0); - return result; + return result; } -int16 Op_isFileLoaded2(void) -{ - int param; +int16 Op_isFileLoaded2(void) { + int param; - param = popVar(); + param = popVar(); - if(param<0 || param>255) - { - return 0; - } + if (param < 0 || param > 255) { + return 0; + } - if(filesDatabase[param].subData.ptr) - { - return 1; - } + if (filesDatabase[param].subData.ptr) { + return 1; + } - return 0; + return 0; } -int16 Op_loadFile(void) -{ - int param1; - int param2; - int param3; - uint8 name[36] = ""; - uint8* ptr; +int16 Op_loadFile(void) { + int param1; + int param2; + int param3; + uint8 name[36] = ""; + uint8 *ptr; + + ptr = (uint8 *) popPtr(); - ptr = (uint8*)popPtr(); + strcpyuint8(name, ptr); - strcpyuint8(name,ptr); + param1 = popVar(); + param2 = popVar(); + param3 = popVar(); - param1 = popVar(); - param2 = popVar(); - param3 = popVar(); - - if(param3 >= 0 || param3 < 257) - { - strToUpper(name); + if (param3 >= 0 || param3 < 257) { + strToUpper(name); - gfxModuleData_gfxWaitVSync(); - gfxModuleData_gfxWaitVSync(); + gfxModuleData_gfxWaitVSync(); + gfxModuleData_gfxWaitVSync(); - saveVar6[0] = 0; + saveVar6[0] = 0; - loadFileMode2(name,param3,param2,param1); + loadFileMode2(name, param3, param2, param1); - saveVar6[0] = 0; - } + saveVar6[0] = 0; + } - changeCursor(0); - return 0; + changeCursor(0); + return 0; } -int16 Op_LoadAbs(void) -{ - int param1; +int16 Op_LoadAbs(void) { + int param1; // int param2; // int param3; - uint8 name[36] = ""; - uint8* ptr; - int result = 0; + uint8 name[36] = ""; + uint8 *ptr; + int result = 0; - ptr = (uint8*)popPtr(); + ptr = (uint8 *) popPtr(); - strcpyuint8(name,ptr); + strcpyuint8(name, ptr); - param1 = popVar(); - - if(param1 >= 0 || param1 < 257) - { - strToUpper(name); + param1 = popVar(); - gfxModuleData_gfxWaitVSync(); - gfxModuleData_gfxWaitVSync(); + if (param1 >= 0 || param1 < 257) { + strToUpper(name); - result = loadFullBundle(name,param1); - } + gfxModuleData_gfxWaitVSync(); + gfxModuleData_gfxWaitVSync(); - changeCursor(0); - return result; + result = loadFullBundle(name, param1); + } + + changeCursor(0); + return result; } -int16 Op_InitializeState(void) -{ - int param1 = popVar(); - int objIdx = popVar(); - int ovlIdx = popVar(); +int16 Op_InitializeState(void) { + int param1 = popVar(); + int objIdx = popVar(); + int ovlIdx = popVar(); - if(!ovlIdx) - ovlIdx = currentScriptPtr->overlayNumber; + if (!ovlIdx) + ovlIdx = currentScriptPtr->overlayNumber; - Op_InitializeStateSub(ovlIdx,objIdx,param1); + Op_InitializeStateSub(ovlIdx, objIdx, param1); - return(0); + return (0); } -int16 Op_GetInitVar1(void) -{ - return initVar1; +int16 Op_GetInitVar1(void) { + return initVar1; } -int16 Op_FadeOut(void) -{ - printf("Op_FadeOut dummy\n"); - return 0; +int16 Op_FadeOut(void) { + printf("Op_FadeOut dummy\n"); + return 0; } -int16 isOverlayLoaded(uint8* name) -{ - int16 i; +int16 isOverlayLoaded(uint8 * name) { + int16 i; + + for (i = 1; i < numOfLoadedOverlay; i++) { + if (!strcmpuint8(overlayTable[i].overlayName, name) + && overlayTable[i].alreadyLoaded) { + return i; + } + } - for(i=1;ioverlayNumber; + if (!overlayIdx) + overlayIdx = currentScriptPtr->overlayNumber; - addCell(overlayIdx,param2,&cellHead,currentScriptPtr->type,currentScriptPtr->scriptNumber,currentScriptPtr->overlayNumber,currentActiveBackgroundPlane,param1); + addCell(overlayIdx, param2, &cellHead, currentScriptPtr->type, + currentScriptPtr->scriptNumber, currentScriptPtr->overlayNumber, + currentActiveBackgroundPlane, param1); - return 0; + return 0; } -int16 Op_2F(void) -{ - int16 param1 = popVar(); - int16 param2 = popVar(); +int16 Op_2F(void) { + int16 param1 = popVar(); + int16 param2 = popVar(); - int16 overlayIdx = popVar(); + int16 overlayIdx = popVar(); - if(!overlayIdx) - overlayIdx = currentScriptPtr->overlayNumber; + if (!overlayIdx) + overlayIdx = currentScriptPtr->overlayNumber; - addBackgroundIncrust(overlayIdx,param2,&backgroundIncrustHead,currentScriptPtr->scriptNumber,currentScriptPtr->overlayNumber,currentActiveBackgroundPlane,param1); + addBackgroundIncrust(overlayIdx, param2, &backgroundIncrustHead, + currentScriptPtr->scriptNumber, currentScriptPtr->overlayNumber, + currentActiveBackgroundPlane, param1); - return 0; + return 0; } -int16 Op_RemoveCell(void) -{ - var1 = popVar(); - int objectIdx = popVar(); - int ovlNumber = popVar(); +int16 Op_RemoveCell(void) { + var1 = popVar(); + int objectIdx = popVar(); + int ovlNumber = popVar(); - if(!ovlNumber) - { - ovlNumber = currentScriptPtr->overlayNumber; - } + if (!ovlNumber) { + ovlNumber = currentScriptPtr->overlayNumber; + } - removeObjectFromList(ovlNumber, objectIdx, &cellHead, currentActiveBackgroundPlane, var1); + removeObjectFromList(ovlNumber, objectIdx, &cellHead, + currentActiveBackgroundPlane, var1); - return 0; + return 0; } int16 fontFileIndex; -int16 Op_SetFontFileIndex(void) -{ +int16 Op_SetFontFileIndex(void) { fontFileIndex = popVar(); return 0; } -int16 Op_63(void) -{ - if(currentScriptPtr->var1A == 0x14) - { - changeScriptParamInList(currentScriptPtr->var18,currentScriptPtr->var16,&scriptHandle2,0,-1); - } - else - if(currentScriptPtr->var1A == 0x1E) - { - changeScriptParamInList(currentScriptPtr->var18,currentScriptPtr->var16,&scriptHandle1,0,-1); +int16 Op_63(void) { + if (currentScriptPtr->var1A == 0x14) { + changeScriptParamInList(currentScriptPtr->var18, + currentScriptPtr->var16, &scriptHandle2, 0, -1); + } else if (currentScriptPtr->var1A == 0x1E) { + changeScriptParamInList(currentScriptPtr->var18, + currentScriptPtr->var16, &scriptHandle1, 0, -1); } return 0; @@ -754,428 +679,382 @@ int16 Op_63(void) int16 op7CVar = 0; -int16 Op_InitializeStateC(void) -{ +int16 Op_InitializeStateC(void) { int16 temp = op7CVar; int16 newVar; newVar = popVar(); - if(newVar != -1) - { + if (newVar != -1) { op7CVar = newVar; } return temp; } -int16 Op_AddMessage(void) -{ - int16 color = popVar(); - int16 var_2 = popVar(); - int16 var_4 = popVar(); - int16 var_6 = popVar(); - int16 var_8 = popVar(); - int16 overlayIdx = popVar(); - - if(!overlayIdx) - overlayIdx = currentScriptPtr->overlayNumber; - - if( color == -1 ) - { - color = 0; - //ASSERT(0); - //color = calcTabSomething(); - } - else - { - if(CVTLoaded) - { - color = cvtPalette[color]; - } - } - - createTextObject(overlayIdx, var_8, &cellHead, currentScriptPtr->scriptNumber, currentScriptPtr->overlayNumber, currentActiveBackgroundPlane, color, var_2, var_4, var_6); - - return 0; -} - -int16 Op_loadAudioResource(void) -{ - popPtr(); - popVar(); +int16 Op_AddMessage(void) { + int16 color = popVar(); + int16 var_2 = popVar(); + int16 var_4 = popVar(); + int16 var_6 = popVar(); + int16 var_8 = popVar(); + int16 overlayIdx = popVar(); + + if (!overlayIdx) + overlayIdx = currentScriptPtr->overlayNumber; + + if (color == -1) { + color = 0; + //ASSERT(0); + //color = calcTabSomething(); + } else { + if (CVTLoaded) { + color = cvtPalette[color]; + } + } - return 0; -} - -int16 Op_LoadCt(void) -{ - return loadCtp((uint8*)popPtr()); -} + createTextObject(overlayIdx, var_8, &cellHead, + currentScriptPtr->scriptNumber, currentScriptPtr->overlayNumber, + currentActiveBackgroundPlane, color, var_2, var_4, var_6); -int16 Op_loadMusic(void) -{ - popPtr(); - return 0; + return 0; } -int16 Op_21(void) -{ - int param1 = popVar(); - int param2 = popVar(); - int overlay = popVar(); - - if(!overlay) - overlay = currentScriptPtr->overlayNumber; +int16 Op_loadAudioResource(void) { + popPtr(); + popVar(); - return mainProc13(overlay, param2, &actorHead, param1); + return 0; } -int16 Op_InitializeState6(void) -{ - popPtr(); - popVar(); - - return 0; +int16 Op_LoadCt(void) { + return loadCtp((uint8 *) popPtr()); } -int16 Op_AutoCell(void) -{ - cellStruct* pObject; +int16 Op_loadMusic(void) { + popPtr(); + return 0; +} - int signal = popVar(); - int loop = popVar(); - int wait = popVar(); - int animStep = popVar(); - int end = popVar(); - int start = popVar(); - int type = popVar(); - int change = popVar(); - int obj = popVar(); - int overlay = popVar(); +int16 Op_21(void) { + int param1 = popVar(); + int param2 = popVar(); + int overlay = popVar(); - if(!overlay) - overlay = currentScriptPtr->overlayNumber; + if (!overlay) + overlay = currentScriptPtr->overlayNumber; - pObject = addCell(overlay, obj, &cellHead, currentScriptPtr->type, currentScriptPtr->scriptNumber, currentScriptPtr->overlayNumber, currentActiveBackgroundPlane, 4); + return mainProc13(overlay, param2, &actorHead, param1); +} - if(!pObject) - return 0; +int16 Op_InitializeState6(void) { + popPtr(); + popVar(); - pObject->field_2C = signal; - pObject->field_30 = loop; - pObject->nextAnimDelay = wait; - pObject->animStep = animStep; - pObject->field_22 = end; - pObject->field_20 = start; - pObject->field_2A = type; - pObject->field_28 = change; + return 0; +} - if(type) - { - if(currentScriptPtr->type == 20) - { - changeScriptParamInList(currentScriptPtr->overlayNumber, currentScriptPtr->scriptNumber, &scriptHandle2, 9996, -1); - } - else - if(currentScriptPtr->type == 30) - { - changeScriptParamInList(currentScriptPtr->overlayNumber, currentScriptPtr->scriptNumber, &scriptHandle1, 9996, -1); - } - } +int16 Op_AutoCell(void) { + cellStruct *pObject; + + int signal = popVar(); + int loop = popVar(); + int wait = popVar(); + int animStep = popVar(); + int end = popVar(); + int start = popVar(); + int type = popVar(); + int change = popVar(); + int obj = popVar(); + int overlay = popVar(); + + if (!overlay) + overlay = currentScriptPtr->overlayNumber; + + pObject = + addCell(overlay, obj, &cellHead, currentScriptPtr->type, + currentScriptPtr->scriptNumber, currentScriptPtr->overlayNumber, + currentActiveBackgroundPlane, 4); + + if (!pObject) + return 0; + + pObject->field_2C = signal; + pObject->field_30 = loop; + pObject->nextAnimDelay = wait; + pObject->animStep = animStep; + pObject->field_22 = end; + pObject->field_20 = start; + pObject->field_2A = type; + pObject->field_28 = change; + + if (type) { + if (currentScriptPtr->type == 20) { + changeScriptParamInList(currentScriptPtr-> + overlayNumber, currentScriptPtr->scriptNumber, + &scriptHandle2, 9996, -1); + } else if (currentScriptPtr->type == 30) { + changeScriptParamInList(currentScriptPtr-> + overlayNumber, currentScriptPtr->scriptNumber, + &scriptHandle1, 9996, -1); + } + } - if(change == 5) - { - Op_InitializeStateSub(pObject->overlay, pObject->idx, start); - } - else - { - setObjectPosition(pObject->overlay, pObject->idx, pObject->field_28, start); - } + if (change == 5) { + Op_InitializeStateSub(pObject->overlay, pObject->idx, start); + } else { + setObjectPosition(pObject->overlay, pObject->idx, + pObject->field_28, start); + } - if(wait < 0) - { - objectParamsQuery params; + if (wait < 0) { + objectParamsQuery params; - getMultipleObjectParam(overlay, obj, ¶ms); - pObject->currentAnimDelay = params.var6-1; - } + getMultipleObjectParam(overlay, obj, ¶ms); + pObject->currentAnimDelay = params.var6 - 1; + } - return 0; + return 0; } -int16 Op_66(void) -{ - objectParamsQuery params; - int index = popVar(); - int overlay = popVar(); +int16 Op_66(void) { + objectParamsQuery params; + int index = popVar(); + int overlay = popVar(); - if(!overlay) - overlay = currentScriptPtr->overlayNumber; + if (!overlay) + overlay = currentScriptPtr->overlayNumber; - getMultipleObjectParam(overlay, index, ¶ms); + getMultipleObjectParam(overlay, index, ¶ms); - return params.var7; + return params.var7; } -int16 Op_SetActiveBackgroundPlane(void) -{ - int currentPlane = currentActiveBackgroundPlane; - int newPlane = popVar(); +int16 Op_SetActiveBackgroundPlane(void) { + int currentPlane = currentActiveBackgroundPlane; + int newPlane = popVar(); + + if (newPlane >= 0 && newPlane < 8) { + if (backgroundPtrtable[newPlane]) { + currentActiveBackgroundPlane = newPlane; + initVar3 = 1; + } + } - if(newPlane >= 0 && newPlane < 8) - { - if(backgroundPtrtable[newPlane]) - { - currentActiveBackgroundPlane = newPlane; - initVar3 = 1; - } - } - - return currentPlane; + return currentPlane; } int op6AVar; -int16 Op_6A(void) -{ - op6AVar = popVar(); - return 0; +int16 Op_6A(void) { + op6AVar = popVar(); + return 0; } int op7BVar = 0; -int16 Op_InitializeStateB(void) -{ - int di = popVar(); - int si = 1 - op7BVar; - int sign; - - if(di) - { - sign = di/(abs(di)); - } - else - { - sign = 0; - } - - op7BVar = -sign; - - return si; -} - -void removeBackgroundIncrust(int overlay, int idx, backgroundIncrustStruct* pHead) -{ - objectParamsQuery params; - int var_4; - int var_6; +int16 Op_InitializeStateB(void) { + int di = popVar(); + int si = 1 - op7BVar; + int sign; - backgroundIncrustStruct* pCurrent; - backgroundIncrustStruct* pCurrentHead; - - getMultipleObjectParam(overlay, idx, ¶ms); + if (di) { + sign = di / (abs(di)); + } else { + sign = 0; + } - var_4 = params.X; - var_6 = params.Y; + op7BVar = -sign; - pCurrent = pHead->next; + return si; +} - while(pCurrent) - { - if( (pCurrent->overlayIdx == overlay || overlay == -1) && - (pCurrent->objectIdx == idx || idx == -1) && - (pCurrent->X == var_4) && - (pCurrent->Y == var_6)) - { - pCurrent->field_6 = (uint16)-1; - } +void removeBackgroundIncrust(int overlay, int idx, + backgroundIncrustStruct * pHead) { + objectParamsQuery params; + int var_4; + int var_6; - pCurrent = pCurrent->next; - } + backgroundIncrustStruct *pCurrent; + backgroundIncrustStruct *pCurrentHead; - pCurrentHead = pHead; - pCurrent = pHead->next; + getMultipleObjectParam(overlay, idx, ¶ms); - while(pCurrent) - { - if(pCurrent->field_6 == (uint16)-1) - { - backgroundIncrustStruct* pNext = pCurrent->next; - backgroundIncrustStruct* bx = pCurrentHead; - backgroundIncrustStruct* cx; + var_4 = params.X; + var_6 = params.Y; - bx->next = pNext; - cx = pNext; + pCurrent = pHead->next; - if(!pNext) - { - cx = pHead; - } + while (pCurrent) { + if ((pCurrent->overlayIdx == overlay || overlay == -1) && + (pCurrent->objectIdx == idx || idx == -1) && + (pCurrent->X == var_4) && (pCurrent->Y == var_6)) { + pCurrent->field_6 = (uint16) - 1; + } - bx = cx; - bx->prev = pCurrent->next; + pCurrent = pCurrent->next; + } - if(pCurrent->ptr) - { - free(pCurrent->ptr); - } + pCurrentHead = pHead; + pCurrent = pHead->next; - free(pCurrent); + while (pCurrent) { + if (pCurrent->field_6 == (uint16) - 1) { + backgroundIncrustStruct *pNext = pCurrent->next; + backgroundIncrustStruct *bx = pCurrentHead; + backgroundIncrustStruct *cx; - pCurrent = pNext; - } - else - { - pCurrentHead = pCurrent; - pCurrent = pCurrent->next; - } - } -} + bx->next = pNext; + cx = pNext; + if (!pNext) { + cx = pHead; + } -int16 Op_removeBackgroundIncrust(void) -{ - int idx = popVar(); - int overlay = popVar(); + bx = cx; + bx->prev = pCurrent->next; - if(!overlay) - { - overlay = currentScriptPtr->overlayNumber; - } + if (pCurrent->ptr) { + free(pCurrent->ptr); + } - removeBackgroundIncrust(overlay, idx, &backgroundIncrustHead); + free(pCurrent); - return 0; + pCurrent = pNext; + } else { + pCurrentHead = pCurrent; + pCurrent = pCurrent->next; + } + } +} + +int16 Op_removeBackgroundIncrust(void) { + int idx = popVar(); + int overlay = popVar(); + + if (!overlay) { + overlay = currentScriptPtr->overlayNumber; + } + + removeBackgroundIncrust(overlay, idx, &backgroundIncrustHead); + + return 0; } -int16 Op_SetColor(void) // TODO: palette manipulation -{ - //var_4 = popVar(); - //var_6 = popVar(); - //var_8 = popVar(); - //int si = popVar(); - //int di = popVar(); - popVar(); - popVar(); - popVar(); - popVar(); - popVar(); +int16 Op_SetColor(void) { // TODO: palette manipulation + //var_4 = popVar(); + //var_6 = popVar(); + //var_8 = popVar(); + //int si = popVar(); + //int di = popVar(); + popVar(); + popVar(); + popVar(); + popVar(); + popVar(); - return 0; + return 0; } -int16 Op_InitializeState8(void) -{ - int si = var41; +int16 Op_InitializeState8(void) { + int si = var41; - var41 = popVar(); + var41 = popVar(); - return si; + return si; } -int16 Op_releaseOverlay(void) -{ - int overlayIdx; +int16 Op_releaseOverlay(void) { + int overlayIdx; - overlayIdx = popVar(); + overlayIdx = popVar(); - if(strlen(overlayTable[overlayIdx].overlayName)) - { - releaseOverlay(overlayTable[overlayIdx].overlayName); - } + if (strlen(overlayTable[overlayIdx].overlayName)) { + releaseOverlay(overlayTable[overlayIdx].overlayName); + } - return 0; + return 0; } -int16 Op_SetColorrawLine(void) -{ - /* - int di = popVar(); - int var_2 = popVar(); - int var_4 = popVar(); - int var_6 = popVar(); - uint8* ptr = (uint8*)popPtr(); - */ +int16 Op_SetColorrawLine(void) { + /* + * int di = popVar(); + * int var_2 = popVar(); + * int var_4 = popVar(); + * int var_6 = popVar(); + * uint8* ptr = (uint8*)popPtr(); + */ - popVar(); - popVar(); - popVar(); - popVar(); - popPtr(); + popVar(); + popVar(); + popVar(); + popVar(); + popPtr(); - //drawLinePtr(var_6, var_4, var_2, ptr); + //drawLinePtr(var_6, var_4, var_2, ptr); - // flipGen(ptr); + // flipGen(ptr); - return 0; + return 0; } -int16 Op_61(void) -{ - int si = popVar(); - popVar(); +int16 Op_61(void) { + int si = popVar(); + popVar(); - return si; + return si; } -int16 Op_1A(void) -{ - var46 = popVar(); - var45 = popVar(); - var42 = popVar(); - var39 = popVar(); - return 0; +int16 Op_1A(void) { + var46 = popVar(); + var45 = popVar(); + var42 = popVar(); + var39 = popVar(); + return 0; } -int16 computeZoom(int param) -{ - return (((param - var46)*(var39-var42))/(var45 - var46))+var42; +int16 computeZoom(int param) { + return (((param - var46) * (var39 - var42)) / (var45 - var46)) + var42; } -int16 subOp23(int param1, int param2) -{ - return (param1*param2)>>8; +int16 subOp23(int param1, int param2) { + return (param1 * param2) >> 8; } -int16 Op_23(void) -{ - int si = popVar(); - int dx = popVar(); +int16 Op_23(void) { + int si = popVar(); + int dx = popVar(); - return subOp23(dx,si); + return subOp23(dx, si); } -int16 Op_22(void) -{ - return(computeZoom(popVar())); +int16 Op_22(void) { + return (computeZoom(popVar())); } -actorStruct* addAnimation(actorStruct* pHead, int overlay, int objIdx, int param, int param2) -{ - actorStruct* pPrevious = pHead; - actorStruct* pCurrent = pHead->next; +actorStruct *addAnimation(actorStruct * pHead, int overlay, int objIdx, + int param, int param2) { + actorStruct *pPrevious = pHead; + actorStruct *pCurrent = pHead->next; // go to the end of the list - while(pCurrent) - { + while (pCurrent) { pPrevious = pCurrent; pCurrent = pPrevious->next; } - if(pCurrent && (pCurrent->overlayNumber == overlay) && (pCurrent->idx == objIdx) && (pCurrent->type == param2)) - { + if (pCurrent && (pCurrent->overlayNumber == overlay) + && (pCurrent->idx == objIdx) && (pCurrent->type == param2)) { return NULL; } - actorStruct* pNewElement = (actorStruct*)malloc(sizeof(actorStruct)); - if(!pNewElement) + actorStruct *pNewElement = (actorStruct *) malloc(sizeof(actorStruct)); + if (!pNewElement) return NULL; pNewElement->next = pPrevious->next; pPrevious->next = pNewElement; - if(!pCurrent) - { - pCurrent = pHead; + if (!pCurrent) { + pCurrent = pHead; } pNewElement->prev = pCurrent->prev; @@ -1196,418 +1075,376 @@ actorStruct* addAnimation(actorStruct* pHead, int overlay, int objIdx, int param return pNewElement; } -int flag_obstacle; // computedVar14Bis +int flag_obstacle; // computedVar14Bis -void checkCollisionWithWalkBoxesBoundingBoxes(int x, int y) -{ - ctpVar19Struct* di = ctpVar19; +void checkCollisionWithWalkBoxesBoundingBoxes(int x, int y) { + ctpVar19Struct *di = ctpVar19; - do - { - int minX; - int maxX; - int minY; - int maxY; + do { + int minX; + int maxX; + int minY; + int maxY; - ctpVar19SubStruct* subStruct; + ctpVar19SubStruct *subStruct; - if(-1 == (int) di->field_0) // ok, ugly, but it's in the original - { - flag_obstacle = 0; - return; - } + if (-1 == (int)di->field_0) // ok, ugly, but it's in the original + { + flag_obstacle = 0; + return; + } - subStruct = &di->subStruct; + subStruct = &di->subStruct; - minX = subStruct->minX; - maxX = subStruct->maxX; - minY = subStruct->minY; - maxY = subStruct->maxY; + minX = subStruct->minX; + maxX = subStruct->maxX; + minY = subStruct->minY; + maxY = subStruct->maxY; - computedVar14 = subStruct->boxIdx; // Box index + computedVar14 = subStruct->boxIdx; // Box index - if(!(walkboxChange[subStruct->boxIdx]) && (minY >= x) && (maxY <= x) && (minX >= y) && (maxX <= y)) - { + if (!(walkboxChange[subStruct->boxIdx]) && (minY >= x) + && (maxY <= x) && (minX >= y) && (maxX <= y)) { /**************/ - flag_obstacle = walkboxType[computedVar14]; + flag_obstacle = walkboxType[computedVar14]; /**************/ - } + } - di = di->field_0; - } while(1); + di = di->field_0; + } while (1); - flag_obstacle = 0; + flag_obstacle = 0; } // add animation -int16 Op_AddAnimation(void) -{ - int stepY = popVar(); - int stepX = popVar(); - int direction = popVar(); - int start = popVar(); - int type = popVar(); - int obj = popVar(); - int overlay = popVar(); - - if(!overlay) - { - overlay = currentScriptPtr->overlayNumber; - } +int16 Op_AddAnimation(void) { + int stepY = popVar(); + int stepX = popVar(); + int direction = popVar(); + int start = popVar(); + int type = popVar(); + int obj = popVar(); + int overlay = popVar(); + + if (!overlay) { + overlay = currentScriptPtr->overlayNumber; + } - if(direction>=0 && direction<=3) - { - actorStruct* si; + if (direction >= 0 && direction <= 3) { + actorStruct *si; - si = addAnimation(&actorHead, overlay, obj, direction, type); + si = addAnimation(&actorHead, overlay, obj, direction, type); - if(si) - { - objectParamsQuery params; + if (si) { + objectParamsQuery params; - getMultipleObjectParam(overlay, obj, ¶ms); + getMultipleObjectParam(overlay, obj, ¶ms); - si->x = params.X; - si->y = params.Y; - si->x_dest = -1; - si->y_dest = -1; - si->endDirection = -1; - si->start = start; - si->stepX = stepX; - si->stepY = stepY; + si->x = params.X; + si->y = params.Y; + si->x_dest = -1; + si->y_dest = -1; + si->endDirection = -1; + si->start = start; + si->stepX = stepX; + si->stepY = stepY; - int newFrame = abs(actorTable1[direction].data[0]) - 1; + int newFrame = abs(actorTable1[direction].data[0]) - 1; - int zoom = computeZoom(params.Y); + int zoom = computeZoom(params.Y); - if(actorTable1[direction].data[0] < 0) - { - zoom = -zoom; - } + if (actorTable1[direction].data[0] < 0) { + zoom = -zoom; + } - checkCollisionWithWalkBoxesBoundingBoxes(params.X, params.Y); + checkCollisionWithWalkBoxesBoundingBoxes(params.X, + params.Y); - setObjectPosition(overlay, obj, 3, newFrame + start); - setObjectPosition(overlay, obj, 4, zoom); - setObjectPosition(overlay, obj, 5, computedVar14); + setObjectPosition(overlay, obj, 3, newFrame + start); + setObjectPosition(overlay, obj, 4, zoom); + setObjectPosition(overlay, obj, 5, computedVar14); - animationStart = false; - } - } + animationStart = false; + } + } - return 0; + return 0; } -int16 Op_RemoveAnimation(void) -{ - popVar(); - popVar(); - popVar(); +int16 Op_RemoveAnimation(void) { + popVar(); + popVar(); + popVar(); - printf("Partial op 19 (remove actor)\n"); + printf("Partial op 19 (remove actor)\n"); - return 0; + return 0; } -int16 Op_regenerateBackgroundIncrust(void) -{ - regenerateBackgroundIncrust(&backgroundIncrustHead); - return 0; +int16 Op_regenerateBackgroundIncrust(void) { + regenerateBackgroundIncrust(&backgroundIncrustHead); + return 0; } -int16 Op_SetStringColors(void) -{ - // TODO: here ignore if low color mode +int16 Op_SetStringColors(void) { + // TODO: here ignore if low color mode - colorOfSelectedSaveDrive = (uint8)popVar(); - video2 = (uint8)popVar(); - video3 = (uint8)popVar(); - video4 = (uint8)popVar(); + colorOfSelectedSaveDrive = (uint8) popVar(); + video2 = (uint8) popVar(); + video3 = (uint8) popVar(); + video4 = (uint8) popVar(); - return 0; + return 0; } -int16 Op_1E(void) // setup actor position -{ - actorStruct* pActor; +int16 Op_1E(void) { // setup actor position + actorStruct *pActor; - var0 = popVar(); - int actorY = popVar(); - int actorX = popVar(); - var1 = popVar(); - var2 = popVar(); - int overlay = popVar(); + var0 = popVar(); + int actorY = popVar(); + int actorX = popVar(); + var1 = popVar(); + var2 = popVar(); + int overlay = popVar(); - if(!overlay) - { - overlay = currentScriptPtr->overlayNumber; - } + if (!overlay) { + overlay = currentScriptPtr->overlayNumber; + } - pActor = findActor(overlay,var2,&actorHead,var1); + pActor = findActor(overlay, var2, &actorHead, var1); - if(!pActor) - { - return 1; - } + if (!pActor) { + return 1; + } - animationStart = false; + animationStart = false; - pActor->x_dest = actorX; - pActor->y_dest = actorY; - pActor->flag = 1; - pActor->endDirection = var0; + pActor->x_dest = actorX; + pActor->y_dest = actorY; + pActor->flag = 1; + pActor->endDirection = var0; - return 0; + return 0; } -int16 Op_45(void) -{ - printf("Partial op 45 stop sound\n"); +int16 Op_45(void) { + printf("Partial op 45 stop sound\n"); - return 0; + return 0; } -int16 Op_AddCellC(void) -{ - popPtr(); - popVar(); +int16 Op_AddCellC(void) { + popPtr(); + popVar(); - printf("Partial op 5C\n"); + printf("Partial op 5C\n"); - return 0; + return 0; } -int16 Op_AddCellE(void) -{ - popVar(); +int16 Op_AddCellE(void) { + popVar(); - printf("Partial op 5E (sound related)\n"); + printf("Partial op 5E (sound related)\n"); - return 0; + return 0; } -int16 Op_3E(void) -{ - printf("Partial op 3E (sound related)\n"); +int16 Op_3E(void) { + printf("Partial op 3E (sound related)\n"); - return 0; + return 0; } -void setVar49Value(int value) -{ - flagCt = value; +void setVar49Value(int value) { + flagCt = value; } -int16 Op_3A(void) -{ - setVar49Value(1); - return 0; +int16 Op_3A(void) { + setVar49Value(1); + return 0; } -int16 Op_3B(void) -{ - setVar49Value(0); - return 0; +int16 Op_3B(void) { + setVar49Value(0); + return 0; } -int16 Op_3F(void) -{ - printf("Partial op 3F (sound related)\n"); - return 0; +int16 Op_3F(void) { + printf("Partial op 3F (sound related)\n"); + return 0; } -int16 Op_40(void) -{ - printf("Partial op 40 (sound related)\n"); - //freeStuff1(); - freeStuff2(); +int16 Op_40(void) { + printf("Partial op 40 (sound related)\n"); + //freeStuff1(); + freeStuff2(); - var24 = 0; - var23 = 0; - return 0; + var24 = 0; + var23 = 0; + return 0; } -int16 Op_6C(void) -{ - //int var0; - //int var1; - int temp; +int16 Op_6C(void) { + //int var0; + //int var1; + int temp; - var0 = popVar(); - var1 = popVar(); + var0 = popVar(); + var1 = popVar(); - if(!var1) - { - var1 = currentScriptPtr->overlayNumber; - } + if (!var1) { + var1 = currentScriptPtr->overlayNumber; + } - temp = overlayTable[var1].executeScripts; - overlayTable[var1].executeScripts = var0; + temp = overlayTable[var1].executeScripts; + overlayTable[var1].executeScripts = var0; - return temp; + return temp; } -void configureAllObjects(int overlayIdx, cellStruct* pObject, int _var4, int _var0, int _var1, int _var2, int _var3) -{ - while(pObject) - { - if((pObject->overlay == overlayIdx) || (overlayIdx == -1)) - { - if((pObject->idx == _var4) || (_var4 == -1)) - { - if((pObject->type == _var3) || (_var3 == -1)) - { - if((pObject->backgroundPlane == _var2) || (_var2 == -1)) - { - if((pObject->freeze == _var1) || (_var1 == -1)) - { - pObject->freeze = _var0; - } - } - } - } - } - - pObject = pObject->next; - } +void configureAllObjects(int overlayIdx, cellStruct * pObject, int _var4, + int _var0, int _var1, int _var2, int _var3) { + while (pObject) { + if ((pObject->overlay == overlayIdx) || (overlayIdx == -1)) { + if ((pObject->idx == _var4) || (_var4 == -1)) { + if ((pObject->type == _var3) || (_var3 == -1)) { + if ((pObject->backgroundPlane == _var2) || (_var2 == -1)) { + if ((pObject->freeze == _var1) || (_var1 == -1)) { + pObject->freeze = _var0; + } + } + } + } + } + + pObject = pObject->next; + } } -int16 Op_FreezeCell(void) -{ - /* - int var0; - int var1; - int var2; - int var3; - int var4; - int var5; - */ - - var0 = popVar(); - var1 = popVar(); - var2 = popVar(); - var3 = popVar(); - var4 = popVar(); - var5 = popVar(); - - if(!var5) - { - var5 = currentScriptPtr->overlayNumber; - } +int16 Op_FreezeCell(void) { + /* + * int var0; + * int var1; + * int var2; + * int var3; + * int var4; + * int var5; + */ + + var0 = popVar(); + var1 = popVar(); + var2 = popVar(); + var3 = popVar(); + var4 = popVar(); + var5 = popVar(); + + if (!var5) { + var5 = currentScriptPtr->overlayNumber; + } - configureAllObjects(var5, &cellHead, var4, var0, var1, var2, var3); + configureAllObjects(var5, &cellHead, var4, var0, var1, var2, var3); - return 0; + return 0; } -void Op_60Sub(int overlayIdx, actorStruct* pActorHead, int _var0, int _var1, int _var2, int _var3) -{ - actorStruct* pActor = findActor(overlayIdx, _var0, pActorHead, _var3); +void Op_60Sub(int overlayIdx, actorStruct * pActorHead, int _var0, int _var1, + int _var2, int _var3) { + actorStruct *pActor = findActor(overlayIdx, _var0, pActorHead, _var3); - if(pActor) - { - if((pActor->freeze == _var2) || (_var2 == -1)) - { - pActor->freeze = _var1; - } - } + if (pActor) { + if ((pActor->freeze == _var2) || (_var2 == -1)) { + pActor->freeze = _var1; + } + } } -int16 Op_60(void) -{ - /* - int var0; - int var1; - int var2; - int var3; - int var4; - */ +int16 Op_60(void) { + /* + * int var0; + * int var1; + * int var2; + * int var3; + * int var4; + */ - var0 = popVar(); - var1 = popVar(); - var2 = popVar(); - var3 = popVar(); - var4 = popVar(); + var0 = popVar(); + var1 = popVar(); + var2 = popVar(); + var3 = popVar(); + var4 = popVar(); - if(!var4) - { - var4 = currentScriptPtr->overlayNumber; - } + if (!var4) { + var4 = currentScriptPtr->overlayNumber; + } - Op_60Sub(var4, &actorHead, var3, var0, var1, var2); + Op_60Sub(var4, &actorHead, var3, var0, var1, var2); - return 0; + return 0; } -int16 Op_6F(void) -{ - int numArgs = popVar(); +int16 Op_6F(void) { + int numArgs = popVar(); - assert(numArgs == 0); + assert(numArgs == 0); - { - popVar(); - char* string = (char*)popPtr(); + { + popVar(); + char *string = (char *)popPtr(); - printf("partial opcode 6F sprintf (%s)\n", string); - } + printf("partial opcode 6F sprintf (%s)\n", string); + } - return 0; + return 0; } -int16 Op_6E(void) -{ - char* ptr0 = (char*)popPtr(); - char* ptr1 = (char*)popPtr(); +int16 Op_6E(void) { + char *ptr0 = (char *)popPtr(); + char *ptr1 = (char *)popPtr(); - printf("partial opcode 6E (%s)(%s)\n", ptr0, ptr1); + printf("partial opcode 6E (%s)(%s)\n", ptr0, ptr1); - return 0; + return 0; } -int16 Op_InitializeState2(void) -{ - var0 = popVar(); - char* ptr = (char*)popPtr(); - var1 = popVar(); +int16 Op_InitializeState2(void) { + var0 = popVar(); + char *ptr = (char *)popPtr(); + var1 = popVar(); - if(!var1) - var1 = currentScriptPtr->overlayNumber; + if (!var1) + var1 = currentScriptPtr->overlayNumber; - return getProcParam(var1, var0, (uint8*)ptr); + return getProcParam(var1, var0, (uint8 *) ptr); } -int16 Op_2A(void) -{ - char var_26[36]; - char* ptr = (char*)popPtr(); - int overlayIdx; +int16 Op_2A(void) { + char var_26[36]; + char *ptr = (char *)popPtr(); + int overlayIdx; - var_26[0] = 0; + var_26[0] = 0; - if(ptr) - { - strcpy(var_26, ptr); - } + if (ptr) { + strcpy(var_26, ptr); + } - overlayIdx = popVar(); + overlayIdx = popVar(); - if(!overlayIdx) - overlayIdx = currentScriptPtr->overlayNumber; + if (!overlayIdx) + overlayIdx = currentScriptPtr->overlayNumber; - return getProcParam(overlayIdx, 40, (uint8*)var_26); + return getProcParam(overlayIdx, 40, (uint8 *) var_26); } -void setupOpcodeTable(void) -{ - int i; +void setupOpcodeTable(void) { + int i; - for(i=0;i<256;i++) - { - opcodeTablePtr[i] = NULL; - } + for (i = 0; i < 256; i++) { + opcodeTablePtr[i] = NULL; + } opcodeTablePtr[0x1] = Op_FadeIn; opcodeTablePtr[0x2] = Op_FadeOut; @@ -1623,13 +1460,13 @@ void setupOpcodeTable(void) opcodeTablePtr[0xC] = Op_LoadOverlay; opcodeTablePtr[0xD] = Op_SetColor; opcodeTablePtr[0xE] = Op_PlayFX; - opcodeTablePtr[0xF] = NULL; // used to be debug + opcodeTablePtr[0xF] = NULL; // used to be debug opcodeTablePtr[0x10] = Op_FreeOverlay; opcodeTablePtr[0x11] = Op_FindOverlay; - opcodeTablePtr[0x12] = NULL; // used to be exec debug + opcodeTablePtr[0x12] = NULL; // used to be exec debug opcodeTablePtr[0x13] = Op_AddMessage; opcodeTablePtr[0x14] = Op_RemoveMessage; - opcodeTablePtr[0x15] = NULL; // user wait + opcodeTablePtr[0x15] = NULL; // user wait opcodeTablePtr[0x16] = Op_FreezeCell; opcodeTablePtr[0x17] = Op_LoadCt; opcodeTablePtr[0x18] = Op_AddAnimation; @@ -1697,31 +1534,26 @@ void setupOpcodeTable(void) // TODO: copy the opcodes here } -int32 opcodeType8(void) -{ - int opcode = getByteFromScript(); +int32 opcodeType8(void) { + int opcode = getByteFromScript(); - if(!opcode) - return(-21); + if (!opcode) + return (-21); - if(opcode>0x100) - return(-21); + if (opcode > 0x100) + return (-21); - if(opcodeTablePtr[opcode]) - { - //printf("Function: %X\n",opcode); - pushVar(opcodeTablePtr[opcode]()); - return(0); - } - else - { - printf("Unsupported opcode %X in opcode type 8\n",opcode); - // exit(1); - } - - return 0; + if (opcodeTablePtr[opcode]) { + //printf("Function: %X\n",opcode); + pushVar(opcodeTablePtr[opcode] ()); + return (0); + } else { + printf("Unsupported opcode %X in opcode type 8\n", opcode); + // exit(1); + } -} + return 0; +} } // End of namespace Cruise -- cgit v1.2.3 From b56336391188da3d45a7a2a04184a08110ff6606 Mon Sep 17 00:00:00 2001 From: Vincent Hamm Date: Sat, 28 Apr 2007 00:26:57 +0000 Subject: Fix extended characters in font Implement palette manipulation svn-id: r26637 --- engines/cruise/function.cpp | 53 +++++++++++++++++++++++++++++++++++---------- 1 file changed, 41 insertions(+), 12 deletions(-) (limited to 'engines/cruise/function.cpp') diff --git a/engines/cruise/function.cpp b/engines/cruise/function.cpp index e8e86d82b6..f2d3ab0003 100644 --- a/engines/cruise/function.cpp +++ b/engines/cruise/function.cpp @@ -703,7 +703,7 @@ int16 Op_AddMessage(void) { if (color == -1) { color = 0; - //ASSERT(0); + ASSERT(0); //color = calcTabSomething(); } else { if (CVTLoaded) { @@ -939,17 +939,46 @@ int16 Op_removeBackgroundIncrust(void) { return 0; } -int16 Op_SetColor(void) { // TODO: palette manipulation - //var_4 = popVar(); - //var_6 = popVar(); - //var_8 = popVar(); - //int si = popVar(); - //int di = popVar(); - popVar(); - popVar(); - popVar(); - popVar(); - popVar(); +int16 Op_SetColor(void) { + int colorB = popVar(); + int colorG = popVar(); + int colorR = popVar(); + int endIdx = popVar(); + int startIdx = popVar(); + + int i; + + int R,G,B; + +#define convertRatio 36.571428571428571428571428571429 + + for(i=startIdx; i<=endIdx; i++) + { + R = (int)(colorR*convertRatio); + G = (int)(colorG*convertRatio); + B = (int)(colorB*convertRatio); + + if (R > 0xFF) + R = 0xFF; + if (G > 0xFF) + G = 0xFF; + if (B > 0xFF) + B = 0xFF; + + if (CVTLoaded) { + int colorIdx = cvtPalette[i]; + + lpalette[colorIdx].R = R; + lpalette[colorIdx].G = G; + lpalette[colorIdx].B = B; + } + else + { + lpalette[i].R = R; + lpalette[i].G = G; + lpalette[i].B = B; + } + } return 0; } -- cgit v1.2.3 From 32dbf6ae52a2c3938d7c77a5edd80980e62f9826 Mon Sep 17 00:00:00 2001 From: Torbjörn Andersson Date: Sat, 28 Apr 2007 04:22:23 +0000 Subject: Fixed warning. svn-id: r26638 --- engines/cruise/function.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'engines/cruise/function.cpp') diff --git a/engines/cruise/function.cpp b/engines/cruise/function.cpp index f2d3ab0003..f07c8b5a92 100644 --- a/engines/cruise/function.cpp +++ b/engines/cruise/function.cpp @@ -36,10 +36,10 @@ struct actorTableStruct { typedef struct actorTableStruct actorTableStruct; actorTableStruct actorTable1[] = { - { 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - {-38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} + { { 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { { 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { { 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { {-38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } }; int16 Op_LoadOverlay(void) { -- cgit v1.2.3 From 6ba72121ad547a5bacaa2c89215ca6f48653f46a Mon Sep 17 00:00:00 2001 From: Torbjörn Andersson Date: Sat, 28 Apr 2007 04:29:05 +0000 Subject: Changed abs() to ABS() svn-id: r26639 --- engines/cruise/function.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'engines/cruise/function.cpp') diff --git a/engines/cruise/function.cpp b/engines/cruise/function.cpp index f07c8b5a92..1acf330638 100644 --- a/engines/cruise/function.cpp +++ b/engines/cruise/function.cpp @@ -24,6 +24,7 @@ #include "cruise/cruise_main.h" #include "cruise/cell.h" +#include "common/util.h" namespace Cruise { @@ -857,7 +858,7 @@ int16 Op_InitializeStateB(void) { int sign; if (di) { - sign = di / (abs(di)); + sign = di / (ABS(di)); } else { sign = 0; } @@ -1180,7 +1181,7 @@ int16 Op_AddAnimation(void) { si->stepX = stepX; si->stepY = stepY; - int newFrame = abs(actorTable1[direction].data[0]) - 1; + int newFrame = ABS(actorTable1[direction].data[0]) - 1; int zoom = computeZoom(params.Y); -- cgit v1.2.3 From 39238a9472c64f6416bf855966460bd06585a833 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sat, 28 Apr 2007 06:57:32 +0000 Subject: Ahem. Fixing code formatting. svn-id: r26640 --- engines/cruise/function.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'engines/cruise/function.cpp') diff --git a/engines/cruise/function.cpp b/engines/cruise/function.cpp index 1acf330638..5a996479a3 100644 --- a/engines/cruise/function.cpp +++ b/engines/cruise/function.cpp @@ -953,8 +953,7 @@ int16 Op_SetColor(void) { #define convertRatio 36.571428571428571428571428571429 - for(i=startIdx; i<=endIdx; i++) - { + for(i=startIdx; i<=endIdx; i++) { R = (int)(colorR*convertRatio); G = (int)(colorG*convertRatio); B = (int)(colorB*convertRatio); @@ -972,9 +971,7 @@ int16 Op_SetColor(void) { lpalette[colorIdx].R = R; lpalette[colorIdx].G = G; lpalette[colorIdx].B = B; - } - else - { + } else { lpalette[i].R = R; lpalette[i].G = G; lpalette[i].B = B; -- cgit v1.2.3 From fe8d2a8e7f899858784464550423f0deb5470f6c Mon Sep 17 00:00:00 2001 From: Vincent Hamm Date: Sat, 28 Apr 2007 22:31:55 +0000 Subject: More cleanup Few bug fix svn-id: r26666 --- engines/cruise/function.cpp | 153 ++++++++++++++------------------------------ 1 file changed, 48 insertions(+), 105 deletions(-) (limited to 'engines/cruise/function.cpp') diff --git a/engines/cruise/function.cpp b/engines/cruise/function.cpp index 5a996479a3..559cecd189 100644 --- a/engines/cruise/function.cpp +++ b/engines/cruise/function.cpp @@ -30,19 +30,6 @@ namespace Cruise { opcodeFunction opcodeTablePtr[256]; -struct actorTableStruct { - int data[13]; -}; - -typedef struct actorTableStruct actorTableStruct; - -actorTableStruct actorTable1[] = { - { { 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, - { { 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, - { { 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, - { {-38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } -}; - int16 Op_LoadOverlay(void) { uint8 *originalScriptName; uint8 scriptName[38]; @@ -116,9 +103,9 @@ int16 Op_startScript(void) { } ptr = - attacheNewScriptToTail(ovlIdx, &scriptHandle2, scriptIdx, + attacheNewScriptToTail(ovlIdx, &procHead, scriptIdx, currentScriptPtr->type, currentScriptPtr->scriptNumber, - currentScriptPtr->overlayNumber, scriptType_Minus20); + currentScriptPtr->overlayNumber, scriptType_MinusPROC); if (!ptr) return (0); @@ -156,9 +143,7 @@ int16 Op_AddProc(void) { if (!overlay) return (0); - attacheNewScriptToTail(overlay, &scriptHandle2, pop2, - currentScriptPtr->type, currentScriptPtr->scriptNumber, - currentScriptPtr->overlayNumber, scriptType_20); + attacheNewScriptToTail(overlay, &procHead, pop2, currentScriptPtr->type, currentScriptPtr->scriptNumber, currentScriptPtr->overlayNumber, scriptType_PROC); if (pop1 > 0) { printf("Unsupported art send in op6!\n"); @@ -287,8 +272,7 @@ int16 Op_RemoveMessage(void) { overlay = currentScriptPtr->overlayNumber; } - removeObjectFromList(overlay, idx, &cellHead, - currentActiveBackgroundPlane, 5); + removeCell(&cellHead, overlay, idx, 5, currentActiveBackgroundPlane); return (0); } @@ -349,7 +333,7 @@ int16 Op_RemoveProc(void) { overlay = currentScriptPtr->overlayNumber; } - removeScript(overlay, idx, &scriptHandle2); + removeScript(overlay, idx, &procHead); return (0); } @@ -423,10 +407,10 @@ int16 Op_changeCutSceneState(void) { int16 Op_62(void) { if (currentScriptPtr->var1A == 20) { changeScriptParamInList(currentScriptPtr->var18, - currentScriptPtr->var16, &scriptHandle2, 9997, -1); + currentScriptPtr->var16, &procHead, 9997, -1); } else if (currentScriptPtr->var1A == 30) { changeScriptParamInList(currentScriptPtr->var18, - currentScriptPtr->var16, &scriptHandle1, 9997, -1); + currentScriptPtr->var16, &relHead, 9997, -1); } return 0; @@ -541,7 +525,7 @@ int16 Op_InitializeState(void) { if (!ovlIdx) ovlIdx = currentScriptPtr->overlayNumber; - Op_InitializeStateSub(ovlIdx, objIdx, param1); + objInit(ovlIdx, objIdx, param1); return (0); } @@ -613,38 +597,34 @@ int16 Op_GetMouseClick3(void) { } int16 Op_AddCell(void) { - int16 param1 = popVar(); - int16 param2 = popVar(); + int16 objType = popVar(); + int16 objIdx = popVar(); int16 overlayIdx = popVar(); if (!overlayIdx) overlayIdx = currentScriptPtr->overlayNumber; - addCell(overlayIdx, param2, &cellHead, currentScriptPtr->type, - currentScriptPtr->scriptNumber, currentScriptPtr->overlayNumber, - currentActiveBackgroundPlane, param1); + addCell(&cellHead, overlayIdx, objIdx, objType, currentActiveBackgroundPlane, currentScriptPtr->overlayNumber, currentScriptPtr->scriptNumber, currentScriptPtr->type); return 0; } -int16 Op_2F(void) { - int16 param1 = popVar(); - int16 param2 = popVar(); +int16 Op_AddBackgroundIncrust(void) { + int16 objType = popVar(); + int16 objIdx = popVar(); int16 overlayIdx = popVar(); if (!overlayIdx) overlayIdx = currentScriptPtr->overlayNumber; - addBackgroundIncrust(overlayIdx, param2, &backgroundIncrustHead, - currentScriptPtr->scriptNumber, currentScriptPtr->overlayNumber, - currentActiveBackgroundPlane, param1); + addBackgroundIncrust(overlayIdx, objIdx, &backgroundIncrustHead, currentScriptPtr->scriptNumber, currentScriptPtr->overlayNumber, currentActiveBackgroundPlane, objType); return 0; } int16 Op_RemoveCell(void) { - var1 = popVar(); + int objType = popVar(); int objectIdx = popVar(); int ovlNumber = popVar(); @@ -652,8 +632,7 @@ int16 Op_RemoveCell(void) { ovlNumber = currentScriptPtr->overlayNumber; } - removeObjectFromList(ovlNumber, objectIdx, &cellHead, - currentActiveBackgroundPlane, var1); + removeCell(&cellHead, ovlNumber, objectIdx, objType, currentActiveBackgroundPlane); return 0; } @@ -669,10 +648,10 @@ int16 Op_SetFontFileIndex(void) { int16 Op_63(void) { if (currentScriptPtr->var1A == 0x14) { changeScriptParamInList(currentScriptPtr->var18, - currentScriptPtr->var16, &scriptHandle2, 0, -1); + currentScriptPtr->var16, &procHead, 0, -1); } else if (currentScriptPtr->var1A == 0x1E) { changeScriptParamInList(currentScriptPtr->var18, - currentScriptPtr->var16, &scriptHandle1, 0, -1); + currentScriptPtr->var16, &relHead, 0, -1); } return 0; @@ -770,47 +749,39 @@ int16 Op_AutoCell(void) { if (!overlay) overlay = currentScriptPtr->overlayNumber; - pObject = - addCell(overlay, obj, &cellHead, currentScriptPtr->type, - currentScriptPtr->scriptNumber, currentScriptPtr->overlayNumber, - currentActiveBackgroundPlane, 4); + pObject = addCell(&cellHead, overlay, obj, 4, currentActiveBackgroundPlane, currentScriptPtr->overlayNumber, currentScriptPtr->scriptNumber, currentScriptPtr->type); if (!pObject) return 0; - pObject->field_2C = signal; - pObject->field_30 = loop; - pObject->nextAnimDelay = wait; + pObject->animSignal = signal; + pObject->animLoop = loop; + pObject->animWait = wait; pObject->animStep = animStep; - pObject->field_22 = end; - pObject->field_20 = start; - pObject->field_2A = type; - pObject->field_28 = change; + pObject->animEnd = end; + pObject->animStart = start; + pObject->animType = type; + pObject->animChange = change; if (type) { - if (currentScriptPtr->type == 20) { - changeScriptParamInList(currentScriptPtr-> - overlayNumber, currentScriptPtr->scriptNumber, - &scriptHandle2, 9996, -1); - } else if (currentScriptPtr->type == 30) { - changeScriptParamInList(currentScriptPtr-> - overlayNumber, currentScriptPtr->scriptNumber, - &scriptHandle1, 9996, -1); + if (currentScriptPtr->type == scriptType_PROC) { + changeScriptParamInList(currentScriptPtr->overlayNumber, currentScriptPtr->scriptNumber, &procHead, 9996, -1); + } else if (currentScriptPtr->type == scriptType_REL) { + changeScriptParamInList(currentScriptPtr->overlayNumber, currentScriptPtr->scriptNumber, &relHead, 9996, -1); } } if (change == 5) { - Op_InitializeStateSub(pObject->overlay, pObject->idx, start); + objInit(pObject->overlay, pObject->idx, start); } else { - setObjectPosition(pObject->overlay, pObject->idx, - pObject->field_28, start); + setObjectPosition(pObject->overlay, pObject->idx, pObject->animChange, start); } if (wait < 0) { objectParamsQuery params; getMultipleObjectParam(overlay, obj, ¶ms); - pObject->currentAnimDelay = params.var6 - 1; + pObject->animCounter = params.var6 - 1; } return 0; @@ -927,7 +898,7 @@ void removeBackgroundIncrust(int overlay, int idx, } } -int16 Op_removeBackgroundIncrust(void) { +int16 Op_RemoveBackgroundIncrust(void) { int idx = popVar(); int overlay = popVar(); @@ -1178,11 +1149,11 @@ int16 Op_AddAnimation(void) { si->stepX = stepX; si->stepY = stepY; - int newFrame = ABS(actorTable1[direction].data[0]) - 1; + int newFrame = ABS(raoul_end[direction][0]) - 1; int zoom = computeZoom(params.Y); - if (actorTable1[direction].data[0] < 0) { + if (raoul_end[direction][0] < 0) { zoom = -zoom; } @@ -1332,47 +1303,19 @@ int16 Op_6C(void) { return temp; } -void configureAllObjects(int overlayIdx, cellStruct * pObject, int _var4, - int _var0, int _var1, int _var2, int _var3) { - while (pObject) { - if ((pObject->overlay == overlayIdx) || (overlayIdx == -1)) { - if ((pObject->idx == _var4) || (_var4 == -1)) { - if ((pObject->type == _var3) || (_var3 == -1)) { - if ((pObject->backgroundPlane == _var2) || (_var2 == -1)) { - if ((pObject->freeze == _var1) || (_var1 == -1)) { - pObject->freeze = _var0; - } - } - } - } - } - - pObject = pObject->next; - } -} - int16 Op_FreezeCell(void) { - /* - * int var0; - * int var1; - * int var2; - * int var3; - * int var4; - * int var5; - */ - - var0 = popVar(); - var1 = popVar(); - var2 = popVar(); - var3 = popVar(); - var4 = popVar(); - var5 = popVar(); + int newFreezz = popVar(); + int oldFreeze = popVar(); + int backgroundPlante = popVar(); + int objType = popVar(); + int objIdx = popVar(); + int overlayIdx = popVar(); - if (!var5) { - var5 = currentScriptPtr->overlayNumber; + if (!overlayIdx) { + overlayIdx = currentScriptPtr->overlayNumber; } - configureAllObjects(var5, &cellHead, var4, var0, var1, var2, var3); + freezeCell(&cellHead, overlayIdx, objIdx, objType, backgroundPlante, oldFreeze, newFreezz); return 0; } @@ -1509,8 +1452,8 @@ void setupOpcodeTable(void) { opcodeTablePtr[0x2B] = Op_2B; opcodeTablePtr[0x2C] = Op_2C; opcodeTablePtr[0x2E] = Op_releaseOverlay; - opcodeTablePtr[0x2F] = Op_2F; - opcodeTablePtr[0x30] = Op_removeBackgroundIncrust; + opcodeTablePtr[0x2F] = Op_AddBackgroundIncrust; + opcodeTablePtr[0x30] = Op_RemoveBackgroundIncrust; opcodeTablePtr[0x32] = Op_freeBackgroundInscrustList; opcodeTablePtr[0x37] = Op_37; opcodeTablePtr[0x38] = Op_removeBackground; -- cgit v1.2.3 From f5c73e1603c98df8a9e0ac1c99e9b4da27eb8132 Mon Sep 17 00:00:00 2001 From: Vincent Hamm Date: Sat, 28 Apr 2007 23:21:13 +0000 Subject: Implement missing opcode and fix staff intro svn-id: r26669 --- engines/cruise/function.cpp | 143 ++++++++++++++++++++++---------------------- 1 file changed, 73 insertions(+), 70 deletions(-) (limited to 'engines/cruise/function.cpp') diff --git a/engines/cruise/function.cpp b/engines/cruise/function.cpp index 559cecd189..45aeb0e9f5 100644 --- a/engines/cruise/function.cpp +++ b/engines/cruise/function.cpp @@ -839,65 +839,6 @@ int16 Op_InitializeStateB(void) { return si; } -void removeBackgroundIncrust(int overlay, int idx, - backgroundIncrustStruct * pHead) { - objectParamsQuery params; - int var_4; - int var_6; - - backgroundIncrustStruct *pCurrent; - backgroundIncrustStruct *pCurrentHead; - - getMultipleObjectParam(overlay, idx, ¶ms); - - var_4 = params.X; - var_6 = params.Y; - - pCurrent = pHead->next; - - while (pCurrent) { - if ((pCurrent->overlayIdx == overlay || overlay == -1) && - (pCurrent->objectIdx == idx || idx == -1) && - (pCurrent->X == var_4) && (pCurrent->Y == var_6)) { - pCurrent->field_6 = (uint16) - 1; - } - - pCurrent = pCurrent->next; - } - - pCurrentHead = pHead; - pCurrent = pHead->next; - - while (pCurrent) { - if (pCurrent->field_6 == (uint16) - 1) { - backgroundIncrustStruct *pNext = pCurrent->next; - backgroundIncrustStruct *bx = pCurrentHead; - backgroundIncrustStruct *cx; - - bx->next = pNext; - cx = pNext; - - if (!pNext) { - cx = pHead; - } - - bx = cx; - bx->prev = pCurrent->next; - - if (pCurrent->ptr) { - free(pCurrent->ptr); - } - - free(pCurrent); - - pCurrent = pNext; - } else { - pCurrentHead = pCurrent; - pCurrent = pCurrent->next; - } - } -} - int16 Op_RemoveBackgroundIncrust(void) { int idx = popVar(); int overlay = popVar(); @@ -1001,7 +942,7 @@ int16 Op_61(void) { return si; } -int16 Op_1A(void) { +int16 Op_SetZoom(void) { var46 = popVar(); var45 = popVar(); var42 = popVar(); @@ -1028,8 +969,7 @@ int16 Op_22(void) { return (computeZoom(popVar())); } -actorStruct *addAnimation(actorStruct * pHead, int overlay, int objIdx, - int param, int param2) { +actorStruct *addAnimation(actorStruct * pHead, int overlay, int objIdx, int param, int param2) { actorStruct *pPrevious = pHead; actorStruct *pCurrent = pHead->next; @@ -1073,6 +1013,68 @@ actorStruct *addAnimation(actorStruct * pHead, int overlay, int objIdx, return pNewElement; } +int removeAnimation(actorStruct * pHead, int overlay, int objIdx, int objType) +{ + actorStruct* pl; + actorStruct* pl2; + actorStruct* pl3; + actorStruct* pl4; + + int dir = 0; + + pl = pHead; + pl2 = pl; + pl = pl2->next; + + while(pl) + { + pl2 = pl; + + if(((pl->overlayNumber == overlay) || (overlay == -1)) && + ((pl->idx == objIdx) || (objIdx == -1)) && + ((pl->type == objType) || (objType == -1))) + { + pl->type = -1; + } + + pl = pl2->next; + } + + pl = pHead; + pl2 = pl; + pl = pl2->next; + + while(pl) + { + if(pl->type == -1) + { + pl4 = pl->next; + pl2->next = pl4; + pl3 = pl4; + + if(pl3 == NULL) + pl3 = pHead; + + pl3->prev = pl->prev; + + dir = pl->startDirection; + + if(pl->idx >= 0) + freePerso(pl->idx); + + free(pl); + pl = pl4; + } + else + { + pl2 = pl; + pl = pl2->next; + } + } + + return dir; +} + int flag_obstacle; // computedVar14Bis void checkCollisionWithWalkBoxesBoundingBoxes(int x, int y) { @@ -1157,8 +1159,7 @@ int16 Op_AddAnimation(void) { zoom = -zoom; } - checkCollisionWithWalkBoxesBoundingBoxes(params.X, - params.Y); + checkCollisionWithWalkBoxesBoundingBoxes(params.X, params.Y); setObjectPosition(overlay, obj, 3, newFrame + start); setObjectPosition(overlay, obj, 4, zoom); @@ -1172,13 +1173,15 @@ int16 Op_AddAnimation(void) { } int16 Op_RemoveAnimation(void) { - popVar(); - popVar(); - popVar(); + int objType = popVar(); + int objIdx = popVar(); + int ovlIdx = popVar(); - printf("Partial op 19 (remove actor)\n"); + if (!ovlIdx) { + ovlIdx = currentScriptPtr->overlayNumber; + } - return 0; + return removeAnimation(&actorHead, ovlIdx, objIdx, objType); } int16 Op_regenerateBackgroundIncrust(void) { @@ -1441,7 +1444,7 @@ void setupOpcodeTable(void) { opcodeTablePtr[0x17] = Op_LoadCt; opcodeTablePtr[0x18] = Op_AddAnimation; opcodeTablePtr[0x19] = Op_RemoveAnimation; - opcodeTablePtr[0x1A] = Op_1A; + opcodeTablePtr[0x1A] = Op_SetZoom; opcodeTablePtr[0x1E] = Op_1E; opcodeTablePtr[0x21] = Op_21; opcodeTablePtr[0x22] = Op_22; -- cgit v1.2.3 From 3ca3f07cdd8d3f1ab7b9de309997316a2201226b Mon Sep 17 00:00:00 2001 From: Torbjörn Andersson Date: Sun, 29 Apr 2007 01:07:19 +0000 Subject: Only update the backend's palette when necessary, since doing this triggers a full redraw. (We still do that by updating the entire screen every frame, but that could possibly change in the future.) As an added bonus, I can now see all the glitches of the English version's intro in full ScummTechniVMColor. :-) svn-id: r26672 --- engines/cruise/function.cpp | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) (limited to 'engines/cruise/function.cpp') diff --git a/engines/cruise/function.cpp b/engines/cruise/function.cpp index 45aeb0e9f5..9ab3e3a835 100644 --- a/engines/cruise/function.cpp +++ b/engines/cruise/function.cpp @@ -879,14 +879,9 @@ int16 Op_SetColor(void) { if (CVTLoaded) { int colorIdx = cvtPalette[i]; - - lpalette[colorIdx].R = R; - lpalette[colorIdx].G = G; - lpalette[colorIdx].B = B; + gfxModuleData_setPalColor(colorIdx, R, G, B); } else { - lpalette[i].R = R; - lpalette[i].G = G; - lpalette[i].B = B; + gfxModuleData_setPalColor(i, R, G, B); } } -- cgit v1.2.3 From a7ced58d9a24bae745ef2b10e5975643c395c526 Mon Sep 17 00:00:00 2001 From: Max Horn Date: Sat, 12 May 2007 13:39:53 +0000 Subject: Don't cast pointers to int, this (potentially) breaks 64 bit systems svn-id: r26806 --- engines/cruise/function.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'engines/cruise/function.cpp') diff --git a/engines/cruise/function.cpp b/engines/cruise/function.cpp index 9ab3e3a835..5971d191fa 100644 --- a/engines/cruise/function.cpp +++ b/engines/cruise/function.cpp @@ -1083,8 +1083,7 @@ void checkCollisionWithWalkBoxesBoundingBoxes(int x, int y) { ctpVar19SubStruct *subStruct; - if (-1 == (int)di->field_0) // ok, ugly, but it's in the original - { + if ((ctpVar19Struct *)-1 == di->field_0) { // ok, ugly, but it's in the original flag_obstacle = 0; return; } -- cgit v1.2.3 From 67ba6b1e4064de28b27a5979ccf88086aecdaced Mon Sep 17 00:00:00 2001 From: Vincent Hamm Date: Wed, 16 May 2007 22:44:22 +0000 Subject: Figured out the bug that was causing the animations to glitch svn-id: r26856 --- engines/cruise/function.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'engines/cruise/function.cpp') diff --git a/engines/cruise/function.cpp b/engines/cruise/function.cpp index 5971d191fa..73e1bd9084 100644 --- a/engines/cruise/function.cpp +++ b/engines/cruise/function.cpp @@ -102,10 +102,7 @@ int16 Op_startScript(void) { ovlIdx = currentScriptPtr->overlayNumber; } - ptr = - attacheNewScriptToTail(ovlIdx, &procHead, scriptIdx, - currentScriptPtr->type, currentScriptPtr->scriptNumber, - currentScriptPtr->overlayNumber, scriptType_MinusPROC); + ptr = attacheNewScriptToTail(ovlIdx, &procHead, scriptIdx, currentScriptPtr->type, currentScriptPtr->scriptNumber, currentScriptPtr->overlayNumber, scriptType_MinusPROC); if (!ptr) return (0); @@ -194,7 +191,7 @@ int16 Op_rand(void) { // TODO: implement if (var < 2) { return (0); } -// return(8); + return (rand() % var); } @@ -797,7 +794,7 @@ int16 Op_66(void) { getMultipleObjectParam(overlay, index, ¶ms); - return params.var7; + return params.var7 - 1; } int16 Op_SetActiveBackgroundPlane(void) { -- cgit v1.2.3