[Scummvm-cvs-logs] SF.net SVN: scummvm: [26666] scummvm/trunk/engines/cruise

yazoo at users.sourceforge.net yazoo at users.sourceforge.net
Sun Apr 29 00:31:56 CEST 2007


Revision: 26666
          http://scummvm.svn.sourceforge.net/scummvm/?rev=26666&view=rev
Author:   yazoo
Date:     2007-04-28 15:31:55 -0700 (Sat, 28 Apr 2007)

Log Message:
-----------
More cleanup
Few bug fix

Modified Paths:
--------------
    scummvm/trunk/engines/cruise/actor.cpp
    scummvm/trunk/engines/cruise/actor.h
    scummvm/trunk/engines/cruise/cell.cpp
    scummvm/trunk/engines/cruise/cell.h
    scummvm/trunk/engines/cruise/cruise_main.cpp
    scummvm/trunk/engines/cruise/dataLoader.cpp
    scummvm/trunk/engines/cruise/decompiler.cpp
    scummvm/trunk/engines/cruise/detection.cpp
    scummvm/trunk/engines/cruise/function.cpp
    scummvm/trunk/engines/cruise/mainDraw.cpp
    scummvm/trunk/engines/cruise/object.cpp
    scummvm/trunk/engines/cruise/object.h
    scummvm/trunk/engines/cruise/overlay.cpp
    scummvm/trunk/engines/cruise/overlay.h
    scummvm/trunk/engines/cruise/saveload.cpp
    scummvm/trunk/engines/cruise/script.cpp
    scummvm/trunk/engines/cruise/script.h
    scummvm/trunk/engines/cruise/various.cpp
    scummvm/trunk/engines/cruise/various.h

Modified: scummvm/trunk/engines/cruise/actor.cpp
===================================================================
--- scummvm/trunk/engines/cruise/actor.cpp	2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/actor.cpp	2007-04-28 22:31:55 UTC (rev 26666)
@@ -774,11 +774,7 @@
 			getMultipleObjectParam(currentActor->overlayNumber,
 			    currentActor->idx, &params);
 
-			if (((animationStart && !currentActor->flag)
-				|| (!animationStart
-				    && currentActor->x_dest != -1
-				    && currentActor->y_dest != -1))
-			    && (currentActor->type == 0)) {
+			if (((animationStart && !currentActor->flag) || (!animationStart && currentActor->x_dest != -1 && currentActor->y_dest != -1)) && (currentActor->type == 0)) {
 				// mouse animation
 				if (!animationStart) {
 					var34 = currentActor->x_dest;
@@ -790,11 +786,7 @@
 					currentActor->flag = 1;
 				}
 
-				currentActor->pathId =
-				    computePathfinding(returnVar2, params.X,
-				    params.Y, var34, var35,
-				    currentActor->stepX, currentActor->stepY,
-				    currentActor->pathId);
+				currentActor->pathId = computePathfinding(returnVar2, params.X, params.Y, var34, var35, currentActor->stepX, currentActor->stepY, currentActor->pathId);
 
 				if (currentActor->pathId == -1) {
 					if ((currentActor->endDirection != -1)
@@ -1136,31 +1128,19 @@
 					}
 				case ANIM_PHASE_END:
 					{
-						int newA =
-						    raoul_end[currentActor->
-						    startDirection][0];
+						int newA = raoul_end[currentActor->startDirection][0];
 
-						set_anim(currentActor->
-						    overlayNumber,
-						    currentActor->idx,
-						    currentActor->start,
-						    currentActor->x,
-						    currentActor->y, newA,
-						    currentActor->poly);
+						set_anim(currentActor->overlayNumber, currentActor->idx, currentActor->start, currentActor->x, currentActor->y, newA, currentActor->poly);
 
 						currentActor->pathId = -2;
-						currentActor->phase =
-						    ANIM_PHASE_WAIT;
+						currentActor->phase = ANIM_PHASE_WAIT;
 						currentActor->flag = 0;
-						currentActor->endDirection =
-						    -1;
+						currentActor->endDirection = -1;
 						break;
 					}
 				default:
 					{
-						printf
-						    ("Unimplemented currentActor->phase=%d in processAnimation()\n",
-						    currentActor->phase);
+						printf("Unimplemented currentActor->phase=%d in processAnimation()\n", currentActor->phase);
 						// exit(1);
 					}
 				}

Modified: scummvm/trunk/engines/cruise/actor.h
===================================================================
--- scummvm/trunk/engines/cruise/actor.h	2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/actor.h	2007-04-28 22:31:55 UTC (rev 26666)
@@ -64,10 +64,13 @@
 
 typedef struct actorStruct actorStruct;
 
-int16 mainProc13(int overlayIdx, int param1, actorStruct * pStartEntry,
-    int param2);
-actorStruct *findActor(int overlayIdx, int param1, actorStruct * pStartEntry,
-    int param2);
+extern int raoul_move[][13];
+extern int raoul_end[][13];
+extern int raoul_stat[][13];
+extern int raoul_invstat[][13];
+
+int16 mainProc13(int overlayIdx, int param1, actorStruct * pStartEntry, int param2);
+actorStruct *findActor(int overlayIdx, int param1, actorStruct * pStartEntry, int param2);
 void processAnimation(void);
 void getPixel(int x, int y);
 

Modified: scummvm/trunk/engines/cruise/cell.cpp
===================================================================
--- scummvm/trunk/engines/cruise/cell.cpp	2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/cell.cpp	2007-04-28 22:31:55 UTC (rev 26666)
@@ -32,6 +32,15 @@
 	ptr->prev = NULL;
 }
 
+void freeMessageList(cellStruct *objPtr) {
+/*	if (objPtr) {
+		 if(objPtr->next)
+		 free(objPtr->next);
+
+		free(objPtr);
+	} */
+}
+
 void loadSavegameDataSub2(FILE *f) {
 	unsigned short int n_chunks;
 	int i;
@@ -60,9 +69,7 @@
 	}
 }
 
-cellStruct *addCell(int16 overlayIdx, int16 param2, cellStruct *pHead,
-	    int16 scriptType, int16 scriptNumber, int16 scriptOverlay, int16 param3,
-    	int16 param4) {
+cellStruct *addCell(cellStruct *pHead, int16 overlayIdx, int16 objIdx, int16 type, int16 backgroundPlane, int16 scriptOverlay, int16 scriptNumber, int16 scriptType) {
 	int16 var;
 
 	cellStruct *newElement;
@@ -70,7 +77,7 @@
 	cellStruct *currentHead2;
 	cellStruct *currentHead3;
 
-	if (getSingleObjectParam(overlayIdx, param2, 2, &var) < 0) {
+	if (getSingleObjectParam(overlayIdx, objIdx, 2, &var) < 0) {
 		return 0;
 	}
 
@@ -85,8 +92,7 @@
 		if (currentHead2->type != 5) {
 			int16 lvar2;
 
-			getSingleObjectParam(currentHead2->overlay,
-			    currentHead2->idx, 2, &lvar2);
+			getSingleObjectParam(currentHead2->overlay, currentHead2->idx, 2, &lvar2);
 
 			if (lvar2 > var)
 				break;
@@ -98,9 +104,9 @@
 
 	if (currentHead2) {
 		if ((currentHead2->overlay == overlayIdx) &&
-		    (currentHead2->backgroundPlane == param3) &&
-		    (currentHead2->idx == param2) &&
-		    (currentHead2->type == param4))
+		    (currentHead2->backgroundPlane == backgroundPlane) &&
+		    (currentHead2->idx == objIdx) &&
+		    (currentHead2->type == type))
 
 			return NULL;
 	}
@@ -115,25 +121,26 @@
 	newElement->next = currentHead3->next;
 	currentHead3->next = newElement;
 
-	newElement->idx = param2;
-	newElement->type = param4;
-	newElement->backgroundPlane = param3;
+	newElement->idx = objIdx;
+	newElement->type = type;
+	newElement->backgroundPlane = backgroundPlane;
 	newElement->overlay = overlayIdx;
 	newElement->freeze = 0;
-	newElement->field_16 = scriptNumber;
-	newElement->field_18 = scriptOverlay;
+	newElement->parent = scriptNumber;
+	newElement->parentOverlay = scriptOverlay;
 	newElement->gfxPtr = NULL;
-	newElement->followObjectIdx = param2;
+	newElement->followObjectIdx = objIdx;
 	newElement->followObjectOverlayIdx = overlayIdx;
-	newElement->field_1A = scriptType;
-	newElement->field_20 = 0;
-	newElement->field_22 = 0;
-	newElement->nextAnimDelay = 0;
-	newElement->field_2C = 0;
-	newElement->currentAnimDelay = 0;
-	newElement->field_2A = 0;
+	newElement->parentType = scriptType;
+
+	newElement->animStart = 0;
+	newElement->animEnd = 0;
+	newElement->animWait = 0;
+	newElement->animSignal = 0;
+	newElement->animCounter = 0;
+	newElement->animType = 0;
 	newElement->animStep = 0;
-	newElement->field_30 = 0;
+	newElement->animLoop = 0;
 
 	if (currentHead) {
 		newElement->prev = currentHead->prev;
@@ -146,4 +153,208 @@
 	return newElement;
 }
 
+void createTextObject(int overlayIdx, int oldVar8, cellStruct *pObject, int scriptNumber, int scriptOverlayNumber, int backgroundPlane, int16 color, int oldVar2, int oldVar4, int oldVar6) {
+
+	char *ax;
+	cellStruct *savePObject = pObject;
+	cellStruct *cx;
+
+	cellStruct *pNewElement;
+	cellStruct *si = pObject->next;
+	cellStruct *var_2;
+
+	while (si) {
+		pObject = si;
+		si = si->next;
+	}
+
+	var_2 = si;
+
+	pNewElement = (cellStruct *) malloc(sizeof(cellStruct));
+
+	pNewElement->next = pObject->next;
+	pObject->next = pNewElement;
+
+	pNewElement->idx = oldVar8;
+	pNewElement->type = 5;
+	pNewElement->backgroundPlane = backgroundPlane;
+	pNewElement->overlay = overlayIdx;
+	pNewElement->x = oldVar6;
+	pNewElement->field_C = oldVar4;
+	pNewElement->spriteIdx = oldVar2;
+	pNewElement->color = color;
+	pNewElement->freeze = 0;
+	pNewElement->parent = scriptNumber;
+	pNewElement->parentOverlay = scriptOverlayNumber;
+	pNewElement->gfxPtr = NULL;
+
+	if (var_2) {
+		cx = var_2;
+	} else {
+		cx = savePObject;
+	}
+
+	pNewElement->prev = cx->prev;
+	cx->prev = pNewElement;
+
+	ax = getText(oldVar8, overlayIdx);
+
+	if (ax) {
+		pNewElement->gfxPtr = renderText(oldVar2, (uint8 *) ax);
+	}
+}
+
+void removeCell(cellStruct *objPtr, int ovlNumber, int objectIdx, int objType, int backgroundPlane ) {
+	cellStruct *currentObj = objPtr->next;
+	cellStruct *previous;
+
+	while (currentObj) {
+		if (((currentObj->overlay == ovlNumber) || (ovlNumber == -1)) &&
+		    ((currentObj->idx == objectIdx) || (objectIdx == -1)) &&
+		    ((currentObj->type == objType) || (objType == -1)) &&
+		    ((currentObj->backgroundPlane == backgroundPlane) || (backgroundPlane == -1))) {
+			currentObj->type = -1;
+		}
+
+		currentObj = currentObj->next;
+	}
+
+	previous = objPtr;
+	currentObj = objPtr->next;
+
+	while (currentObj) {
+		cellStruct *si;
+
+		si = currentObj;
+
+		if (si->type == -1) {
+			cellStruct *dx;
+			previous->next = si->next;
+
+			dx = si->next;
+
+			if (!si->next) {
+				dx = objPtr;
+			}
+
+			dx->prev = si->prev;
+
+			// TODO: complelty wrong
+			//freeMessageList(si);
+
+			free(si);
+
+			currentObj = dx;
+		} else {
+			currentObj = si->next;
+			previous = si;
+		}
+	}
+}
+
+void freezeCell(cellStruct * pObject, int overlayIdx, int objIdx, int objType, int backgroundPlane, int oldFreeze, int newFreeze ) {
+	while (pObject) {
+		if ((pObject->overlay == overlayIdx) || (overlayIdx == -1)) {
+			if ((pObject->idx == objIdx) || (objIdx == -1)) {
+				if ((pObject->type == objType) || (objType == -1)) {
+					if ((pObject->backgroundPlane == backgroundPlane) || (backgroundPlane == -1)) {
+						if ((pObject->freeze == oldFreeze) || (oldFreeze == -1)) {
+							pObject->freeze = newFreeze;
+						}
+					}
+				}
+			}
+		}
+
+		pObject = pObject->next;
+	}
+}
+
+void sortCells(int16 param1, int16 param2, cellStruct *objPtr) {
+	int16 var;
+	cellStruct *var8_;
+	cellStruct *var40;
+	cellStruct *var3E;
+	cellStruct *currentObjPtrPrevious;
+	cellStruct *currentObjPtr2;
+	cellStruct *match;
+
+	getSingleObjectParam(param1, param2, 2, &var);
+
+	currentObjPtrPrevious = objPtr;
+	currentObjPtr2 = objPtr->next;
+
+	match = NULL;
+	var40 = NULL;
+	var3E = NULL;
+	var8_ = objPtr;
+
+	while (currentObjPtr2) {
+		if ((currentObjPtr2->overlay == param1) && (currentObjPtr2->idx == param2)) {// found
+			currentObjPtrPrevious->next = currentObjPtr2->next;
+
+			if (currentObjPtr2->next) {
+				currentObjPtr2->next->prev =
+				    currentObjPtr2->prev;
+			} else {
+				objPtr->prev = currentObjPtr2->prev;
+			}
+
+			if (var40) {
+				var40->prev = currentObjPtr2;
+			} else {
+				var3E = currentObjPtr2;
+			}
+
+			currentObjPtr2->prev = NULL;
+
+			currentObjPtr2->next = var40;
+
+			var40 = currentObjPtr2;
+
+			if (match == NULL) {
+				match = currentObjPtr2;
+			}
+		} else {
+			if (currentObjPtr2->type == 5) {
+				var2 = 32000;
+			} else {
+				int16 varC;
+
+				getSingleObjectParam(currentObjPtr2->overlay,
+				    currentObjPtr2->idx, 2, &varC);
+
+				var2 = varC;
+			}
+
+			if (var > var2) {
+				var8_ = currentObjPtr2;
+			}
+
+			currentObjPtrPrevious = currentObjPtrPrevious->next;
+		}
+
+		currentObjPtr2 = currentObjPtr2->next;
+	}
+
+	if (match) {
+		cellStruct *temp;
+
+		temp = var8_->next;
+
+		var8_->next = var40;
+		match->next = temp;
+
+		if (objPtr != var8_) {
+			var40->prev = var8_;
+		}
+
+		if (!temp) {
+			temp = match;
+		}
+
+		temp->prev = match;
+	}
+}
+
 } // End of namespace Cruise

Modified: scummvm/trunk/engines/cruise/cell.h
===================================================================
--- scummvm/trunk/engines/cruise/cell.h	2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/cell.h	2007-04-28 22:31:55 UTC (rev 26666)
@@ -38,26 +38,26 @@
 	int16 idx;
 	int16 type;
 	int16 overlay;
-	int16 field_A;
+	int16 x;
 	int16 field_C;
 	int16 spriteIdx;
 	int16 color;
 	int16 backgroundPlane;
 	int16 freeze;
-	int16 field_16;
-	int16 field_18;
-	int16 field_1A;
+	int16 parent;
+	int16 parentOverlay;
+	int16 parentType;
 	int16 followObjectOverlayIdx;
 	int16 followObjectIdx;
-	int16 field_20;
-	int16 field_22;
-	int16 nextAnimDelay;
+	int16 animStart;
+	int16 animEnd;
+	int16 animWait;
 	int16 animStep;
-	int16 field_28;
-	int16 field_2A;
-	int16 field_2C;
-	int16 currentAnimDelay;
-	int16 field_30;
+	int16 animChange;
+	int16 animType;
+	int16 animSignal;
+	int16 animCounter;
+	int16 animLoop;
 	gfxEntryStruct *gfxPtr;
 };
 
@@ -65,9 +65,11 @@
 
 void resetPtr(cellStruct * ptr);
 void loadSavegameDataSub2(FILE * f);
-cellStruct *addCell(int16 overlayIdx, int16 param2, cellStruct * pHead,
-    int16 scriptType, int16 scriptNumber, int16 scriptOverlay, int16 param3,
-    int16 param4);
+cellStruct *addCell(cellStruct *pHead, int16 overlayIdx, int16 objIdx, int16 type, int16 backgroundPlane, int16 scriptOverlay, int16 scriptNumber, int16 scriptType);
+void createTextObject(int overlayIdx, int oldVar8, cellStruct * pObject, int scriptNumber, int scriptOverlayNumber, int backgroundPlane, int16 color, int oldVar2, int oldVar4, int oldVar6);
+void removeCell(cellStruct *objPtr, int ovlNumber, int objectIdx, int objType, int backgroundPlane );
+void freezeCell(cellStruct * pObject, int overlayIdx, int objIdx, int objType, int backgroundPlane, int oldFreeze, int newFreeze );
+void sortCells(int16 param1, int16 param2, cellStruct *objPtr);
 
 } // End of namespace Cruise
 

Modified: scummvm/trunk/engines/cruise/cruise_main.cpp
===================================================================
--- scummvm/trunk/engines/cruise/cruise_main.cpp	2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/cruise_main.cpp	2007-04-28 22:31:55 UTC (rev 26666)
@@ -480,8 +480,8 @@
 
 	initBigVar3();
 
-	resetPtr2(&scriptHandle2);
-	resetPtr2(&scriptHandle1);
+	resetPtr2(&procHead);
+	resetPtr2(&relHead);
 
 	resetPtr(&cellHead);
 
@@ -579,9 +579,8 @@
 	if (bootOverlayNumber) {
 		positionInStack = 0;
 
-		attacheNewScriptToTail(bootOverlayNumber, &scriptHandle2, 0,
-		    20, 0, 0, scriptType_20);
-		scriptFunc2(bootOverlayNumber, &scriptHandle2, 1, 0);
+		attacheNewScriptToTail(bootOverlayNumber, &procHead, 0, 20, 0, 0, scriptType_PROC);
+		scriptFunc2(bootOverlayNumber, &procHead, 1, 0);
 	}
 
 	strcpyuint8(systemStrings.bootScriptName, "AUTO00");
@@ -878,7 +877,7 @@
 	    getObjectDataFromOverlay(overlayIdx, objIdx);
 
 	if (pObjectData) {
-		return pObjectData->var1;
+		return pObjectData->type;
 	} else {
 		return -11;
 	}
@@ -1029,7 +1028,7 @@
 						    var_34->stringNameOffset) {
 							if (pObject) {
 								if (pObject->
-								    var1 !=
+								    type !=
 								    3) {
 									char var_214[80];
 									char var_1C4[80];
@@ -1163,7 +1162,7 @@
 														if (strlen(var_214)) {
 															attacheNewScriptToTail
 															    (var_1E,
-															    &scriptHandle1,
+															    &relHead,
 															    var_34->
 															    field_2,
 															    30,
@@ -1171,7 +1170,7 @@
 															    scriptNumber,
 															    currentScriptPtr->
 															    overlayNumber,
-															    scriptType_30);
+															    scriptType_REL);
 														} else {
 															if (var_22->specialString1) {
 																ptr = getObjectName(var_34->varNameOffset, var_22->specialString1);
@@ -1531,11 +1530,11 @@
 				enableUser = 0;
 			}
 
-			manageScripts(&scriptHandle1);
-			manageScripts(&scriptHandle2);
+			manageScripts(&relHead);
+			manageScripts(&procHead);
 
-			removeFinishedScripts(&scriptHandle1);
-			removeFinishedScripts(&scriptHandle2);
+			removeFinishedScripts(&relHead);
+			removeFinishedScripts(&procHead);
 
 			processAnimation();
 

Modified: scummvm/trunk/engines/cruise/dataLoader.cpp
===================================================================
--- scummvm/trunk/engines/cruise/dataLoader.cpp	2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/dataLoader.cpp	2007-04-28 22:31:55 UTC (rev 26666)
@@ -185,8 +185,7 @@
 		return (-2);
 
 	filesDatabase[entryNumber].widthInColumn = width;
-	filesDatabase[entryNumber].subData.ptr2 =
-	    filesDatabase[entryNumber].subData.ptr + size;
+	filesDatabase[entryNumber].subData.ptr2 = filesDatabase[entryNumber].subData.ptr + size;
 	filesDatabase[entryNumber].width = width / 8;
 	filesDatabase[entryNumber].resType = resType;
 	filesDatabase[entryNumber].height = height;
@@ -225,16 +224,14 @@
 		width = (width * 8) / 5;
 	}
 
-	filesDatabase[entryNumber].subData.ptr =
-	    (uint8 *) mallocAndZero(size + div);
+	filesDatabase[entryNumber].subData.ptr = (uint8 *) mallocAndZero(size + div);
 
 	if (filesDatabase[entryNumber].subData.ptr) {
 		return (-2);
 	}
 
 	filesDatabase[entryNumber].widthInColumn = width;
-	filesDatabase[entryNumber].subData.ptr2 =
-	    filesDatabase[entryNumber].subData.ptr + size;
+	filesDatabase[entryNumber].subData.ptr2 = filesDatabase[entryNumber].subData.ptr + size;
 	filesDatabase[entryNumber].width = width / 8;
 	filesDatabase[entryNumber].resType = resType;
 	filesDatabase[entryNumber].height = height;

Modified: scummvm/trunk/engines/cruise/decompiler.cpp
===================================================================
--- scummvm/trunk/engines/cruise/decompiler.cpp	2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/decompiler.cpp	2007-04-28 22:31:55 UTC (rev 26666)
@@ -837,7 +837,7 @@
 		}
 	case 0x8:
 		{
-			sprintf(tempbuffer, "_removeObjectFromList(%s,%s,%s)",
+			sprintf(tempbuffer, "_removeCell(%s,%s,%s)",
 			    popDecomp(), popDecomp(), popDecomp());
 			pushDecomp(tempbuffer);
 			break;

Modified: scummvm/trunk/engines/cruise/detection.cpp
===================================================================
--- scummvm/trunk/engines/cruise/detection.cpp	2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/detection.cpp	2007-04-28 22:31:55 UTC (rev 26666)
@@ -75,7 +75,7 @@
 	{
 	    {
 			"cruise",
-			"",
+			"256 colors",
 			AD_ENTRY1("D1", "a90d2b9ead6b4d812cd14268672cf178"),
 			Common::EN_ANY,
 			Common::kPlatformPC,

Modified: scummvm/trunk/engines/cruise/function.cpp
===================================================================
--- scummvm/trunk/engines/cruise/function.cpp	2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/function.cpp	2007-04-28 22:31:55 UTC (rev 26666)
@@ -30,19 +30,6 @@
 
 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 @@
 	}
 
 	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 @@
 	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 @@
 		overlay = currentScriptPtr->overlayNumber;
 	}
 
-	removeObjectFromList(overlay, idx, &cellHead,
-	    currentActiveBackgroundPlane, 5);
+	removeCell(&cellHead, overlay, idx, 5, currentActiveBackgroundPlane);
 
 	return (0);
 }
@@ -349,7 +333,7 @@
 		overlay = currentScriptPtr->overlayNumber;
 	}
 
-	removeScript(overlay, idx, &scriptHandle2);
+	removeScript(overlay, idx, &procHead);
 
 	return (0);
 }
@@ -423,10 +407,10 @@
 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 @@
 	if (!ovlIdx)
 		ovlIdx = currentScriptPtr->overlayNumber;
 
-	Op_InitializeStateSub(ovlIdx, objIdx, param1);
+	objInit(ovlIdx, objIdx, param1);
 
 	return (0);
 }
@@ -613,38 +597,34 @@
 }
 
 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 @@
 		ovlNumber = currentScriptPtr->overlayNumber;
 	}
 
-	removeObjectFromList(ovlNumber, objectIdx, &cellHead,
-	    currentActiveBackgroundPlane, var1);
+	removeCell(&cellHead, ovlNumber, objectIdx, objType, currentActiveBackgroundPlane);
 
 	return 0;
 }
@@ -669,10 +648,10 @@
 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 @@
 	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, &params);
-		pObject->currentAnimDelay = params.var6 - 1;
+		pObject->animCounter = params.var6 - 1;
 	}
 
 	return 0;
@@ -927,7 +898,7 @@
 	}
 }
 
-int16 Op_removeBackgroundIncrust(void) {
+int16 Op_RemoveBackgroundIncrust(void) {
 	int idx = popVar();
 	int overlay = popVar();
 
@@ -1178,11 +1149,11 @@
 			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 @@
 	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;
-	 */
+	int newFreezz = popVar();
+	int oldFreeze = popVar();
+	int backgroundPlante = popVar();
+	int objType = popVar();
+	int objIdx = popVar();
+	int overlayIdx = popVar();
 
-	var0 = popVar();
-	var1 = popVar();
-	var2 = popVar();
-	var3 = popVar();
-	var4 = popVar();
-	var5 = 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 @@
 	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;

Modified: scummvm/trunk/engines/cruise/mainDraw.cpp
===================================================================
--- scummvm/trunk/engines/cruise/mainDraw.cpp	2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/mainDraw.cpp	2007-04-28 22:31:55 UTC (rev 26666)
@@ -29,43 +29,55 @@
 
 int currentTransparent;
 
-struct drawVar1Struct {
-	struct drawVar1Struct *next;
-	short int field_2;
-	short int field_4;
-	short int field_6;
-	short int field_8;
-	cellStruct *field_A;
+struct autoCellStruct {
+	struct autoCellStruct *next;
+	short int ovlIdx;
+	short int objIdx;
+	short int type;
+	short int newValue;
+	cellStruct *pCell;
 };
 
-typedef struct drawVar1Struct drawVar1Struct;
+typedef struct autoCellStruct autoCellStruct;
 
-drawVar1Struct drawVar1;
+autoCellStruct autoCellHead;
 
-void mainDraw6(void) {
-	drawVar1Struct *pCurrent = drawVar1.next;
+void addAutoCell(int overlayIdx, int idx, int type, int newVal, cellStruct *pObject) {
+	autoCellStruct *pNewEntry;
 
+	pNewEntry = new autoCellStruct;
+
+	pNewEntry->next = autoCellHead.next;
+	autoCellHead.next = pNewEntry;
+
+	pNewEntry->ovlIdx = overlayIdx;
+	pNewEntry->objIdx = idx;
+	pNewEntry->type = type;
+	pNewEntry->newValue = newVal;
+	pNewEntry->pCell = pObject;
+}
+
+void freeAutoCell(void) {
+	autoCellStruct *pCurrent = autoCellHead.next;
+
 	while (pCurrent) {
-		drawVar1Struct *next = pCurrent->next;
+		autoCellStruct *next = pCurrent->next;
 
-		if (pCurrent->field_6 == 5) {
-			Op_InitializeStateSub(pCurrent->field_2,
-			    pCurrent->field_4, pCurrent->field_8);
+		if (pCurrent->type == 5) {
+			objInit(pCurrent->ovlIdx, pCurrent->objIdx, pCurrent->newValue);
 		} else {
-			setObjectPosition(pCurrent->field_2, pCurrent->field_4,
-			    pCurrent->field_6, pCurrent->field_8);
+			setObjectPosition(pCurrent->ovlIdx, pCurrent->objIdx, pCurrent->type, pCurrent->newValue);
 		}
 
-		if (pCurrent->field_A->nextAnimDelay < 0) {
+		if (pCurrent->pCell->animWait < 0) {
 			objectParamsQuery params;
 
-			getMultipleObjectParam(pCurrent->field_2,
-			    pCurrent->field_4, &params);
+			getMultipleObjectParam(pCurrent->ovlIdx, pCurrent->objIdx, &params);
 
-			pCurrent->field_A->currentAnimDelay = params.var6 - 1;
+			pCurrent->pCell->animCounter = params.var6 - 1;
 		}
 
-		free(pCurrent);
+		delete pCurrent;
 
 		pCurrent = next;
 	}
@@ -683,22 +695,6 @@
 	}
 }
 
-void mainDraw5(int overlayIdx, int idx, int field_28, cellStruct *pObject,
-	    int newVal) {
-	drawVar1Struct *pNewEntry;
-
-	pNewEntry = (drawVar1Struct *) malloc(sizeof(drawVar1Struct));
-
-	pNewEntry->next = drawVar1.next;
-	drawVar1.next = pNewEntry;
-
-	pNewEntry->field_2 = overlayIdx;
-	pNewEntry->field_4 = idx;
-	pNewEntry->field_6 = field_28;
-	pNewEntry->field_8 = newVal;
-	pNewEntry->field_A = pObject;
-}
-
 #ifdef _DEBUG
 void drawCtp(void) {
 	int i;
@@ -875,7 +871,7 @@
 		    (char *)gfxModuleData.pPage10);
 	}
 
-	drawVar1.next = NULL;
+	autoCellHead.next = NULL;
 
 	currentObjPtr = cellHead.next;
 
@@ -926,8 +922,7 @@
 				objZ2 += objZ1;
 			}
 
-			if ((params.var5 >= 0) && (objZ2 >= 0)
-			    && filesDatabase[objZ2].subData.ptr) {
+			if ((params.var5 >= 0) && (objZ2 >= 0) && filesDatabase[objZ2].subData.ptr) {
 				if (filesDatabase[objZ2].subData.resourceType == 8)	// Poly
 				{
 					mainDrawPolygons(objZ2, currentObjPtr, objX2, params.scale, objY2, (char *)gfxModuleData.pPage10, (char *)filesDatabase[objZ2].subData.ptr);	// poly
@@ -935,89 +930,45 @@
 				{
 				} else if (filesDatabase[objZ2].resType == 1)	//(num plan == 1)
 				{
-				} else if (filesDatabase[objZ2].subData.
-				    resourceType == 4) {
+				} else if (filesDatabase[objZ2].subData.resourceType == 4) {
 					objX1 = filesDatabase[objZ2].width;	// width
 					spriteHeight = filesDatabase[objZ2].height;	// height
 
 					if (filesDatabase[objZ2].subData.ptr) {
-						currentTransparent =
-						    filesDatabase[objZ2].
-						    subData.transparency;
+						currentTransparent = filesDatabase[objZ2].subData.transparency;
 
-						mainDrawSub4(objX1,
-						    spriteHeight,
-						    currentObjPtr,
-						    (char *)
-						    filesDatabase[objZ2].
-						    subData.ptr, objY2, objX2,
-						    (char *)gfxModuleData.
-						    pPage10,
-						    (char *)
-						    filesDatabase[objZ2].
-						    subData.ptr);
+						mainDrawSub4(objX1, spriteHeight, currentObjPtr, (char *)filesDatabase[objZ2].subData.ptr, objY2, objX2,(char *)gfxModuleData.pPage10,(char *)filesDatabase[objZ2].subData.ptr);
 					}
 				}
 			}
 
 			if ((currentObjPtr->animStep != 0) && (param == 0)) {
-				if (currentObjPtr->currentAnimDelay <= 0) {
+				if (currentObjPtr->animCounter <= 0) {
 					int newVal;
 					bool change = true;
 
-					newVal =
-					    getValueFromObjectQuerry(&params,
-					    currentObjPtr->field_28) +
-					    currentObjPtr->animStep;
+					newVal = getValueFromObjectQuerry(&params, currentObjPtr->animChange) + currentObjPtr->animStep;
 
 					if (currentObjPtr->animStep > 0) {
-						if (newVal >
-						    currentObjPtr->field_22) {
-							if (currentObjPtr->
-							    field_30) {
-								newVal =
-								    currentObjPtr->
-								    field_20;
-								currentObjPtr->
-								    field_30--;
+						if (newVal > currentObjPtr->animEnd) {
+							if (currentObjPtr->animLoop) {
+								newVal = currentObjPtr->animStart;
+								currentObjPtr->animLoop--;
 							} else {
 								int16 data2;
-								data2 =
-								    currentObjPtr->
-								    field_20;
+								data2 = currentObjPtr->animStart;
 
 								change = false;
-								currentObjPtr->
-								    animStep =
-								    0;
+								currentObjPtr->animStep = 0;
 
-								if (currentObjPtr->field_2A)	// should we resume the script ?
+								if (currentObjPtr->animType)	// should we resume the script ?
 								{
-									if (currentObjPtr->field_1A == 20) {
-										changeScriptParamInList
-										    (currentObjPtr->
-										    field_18,
-										    currentObjPtr->
-										    field_16,
-										    &scriptHandle2,
-										    0,
-										    -1);
-									} else
-									    if
-									    (currentObjPtr->
-									    field_1A
-									    ==
-									    30)
-									{
-										changeScriptParamInList
-										    (currentObjPtr->
-										    field_18,
-										    currentObjPtr->
-										    field_16,
-										    &scriptHandle1,
-										    0,
-										    -1);
+									if (currentObjPtr->parentType == 20) {
+										changeScriptParamInList(currentObjPtr->parentOverlay, currentObjPtr->parent, &procHead, 0, -1);
 									}
+									else if(currentObjPtr->parentType == 30) {
+										changeScriptParamInList(currentObjPtr->parentOverlay, currentObjPtr->parent, &relHead,  0, -1);
+									}
 								}
 								newVal = data2;
 							}
@@ -1029,50 +980,25 @@
 						 * } */
 					}
 
-					if (currentObjPtr->nextAnimDelay >= 0) {
-						currentObjPtr->
-						    currentAnimDelay =
-						    currentObjPtr->
-						    nextAnimDelay;
+					if (currentObjPtr->animWait >= 0) {
+						currentObjPtr->animCounter = currentObjPtr->animWait;
 					}
 
-					if ((currentObjPtr->field_2C >= 0)
-					    && (currentObjPtr->field_2C ==
-						newVal)
-					    && (currentObjPtr->field_2A !=
-						0)) {
-						if (currentObjPtr->field_1A ==
-						    20) {
-							changeScriptParamInList
-							    (currentObjPtr->
-							    field_18,
-							    currentObjPtr->
-							    field_16,
-							    &scriptHandle2, 0,
-							    -1);
-						} else if (currentObjPtr->
-						    field_1A == 30) {
-							changeScriptParamInList
-							    (currentObjPtr->
-							    field_18,
-							    currentObjPtr->
-							    field_16,
-							    &scriptHandle1, 0,
-							    -1);
+					if ((currentObjPtr->animSignal >= 0) && (currentObjPtr->animSignal == newVal) && (currentObjPtr->animType != 0)) {
+						if (currentObjPtr->parentType == 20) {
+							changeScriptParamInList(currentObjPtr->parentOverlay, currentObjPtr->parent, &procHead, 0, -1);
+						} else if (currentObjPtr->parentType == 30) {
+							changeScriptParamInList(currentObjPtr->parentOverlay, currentObjPtr->parent, &relHead, 0, -1);
 						}
 
-						currentObjPtr->field_2A = 0;
+						currentObjPtr->animType = 0;
 					}
 
 					if (change) {
-						mainDraw5(currentObjPtr->
-						    overlay,
-						    currentObjPtr->idx,
-						    currentObjPtr->field_28,
-						    currentObjPtr, newVal);
+						addAutoCell(currentObjPtr->overlay, currentObjPtr->idx, currentObjPtr->animChange, newVal, currentObjPtr);
 					}
 				} else {
-					currentObjPtr->currentAnimDelay--;
+					currentObjPtr->animCounter--;
 				}
 			}
 		}
@@ -1082,7 +1008,7 @@
 
 	//----------------------------------------------------------------------------------------------------------------//
 
-	mainDraw6();
+	freeAutoCell();
 	var20 = 0;
 
 	//-------------------------------------------------- DRAW OBJECTS TYPE 5 (MSG)-----------------------------------------//
@@ -1091,10 +1017,7 @@
 
 	while (currentObjPtr) {
 		if (currentObjPtr->type == 5 && currentObjPtr->freeze == 0) {
-			mainSprite(currentObjPtr->field_A,
-			    currentObjPtr->field_C, currentObjPtr->gfxPtr,
-			    gfxModuleData.pPage10, currentObjPtr->color,
-			    currentObjPtr->spriteIdx);
+			mainSprite(currentObjPtr->x, currentObjPtr->field_C, currentObjPtr->gfxPtr, gfxModuleData.pPage10, currentObjPtr->color, currentObjPtr->spriteIdx);
 			var20 = 1;
 		}
 		currentObjPtr = currentObjPtr->next;

Modified: scummvm/trunk/engines/cruise/object.cpp
===================================================================
--- scummvm/trunk/engines/cruise/object.cpp	2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/object.cpp	2007-04-28 22:31:55 UTC (rev 26666)
@@ -73,14 +73,14 @@
 
 	ovlData = overlayTable[overlayIdx].ovlData;
 
-	switch (ptr->var1) {
+	switch (ptr->type) {
 	case 0:
 		{
 			ptr2 = &ovlData->objData2SourceTable[ptr->var5];
 
-			var_14 = globalVars[*(int16 *) (&overlayTable[overlayIdx].field_14 + ptr->var6)];
+			var_14 = globalVars[*(int16 *) (&overlayTable[overlayIdx].state + ptr->stateTableIdx)];
 
-			var_A = ptr2->var5;
+			var_A = ptr2->state;
 
 			break;
 		}
@@ -88,25 +88,25 @@
 		{
 			ptr2 = &ovlData->objData2WorkTable[ptr->var4];
 
-			var_A = var_14 = ptr2->var5;
+			var_A = var_14 = ptr2->state;
 			size = var_A + ptr->var5;
 
 			if (ptr->var5 + var_14 <= ovlData->size8) {
-				var_A = ovlData->objData2SourceTable[ptr->var5 + var_14].var5;
+				var_A = ovlData->objData2SourceTable[ptr->var5 + var_14].state;
 			}
 			break;
 		}
 	default:
 		{
-			printf("unsupported case %d in getMultipleObjectParam\n", ptr->var1);
+			printf("unsupported case %d in getMultipleObjectParam\n", ptr->type);
 			exit(1);
 		}
 	}
 
 	returnParam->X = ptr2->X;
 	returnParam->Y = ptr2->Y;
-	returnParam->baseFileIdx = ptr2->baseFileIdx;
-	returnParam->fileIdx = ptr2->var3;
+	returnParam->baseFileIdx = ptr2->Z;
+	returnParam->fileIdx = ptr2->frame;
 	returnParam->scale = ptr2->scale;
 	returnParam->var5 = var_14;
 	returnParam->var6 = var_A;
@@ -115,11 +115,11 @@
 	return 0;
 }
 
-void setObjectPosition(int16 param1, int16 objIdx, int16 param3, int16 param4) {
+void setObjectPosition(int16 ovlIdx, int16 objIdx, int16 param3, int16 param4) {
 	objDataStruct *ptr;
 	objectParams *ptr2;
 
-	ptr = getObjectDataFromOverlay(param1, objIdx);
+	ptr = getObjectDataFromOverlay(ovlIdx, objIdx);
 
 	if (!ptr) {
 		return;
@@ -127,10 +127,10 @@
 	}
 	//overlayTable[param1].ovlData
 
-	switch (ptr->var1) {
+	switch (ptr->type) {
 	case 1:
 		{
-			ptr2 =  &overlayTable[param1].ovlData->objData2WorkTable[ptr->var4];
+			ptr2 =  &overlayTable[ovlIdx].ovlData->objData2WorkTable[ptr->var4];
 
 			switch (param3) {
 			case 0:	// x
@@ -143,14 +143,15 @@
 					ptr2->Y = param4;
 					break;
 				}
-			case 2:	// base file
+			case 2:	// z
 				{
-					ptr2->baseFileIdx = param4;
+					ptr2->Z = param4;
+					sortCells(ovlIdx, objIdx, &cellHead);
 					break;
 				}
 			case 3:
 				{
-					ptr2->var3 = param4;
+					ptr2->frame = param4;
 					break;
 				}
 			case 4:	// scale
@@ -160,7 +161,7 @@
 				}
 			case 5:	// box colision
 				{
-					ptr2->var5 = param4;
+					ptr2->state = param4;
 					break;
 				}
 			default:
@@ -178,94 +179,7 @@
 	}
 }
 
-void Op_InitializeStateSub1(int16 param1, int16 param2, cellStruct *objPtr) {
-	int16 var;
-	cellStruct *var8_;
-	cellStruct *var40;
-	cellStruct *var3E;
-	cellStruct *currentObjPtrPrevious;
-	cellStruct *currentObjPtr2;
-	cellStruct *match;
-
-	getSingleObjectParam(param1, param2, 2, &var);
-
-	currentObjPtrPrevious = objPtr;
-	currentObjPtr2 = objPtr->next;
-
-	match = NULL;
-	var40 = NULL;
-	var3E = NULL;
-	var8_ = objPtr;
-
-	while (currentObjPtr2) {
-		if ((currentObjPtr2->overlay == param1) && (currentObjPtr2->idx == param2)) {// found
-			currentObjPtrPrevious->next = currentObjPtr2->next;
-
-			if (currentObjPtr2->next) {
-				currentObjPtr2->next->prev =
-				    currentObjPtr2->prev;
-			} else {
-				objPtr->prev = currentObjPtr2->prev;
-			}
-
-			if (var40) {
-				var40->prev = currentObjPtr2;
-			} else {
-				var3E = currentObjPtr2;
-			}
-
-			currentObjPtr2->prev = NULL;
-
-			currentObjPtr2->next = var40;
-
-			var40 = currentObjPtr2;
-
-			if (match == NULL) {
-				match = currentObjPtr2;
-			}
-		} else {
-			if (currentObjPtr2->type == 5) {
-				var2 = 32000;
-			} else {
-				int16 varC;
-
-				getSingleObjectParam(currentObjPtr2->overlay,
-				    currentObjPtr2->idx, 2, &varC);
-
-				var2 = varC;
-			}
-
-			if (var > var2) {
-				var8_ = currentObjPtr2;
-			}
-
-			currentObjPtrPrevious = currentObjPtrPrevious->next;
-		}
-
-		currentObjPtr2 = currentObjPtr2->next;
-	}
-
-	if (match) {
-		cellStruct *temp;
-
-		temp = var8_->next;
-
-		var8_->next = var40;
-		match->next = temp;
-
-		if (objPtr != var8_) {
-			var40->prev = var8_;
-		}
-
-		if (!temp) {
-			temp = match;
-		}
-
-		temp->prev = match;
-	}
-}
-
-int16 Op_InitializeStateSub(int ovlIdx, int objIdx, int param2) {
+int16 objInit(int ovlIdx, int objIdx, int newState) {
 	objDataStruct *ptr;
 //  uint16 param;
 	ovlDataStruct *ovlData;
@@ -277,39 +191,38 @@
 
 	ovlData = overlayTable[ovlIdx].ovlData;
 
-	switch (ptr->var1) {
-	case 0:
+	switch (ptr->type) {
+	case THEME:
+	case MULTIPLE:
 		{
-			globalVars[overlayTable[ovlIdx].field_14 + ptr->var6] =
-			    param2;
-			Op_InitializeStateSub1(ovlIdx, param2, &cellHead);
+			globalVars[overlayTable[ovlIdx].state + ptr->stateTableIdx] = newState;
+			sortCells(ovlIdx, objIdx, &cellHead);
 			break;
 		}
-	case 1:
+	case UNIQUE:
+		break;
+	case VARIABLE:
 		{
 			objectParams *destEntry;
 			objectParams *sourceEntry;
 
-			if (ptr->var5 + param2 > ovlData->size8) {
+			if (ptr->var5 + newState > ovlData->size8) {
 				return 0;
 			}
 
 			destEntry = &ovlData->objData2WorkTable[ptr->var4];
-			sourceEntry =
-			    &ovlData->objData2SourceTable[ptr->var5 + param2];
+			sourceEntry = &ovlData->objData2SourceTable[ptr->var5 + newState];
 
 			memcpy(destEntry, sourceEntry, sizeof(objectParams));
 
-			destEntry->var5 = param2;
+			destEntry->state = newState;
 
-			Op_InitializeStateSub1(ovlIdx, param2, &cellHead);
+			sortCells(ovlIdx, objIdx, &cellHead);
 			break;
 		}
 	default:
 		{
-			printf
-			    ("Unsupported param = %d in Op_InitializeStateSub\n",
-			    ptr->var1);
+			printf("Unsupported param = %d in objInit\n", ptr->type);
 			// exit(1);
 		}
 	}
@@ -317,8 +230,7 @@
 	return 0;
 }
 
-int16 getSingleObjectParam(int16 overlayIdx, int16 param2, int16 param3,
-	    int16 *returnParam) {
+int16 getSingleObjectParam(int16 overlayIdx, int16 param2, int16 param3, int16 *returnParam) {
 	int var_A = 0;
 	//char* ptr3 = NULL;
 	objDataStruct *ptr;
@@ -332,11 +244,11 @@
 
 	ovlData = overlayTable[overlayIdx].ovlData;
 
-	switch (ptr->var1) {
+	switch (ptr->type) {
 	case 0:
 	case 3:
 		{
-			var_A = globalVars[ptr->var6];
+			var_A = globalVars[ptr->stateTableIdx];
 
 			ptr2 = &ovlData->objData2SourceTable[ptr->var5];
 			break;
@@ -345,13 +257,12 @@
 		{
 			ptr2 = &ovlData->objData2WorkTable[ptr->var4];
 
-			var_A = ptr2->var5;
+			var_A = ptr2->state;
 			break;
 		}
 	default:
 		{
-			printf("Unsupported case %d in getSingleObjectParam\n",
-			    ptr->var1);
+			printf("Unsupported case %d in getSingleObjectParam\n",ptr->type);
 			exit(1);
 		}
 	}
@@ -369,12 +280,12 @@
 		}
 	case 2:
 		{
-			*returnParam = ptr2->baseFileIdx;
+			*returnParam = ptr2->Z;
 			break;
 		}
 	case 3:
 		{
-			*returnParam = ptr2->var3;
+			*returnParam = ptr2->frame;
 			break;
 		}
 	case 4:
@@ -389,9 +300,7 @@
 		}
 	default:
 		{
-			printf
-			    ("Unsupported case %d in getSingleObjectParam case 1\n",
-			    param3);
+			printf("Unsupported case %d in getSingleObjectParam case 1\n", param3);
 			exit(1);
 		}
 	}

Modified: scummvm/trunk/engines/cruise/object.h
===================================================================
--- scummvm/trunk/engines/cruise/object.h	2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/object.h	2007-04-28 22:31:55 UTC (rev 26666)
@@ -53,10 +53,8 @@
 typedef struct objectParamsQuery objectParamsQuery;
 
 objDataStruct *getObjectDataFromOverlay(int ovlIdx, int objIdx);
-int16 getSingleObjectParam(int16 overlayIdx, int16 param2, int16 param3,
-    int16 * returnParam);
-int16 getMultipleObjectParam(int16 overlayIdx, int16 objectIdx,
-    objectParamsQuery * returnParam);
+int16 getSingleObjectParam(int16 overlayIdx, int16 param2, int16 param3, int16 * returnParam);
+int16 getMultipleObjectParam(int16 overlayIdx, int16 objectIdx, objectParamsQuery * returnParam);
 
 } // End of namespace Cruise
 

Modified: scummvm/trunk/engines/cruise/overlay.cpp
===================================================================
--- scummvm/trunk/engines/cruise/overlay.cpp	2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/overlay.cpp	2007-04-28 22:31:55 UTC (rev 26666)
@@ -420,9 +420,9 @@
 			scriptPtr += 2;
 			flipShort(&ovlData->objDataTable[i].var0);
 
-			ovlData->objDataTable[i].var1 = *(int16 *) scriptPtr;
+			ovlData->objDataTable[i].type = *(int16 *) scriptPtr;
 			scriptPtr += 2;
-			flipShort(&ovlData->objDataTable[i].var1);
+			flipShort(&ovlData->objDataTable[i].type);
 
 			ovlData->objDataTable[i].var2 = *(int16 *) scriptPtr;
 			scriptPtr += 2;
@@ -440,16 +440,16 @@
 			scriptPtr += 2;
 			flipShort(&ovlData->objDataTable[i].var5);
 
-			ovlData->objDataTable[i].var6 = *(int16 *) scriptPtr;
+			ovlData->objDataTable[i].stateTableIdx = *(int16 *) scriptPtr;
 			scriptPtr += 2;
-			flipShort(&ovlData->objDataTable[i].var6);
+			flipShort(&ovlData->objDataTable[i].stateTableIdx);
 		}
 
 		if (scriptNotLoadedBefore) {
 			//int var1;
 			//int var2;
 
-			overlayTable[scriptIdx].field_14 = (char)setup1;
+			overlayTable[scriptIdx].state = (char)setup1;
 
 			var1 = loadScriptSub1(scriptIdx, 3);
 			var2 = loadScriptSub1(scriptIdx, 0);
@@ -733,11 +733,11 @@
     overlayTable[overlayIdx].var16 = NULL;
   } */
 
-	removeScript(overlayIdx, -1, &scriptHandle2);
-	removeScript(overlayIdx, -1, &scriptHandle2);
+	removeScript(overlayIdx, -1, &procHead);
+	removeScript(overlayIdx, -1, &procHead);
 
-	removeScript(overlayIdx, -1, &scriptHandle1);
-	removeScript(overlayIdx, -1, &scriptHandle1);
+	removeScript(overlayIdx, -1, &relHead);
+	removeScript(overlayIdx, -1, &relHead);
 
 	printf("releaseOverlay: finish !\n");
 

Modified: scummvm/trunk/engines/cruise/overlay.h
===================================================================
--- scummvm/trunk/engines/cruise/overlay.h	2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/overlay.h	2007-04-28 22:31:55 UTC (rev 26666)
@@ -106,14 +106,19 @@
 
 typedef struct importDataStruct importDataStruct;
 
+#define MULTIPLE 0
+#define VARIABLE 1
+#define UNIQUE   2
+#define THEME    3
+
 struct objDataStruct {
 	int16 var0;
-	int16 var1;
+	int16 type;
 	int16 var2;
 	int16 var3;
 	int16 var4;
 	int16 var5;
-	int16 var6;
+	int16 stateTableIdx;
 };
 
 typedef struct objDataStruct objDataStruct;
@@ -121,10 +126,10 @@
 struct objectParams {
 	int16 X;
 	int16 Y;
-	int16 baseFileIdx;
-	int16 var3;
+	int16 Z;
+	int16 frame;
 	int16 scale;
-	int16 var5;
+	int16 state;
 };
 
 typedef struct objectParams objectParams;
@@ -169,7 +174,7 @@
 	char overlayName[14];
 	ovlDataStruct *ovlData;
 	short int alreadyLoaded;
-	char field_14;
+	char state;
 	char field_15;
 	char field_16;
 	char field_17;

Modified: scummvm/trunk/engines/cruise/saveload.cpp
===================================================================
--- scummvm/trunk/engines/cruise/saveload.cpp	2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/saveload.cpp	2007-04-28 22:31:55 UTC (rev 26666)
@@ -264,8 +264,8 @@
 	fread(mediumVar, 0x880, 1, fileHandle);
 
 	loadSavegameDataSub1(fileHandle);
-	loadScriptsFromSave(fileHandle, &scriptHandle2);
-	loadScriptsFromSave(fileHandle, &scriptHandle1);
+	loadScriptsFromSave(fileHandle, &procHead);
+	loadScriptsFromSave(fileHandle, &relHead);
 
 	loadSavegameDataSub2(fileHandle);
 	loadBackgroundIncrustFromSave(fileHandle);

Modified: scummvm/trunk/engines/cruise/script.cpp
===================================================================
--- scummvm/trunk/engines/cruise/script.cpp	2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/script.cpp	2007-04-28 22:31:55 UTC (rev 26666)
@@ -26,8 +26,8 @@
 
 namespace Cruise {
 
-scriptInstanceStruct scriptHandle1;
-scriptInstanceStruct scriptHandle2;
+scriptInstanceStruct relHead;
+scriptInstanceStruct procHead;
 
 scriptInstanceStruct *currentScriptPtr;
 

Modified: scummvm/trunk/engines/cruise/script.h
===================================================================
--- scummvm/trunk/engines/cruise/script.h	2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/script.h	2007-04-28 22:31:55 UTC (rev 26666)
@@ -28,10 +28,10 @@
 namespace Cruise {
 
 enum scriptTypeEnum {
-	scriptType_Minus20 = -20,
+	scriptType_MinusPROC = -20,
 	scriptType_Minus30 = -30,
-	scriptType_20 = 20,
-	scriptType_30 = 30
+	scriptType_PROC = 20,
+	scriptType_REL = 30
 };
 
 typedef enum scriptTypeEnum scriptTypeEnum;
@@ -55,8 +55,8 @@
 
 typedef struct scriptInstanceStruct scriptInstanceStruct;
 
-extern scriptInstanceStruct scriptHandle1;
-extern scriptInstanceStruct scriptHandle2;
+extern scriptInstanceStruct relHead;
+extern scriptInstanceStruct procHead;
 extern scriptInstanceStruct *currentScriptPtr;
 
 void setupFuncArray(void);

Modified: scummvm/trunk/engines/cruise/various.cpp
===================================================================
--- scummvm/trunk/engines/cruise/various.cpp	2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/various.cpp	2007-04-28 22:31:55 UTC (rev 26666)
@@ -39,68 +39,6 @@
 	return temp;
 }
 
-void freeObject(cellStruct *objPtr) {
-	if (objPtr) {
-		/*  if(objPtr->next)
-		 * free(objPtr->next); */
-
-		//free(objPtr);
-	}
-}
-
-void removeObjectFromList(int ovlNumber, int objectIdx, cellStruct *objPtr,
-    int backgroundPlane, int arg) {
-	cellStruct *currentObj = objPtr->next;
-	cellStruct *previous;
-
-	while (currentObj) {
-		cellStruct *si;
-
-		si = currentObj;
-
-		if ((si->overlay == ovlNumber || ovlNumber == -1) &&
-		    (si->idx == objectIdx || objectIdx == -1) &&
-		    (si->type == arg || arg == -1) &&
-		    (si->backgroundPlane == backgroundPlane
-			|| backgroundPlane == -1)) {
-			si->type = -1;
-		}
-
-		currentObj = si->next;
-	}
-
-	previous = objPtr;
-	currentObj = objPtr->next;
-
-	while (currentObj) {
-		cellStruct *si;
-
-		si = currentObj;
-
-		if (si->type == -1) {
-			cellStruct *dx;
-			previous->next = si->next;
-
-			dx = si->next;
-
-			if (!si->next) {
-				dx = objPtr;
-			}
-
-			dx->prev = si->prev;
-
-			freeObject(si);
-
-			free(si);
-
-			currentObj = dx;
-		} else {
-			currentObj = si->next;
-			previous = si;
-		}
-	}
-}
-
 char *getText(int textIndex, int overlayIndex) {
 	if (!overlayTable[overlayIndex].ovlData) {
 		return NULL;
@@ -114,57 +52,4 @@
 	    string;
 }
 
-void createTextObject(int overlayIdx, int oldVar8, cellStruct *pObject,
-    int scriptNumber, int scriptOverlayNumber, int backgroundPlane,
-    int16 color, int oldVar2, int oldVar4, int oldVar6) {
-
-	char *ax;
-	cellStruct *savePObject = pObject;
-	cellStruct *cx;
-
-	cellStruct *pNewElement;
-	cellStruct *si = pObject->next;
-	cellStruct *var_2;
-
-	while (si) {
-		pObject = si;
-		si = si->next;
-	}
-
-	var_2 = si;
-
-	pNewElement = (cellStruct *) malloc(sizeof(cellStruct));
-
-	pNewElement->next = pObject->next;
-	pObject->next = pNewElement;
-
-	pNewElement->idx = oldVar8;
-	pNewElement->type = 5;
-	pNewElement->backgroundPlane = backgroundPlane;
-	pNewElement->overlay = overlayIdx;
-	pNewElement->field_A = oldVar6;
-	pNewElement->field_C = oldVar4;
-	pNewElement->spriteIdx = oldVar2;
-	pNewElement->color = color;
-	pNewElement->freeze = 0;
-	pNewElement->field_16 = scriptNumber;
-	pNewElement->field_18 = scriptOverlayNumber;
-	pNewElement->gfxPtr = NULL;
-
-	if (var_2) {
-		cx = var_2;
-	} else {
-		cx = savePObject;
-	}
-
-	pNewElement->prev = cx->prev;
-	cx->prev = pNewElement;
-
-	ax = getText(oldVar8, overlayIdx);
-
-	if (ax) {
-		pNewElement->gfxPtr = renderText(oldVar2, (uint8 *) ax);
-	}
-}
-
 } // End of namespace Cruise

Modified: scummvm/trunk/engines/cruise/various.h
===================================================================
--- scummvm/trunk/engines/cruise/various.h	2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/various.h	2007-04-28 22:31:55 UTC (rev 26666)
@@ -35,13 +35,8 @@
 
 int16 readB16(void *ptr);
 
-void createTextObject(int overlayIdx, int oldVar8, cellStruct * pObject,
-    int scriptNumber, int scriptOverlayNumber, int backgroundPlane,
-    int16 color, int oldVar2, int oldVar4, int oldVar6);
-void removeObjectFromList(int ovlNumber, int objectIdx, cellStruct * objPtr,
-    int backgroundPlane, int arg);
-int16 Op_InitializeStateSub(int ovlIdx, int param1, int param2);
-
+int16 objInit(int ovlIdx, int param1, int param2);
+char *getText(int textIndex, int overlayIndex);
 } // End of namespace Cruise
 
 #endif


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list