Various rename and cleanup

This commit is contained in:
yaz0r 2025-07-25 21:50:43 -07:00
parent 24c7d8fa23
commit 228f0856c4
17 changed files with 575 additions and 560 deletions

View File

@ -17,23 +17,23 @@ int sortCompareFunction(const void* param1, const void* param2)
ASSERT(*(int*)param1 >=0 && *(int*)param1 < NUM_MAX_OBJECT); ASSERT(*(int*)param1 >=0 && *(int*)param1 < NUM_MAX_OBJECT);
ASSERT(*(int*)param2 >=0 && *(int*)param2 < NUM_MAX_OBJECT); ASSERT(*(int*)param2 >=0 && *(int*)param2 < NUM_MAX_OBJECT);
actor1Ptr = &objectTable[*(int*)param1]; actor1Ptr = &ListObjets[*(int*)param1];
actor2Ptr = &objectTable[*(int*)param2]; actor2Ptr = &ListObjets[*(int*)param2];
actor1ZvPtr = &actor1Ptr->zv; actor1ZvPtr = &actor1Ptr->zv;
actor2ZvPtr = &actor2Ptr->zv; actor2ZvPtr = &actor2Ptr->zv;
if(actor1Ptr->room != currentRoom) if(actor1Ptr->room != currentRoom)
{ {
copyZv(actor1ZvPtr, &localZv1); CopyZV(actor1ZvPtr, &localZv1);
getZvRelativePosition(&localZv1, actor1Ptr->room, currentRoom); AdjustZV(&localZv1, actor1Ptr->room, currentRoom);
actor1ZvPtr = &localZv1; actor1ZvPtr = &localZv1;
} }
if(actor2Ptr->room != currentRoom) if(actor2Ptr->room != currentRoom)
{ {
copyZv(actor2ZvPtr, &localZv2); CopyZV(actor2ZvPtr, &localZv2);
getZvRelativePosition(&localZv2, actor2Ptr->room, currentRoom); AdjustZV(&localZv2, actor2Ptr->room, currentRoom);
actor2ZvPtr = &localZv2; actor2ZvPtr = &localZv2;
} }

View File

@ -166,11 +166,11 @@ int manageFall(int actorIdx, ZVStruct* zvPtr)
{ {
int fallResult = 0; int fallResult = 0;
int i; int i;
int room = objectTable[actorIdx].room; int room = ListObjets[actorIdx].room;
for(i=0;i<NUM_MAX_OBJECT;i++) for(i=0;i<NUM_MAX_OBJECT;i++)
{ {
tObject* currentTestedActorPtr = &objectTable[i]; tObject* currentTestedActorPtr = &ListObjets[i];
if(currentTestedActorPtr->indexInWorld != -1 && i != actorIdx) if(currentTestedActorPtr->indexInWorld != -1 && i != actorIdx)
{ {
@ -179,20 +179,20 @@ int manageFall(int actorIdx, ZVStruct* zvPtr)
if(currentTestedActorPtr->room != room) if(currentTestedActorPtr->room != room)
{ {
ZVStruct localZv; ZVStruct localZv;
copyZv(zvPtr, &localZv); CopyZV(zvPtr, &localZv);
getZvRelativePosition(&localZv, room, currentTestedActorPtr->room); AdjustZV(&localZv, room, currentTestedActorPtr->room);
if(checkZvCollision(&localZv, testedZv)) if(CubeIntersect(&localZv, testedZv))
{ {
objectTable[i].COL_BY = actorIdx; ListObjets[i].COL_BY = actorIdx;
fallResult++; fallResult++;
} }
} }
else else
{ {
if(checkZvCollision(zvPtr, testedZv)) if(CubeIntersect(zvPtr, testedZv))
{ {
objectTable[i].COL_BY = actorIdx; ListObjets[i].COL_BY = actorIdx;
fallResult++; fallResult++;
} }
} }
@ -285,11 +285,11 @@ void GereAnim(void)
currentProcessedActorPtr->END_FRAME = 0; currentProcessedActorPtr->END_FRAME = 0;
if(currentProcessedActorPtr->speed == 0) if(currentProcessedActorPtr->speed == 0)
{ {
int numObjectCollisions = checkObjectCollisions(currentProcessedActorIdx, &currentProcessedActorPtr->zv); int numObjectCollisions = CheckObjectCol(currentProcessedActorIdx, &currentProcessedActorPtr->zv);
for(int i = 0; i<numObjectCollisions; i++) for(int i = 0; i<numObjectCollisions; i++)
{ {
objectTable[currentProcessedActorPtr->COL[i]].COL_BY = currentProcessedActorIdx; // collision with current actor ListObjets[currentProcessedActorPtr->COL[i]].COL_BY = currentProcessedActorIdx; // collision with current actor
} }
oldStepY = 0; oldStepY = 0;
@ -356,7 +356,7 @@ void GereAnim(void)
if(stepX || stepY || stepZ) // start of movement management if(stepX || stepY || stepZ) // start of movement management
{ {
zvPtr = &currentProcessedActorPtr->zv; zvPtr = &currentProcessedActorPtr->zv;
copyZv(&currentProcessedActorPtr->zv,&zvLocal); CopyZV(&currentProcessedActorPtr->zv,&zvLocal);
zvLocal.ZVX1 += stepX; zvLocal.ZVX1 += stepX;
zvLocal.ZVX2 += stepX; zvLocal.ZVX2 += stepX;
@ -367,6 +367,7 @@ void GereAnim(void)
zvLocal.ZVZ1 += stepZ; zvLocal.ZVZ1 += stepZ;
zvLocal.ZVZ2 += stepZ; zvLocal.ZVZ2 += stepZ;
// check for wall collisions
if(currentProcessedActorPtr->dynFlags & 1) // hard collision enabled for actor ? if(currentProcessedActorPtr->dynFlags & 1) // hard collision enabled for actor ?
{ {
int numCol = AsmCheckListCol(&zvLocal, &roomDataTable[currentProcessedActorPtr->room]); int numCol = AsmCheckListCol(&zvLocal, &roomDataTable[currentProcessedActorPtr->room]);
@ -380,38 +381,42 @@ void GereAnim(void)
currentProcessedActorPtr->HARD_COL = (short)pHardCol->parameter; currentProcessedActorPtr->HARD_COL = (short)pHardCol->parameter;
} }
// climbable wall
if(pHardCol->type == 3) if(pHardCol->type == 3)
{ {
currentProcessedActorPtr->HARD_COL = 255; currentProcessedActorPtr->HARD_COL = 255;
} }
if(g_gameId == AITD1 || (g_gameId>=JACK && (pHardCol->type != 10 || currentProcessedActorIdx != currentCameraTargetActor))) if (g_gameId >= JACK) {
// monster collision for floor changes
if ((pHardCol->type == 10) && (currentProcessedActorIdx == currentCameraTargetActor))
continue;
}
if(stepX || stepZ) // move on the X or Z axis ? update to avoid entering the hard col
{ {
if(stepX || stepZ) // move on the X or Z axis ? update to avoid entering the hard col //ZVStruct tempZv;
{
//ZVStruct tempZv;
hardColStepX = stepX; hardColStepX = stepX;
hardColStepZ = stepZ; hardColStepZ = stepZ;
handleCollision(zvPtr, &zvLocal, &pHardCol->zv); GereCollision(zvPtr, &zvLocal, &pHardCol->zv);
currentProcessedActorPtr->animNegX += hardColStepX - stepX; currentProcessedActorPtr->animNegX += hardColStepX - stepX;
currentProcessedActorPtr->animNegZ += hardColStepZ - stepZ; currentProcessedActorPtr->animNegZ += hardColStepZ - stepZ;
zvLocal.ZVX1 += hardColStepX - stepX; zvLocal.ZVX1 += hardColStepX - stepX;
zvLocal.ZVX2 += hardColStepX - stepX; zvLocal.ZVX2 += hardColStepX - stepX;
zvLocal.ZVZ1 += hardColStepZ - stepZ; zvLocal.ZVZ1 += hardColStepZ - stepZ;
zvLocal.ZVZ2 += hardColStepZ - stepZ; zvLocal.ZVZ2 += hardColStepZ - stepZ;
stepX = hardColStepX; stepX = hardColStepX;
stepZ = hardColStepZ; stepZ = hardColStepZ;
} }
if(stepY) if(stepY)
{ {
//assert(0); //not implemented //assert(0); //not implemented
}
} }
} }
} }
@ -427,13 +432,14 @@ void GereAnim(void)
} }
} }
int numCol = checkObjectCollisions(currentProcessedActorIdx,&zvLocal); // get the number of actor/actor collision // check for object collisions
// TODO: AITD2 checks flag collision here
int numCol = CheckObjectCol(currentProcessedActorIdx,&zvLocal); // get the number of actor/actor collision
for(int j=0;j<numCol;j++) // process the actor/actor collision for(int j=0;j<numCol;j++) // process the actor/actor collision
{ {
int collisionIndex = currentProcessedActorPtr->COL[j]; int collisionIndex = currentProcessedActorPtr->COL[j];
tObject* actorTouchedPtr = &objectTable[collisionIndex]; tObject* actorTouchedPtr = &ListObjets[collisionIndex];
actorTouchedPtr->COL_BY = currentProcessedActorIdx; actorTouchedPtr->COL_BY = currentProcessedActorIdx;
@ -443,10 +449,10 @@ void GereAnim(void)
{ {
if(currentProcessedActorPtr->trackMode == 1 /*&& ((gameId == AITD1 && defines.field_1E == 0) || (gameId >= JACK && defines.field_6 == 0))*/) // TODO: check if character isn't dead... if(currentProcessedActorPtr->trackMode == 1 /*&& ((gameId == AITD1 && defines.field_1E == 0) || (gameId >= JACK && defines.field_6 == 0))*/) // TODO: check if character isn't dead...
{ {
foundObject(actorTouchedPtr->indexInWorld, 0); FoundObjet(actorTouchedPtr->indexInWorld, 0);
} }
continue;
} }
else
{ {
if(actorTouchedPtr->objectType & AF_MOVABLE) // can be pushed ? if(actorTouchedPtr->objectType & AF_MOVABLE) // can be pushed ?
{ {
@ -454,7 +460,7 @@ void GereAnim(void)
bool isPushPossible = true; bool isPushPossible = true;
copyZv(touchedZv, &localZv2); CopyZV(touchedZv, &localZv2);
localZv2.ZVX1 += stepX; localZv2.ZVX1 += stepX;
localZv2.ZVX2 += stepX; localZv2.ZVX2 += stepX;
@ -462,17 +468,16 @@ void GereAnim(void)
localZv2.ZVZ1 += stepZ; localZv2.ZVZ1 += stepZ;
localZv2.ZVZ2 += stepZ; localZv2.ZVZ2 += stepZ;
if(!AsmCheckListCol(&localZv2, &roomDataTable[currentProcessedActorPtr->room])) // check pushed object against walls
if(AsmCheckListCol(&localZv2, &roomDataTable[currentProcessedActorPtr->room]))
{ {
if(checkObjectCollisions(collisionIndex, &localZv2)) isPushPossible = false;
{
isPushPossible = false;
}
}
else
{
isPushPossible = false;
} }
else if (CheckObjectCol(collisionIndex, &localZv2))
{
// if no wall preventing to move object, check is there is a another object in the way
isPushPossible = false;
}
if(!isPushPossible) if(!isPushPossible)
{ {
@ -482,14 +487,14 @@ void GereAnim(void)
{ {
ZVStruct localZv3; ZVStruct localZv3;
copyZv(touchedZv, &localZv3); CopyZV(touchedZv, &localZv3);
getZvRelativePosition(&localZv3, actorTouchedPtr->room, currentProcessedActorPtr->room); AdjustZV(&localZv3, actorTouchedPtr->room, currentProcessedActorPtr->room);
hardColStepX = stepX; hardColStepX = stepX;
hardColStepZ = stepZ; hardColStepZ = stepZ;
handleCollision(zvPtr, &zvLocal, &localZv3); GereCollision(zvPtr, &zvLocal, &localZv3);
stepX = hardColStepX; stepX = hardColStepX;
stepZ = hardColStepZ; stepZ = hardColStepZ;
@ -499,7 +504,7 @@ void GereAnim(void)
hardColStepX = stepX; hardColStepX = stepX;
hardColStepZ = stepZ; hardColStepZ = stepZ;
handleCollision(zvPtr, &zvLocal, touchedZv); // manage as hard collision GereCollision(zvPtr, &zvLocal, touchedZv); // manage as hard collision
stepX = hardColStepX; stepX = hardColStepX;
stepZ = hardColStepZ; stepZ = hardColStepZ;
@ -521,7 +526,7 @@ void GereAnim(void)
actorTouchedPtr->roomX += stepX; actorTouchedPtr->roomX += stepX;
actorTouchedPtr->roomZ += stepZ; actorTouchedPtr->roomZ += stepZ;
copyZv(&localZv2,touchedZv); CopyZV(&localZv2,touchedZv);
} }
} }
else else
@ -536,7 +541,7 @@ void GereAnim(void)
hardColStepX = stepX; hardColStepX = stepX;
hardColStepZ = stepZ; hardColStepZ = stepZ;
handleCollision(zvPtr, &zvLocal, touchedZv); // manage as hard collision GereCollision(zvPtr, &zvLocal, touchedZv); // manage as hard collision
stepX = hardColStepX; stepX = hardColStepX;
stepZ = hardColStepZ; stepZ = hardColStepZ;
@ -545,14 +550,14 @@ void GereAnim(void)
{ {
ZVStruct localZv3; ZVStruct localZv3;
copyZv(touchedZv, &localZv3); CopyZV(touchedZv, &localZv3);
getZvRelativePosition(&localZv3, actorTouchedPtr->room, currentProcessedActorPtr->room); AdjustZV(&localZv3, actorTouchedPtr->room, currentProcessedActorPtr->room);
hardColStepX = stepX; hardColStepX = stepX;
hardColStepZ = stepZ; hardColStepZ = stepZ;
handleCollision(zvPtr, &zvLocal, &localZv3); // manage as hard collision GereCollision(zvPtr, &zvLocal, &localZv3); // manage as hard collision
stepX = hardColStepX; stepX = hardColStepX;
stepZ = hardColStepZ; stepZ = hardColStepZ;
@ -589,7 +594,7 @@ void GereAnim(void)
{ {
zvPtr = &currentProcessedActorPtr->zv; zvPtr = &currentProcessedActorPtr->zv;
copyZv(zvPtr, &zvLocal); CopyZV(zvPtr, &zvLocal);
zvLocal.ZVY2 += 100; zvLocal.ZVY2 += 100;
@ -617,7 +622,7 @@ void GereAnim(void)
if(collisionIndex != -1) if(collisionIndex != -1)
{ {
tObject* actorTouchedPtr = &objectTable[collisionIndex]; tObject* actorTouchedPtr = &ListObjets[collisionIndex];
if(actorTouchedPtr->objectType & AF_MOVABLE) if(actorTouchedPtr->objectType & AF_MOVABLE)
{ {

View File

@ -69,14 +69,14 @@ void GereFrappe(void)
//drawProjectedBox(rangeZv.ZVX1,rangeZv.ZVX2,rangeZv.ZVY1,rangeZv.ZVY2,rangeZv.ZVZ1,rangeZv.ZVZ2,60,255); //drawProjectedBox(rangeZv.ZVX1,rangeZv.ZVX2,rangeZv.ZVY1,rangeZv.ZVY2,rangeZv.ZVZ1,rangeZv.ZVZ2,60,255);
collision = checkObjectCollisions(currentProcessedActorIdx,&rangeZv); collision = CheckObjectCol(currentProcessedActorIdx,&rangeZv);
for(i=0;i<collision;i++) for(i=0;i<collision;i++)
{ {
tObject* actorPtr2; tObject* actorPtr2;
currentProcessedActorPtr->HIT = currentProcessedActorPtr->COL[i]; currentProcessedActorPtr->HIT = currentProcessedActorPtr->COL[i];
actorPtr2 = &objectTable[currentProcessedActorPtr->COL[i]]; actorPtr2 = &ListObjets[currentProcessedActorPtr->COL[i]];
actorPtr2->HIT_BY = currentProcessedActorIdx; actorPtr2->HIT_BY = currentProcessedActorIdx;
actorPtr2->hitForce = currentProcessedActorPtr->hitForce; actorPtr2->hitForce = currentProcessedActorPtr->hitForce;
@ -141,8 +141,8 @@ void GereFrappe(void)
currentProcessedActorPtr->HIT = touchedActor; currentProcessedActorPtr->HIT = touchedActor;
objectTable[touchedActor].HIT_BY = currentProcessedActorIdx; ListObjets[touchedActor].HIT_BY = currentProcessedActorIdx;
objectTable[touchedActor].hitForce = currentProcessedActorPtr->hitForce; ListObjets[touchedActor].hitForce = currentProcessedActorPtr->hitForce;
currentProcessedActorPtr->animActionType = 0; currentProcessedActorPtr->animActionType = 0;
} }
@ -229,7 +229,7 @@ void GereFrappe(void)
if(actorIdx == -1) if(actorIdx == -1)
return; return;
actorPtr = &objectTable[actorIdx]; actorPtr = &ListObjets[actorIdx];
actorPtr->roomX = x; actorPtr->roomX = x;
actorPtr->roomY = y; actorPtr->roomY = y;
@ -287,8 +287,8 @@ void GereFrappe(void)
int z3; int z3;
int step; int step;
copyZv(&currentProcessedActorPtr->zv, &rangeZv); CopyZV(&currentProcessedActorPtr->zv, &rangeZv);
copyZv(&currentProcessedActorPtr->zv, &rangeZv2); CopyZV(&currentProcessedActorPtr->zv, &rangeZv2);
xtemp = currentProcessedActorPtr->roomX + currentProcessedActorPtr->stepX; xtemp = currentProcessedActorPtr->roomX + currentProcessedActorPtr->stepX;
ytemp = currentProcessedActorPtr->roomY + currentProcessedActorPtr->stepY; ytemp = currentProcessedActorPtr->roomY + currentProcessedActorPtr->stepY;
@ -328,7 +328,7 @@ void GereFrappe(void)
y2 = y1; y2 = y1;
z2 = z1 + animMoveZ; z2 = z1 + animMoveZ;
copyZv(&rangeZv2,&rangeZv); CopyZV(&rangeZv2,&rangeZv);
rangeZv.ZVX1 = x2 - 200; rangeZv.ZVX1 = x2 - 200;
rangeZv.ZVX2 = x2 + 200; rangeZv.ZVX2 = x2 + 200;
@ -337,7 +337,7 @@ void GereFrappe(void)
rangeZv.ZVZ1 = z2 - 200; rangeZv.ZVZ1 = z2 - 200;
rangeZv.ZVZ2 = z2 + 200; rangeZv.ZVZ2 = z2 + 200;
collision = checkObjectCollisions(currentProcessedActorIdx,&rangeZv); collision = CheckObjectCol(currentProcessedActorIdx,&rangeZv);
if(collision) if(collision)
{ {
@ -352,7 +352,7 @@ void GereFrappe(void)
{ {
int currentActorCol = currentProcessedActorPtr->COL[i]; int currentActorCol = currentProcessedActorPtr->COL[i];
if(objectTable[currentActorCol].indexInWorld == objPtr->alpha) if(ListObjets[currentActorCol].indexInWorld == objPtr->alpha)
{ {
collision2--; collision2--;
objPtr->x = xtemp; objPtr->x = xtemp;
@ -362,7 +362,7 @@ void GereFrappe(void)
return; return;
} }
if(objectTable[currentActorCol].indexInWorld == CVars[getCVarsIdx((enumCVars)REVERSE_OBJECT)]) if(ListObjets[currentActorCol].indexInWorld == CVars[getCVarsIdx((enumCVars)REVERSE_OBJECT)])
{ {
objPtr->alpha = CVars[getCVarsIdx((enumCVars)REVERSE_OBJECT)]; objPtr->alpha = CVars[getCVarsIdx((enumCVars)REVERSE_OBJECT)];
currentProcessedActorPtr->beta += 0x200; currentProcessedActorPtr->beta += 0x200;
@ -376,7 +376,7 @@ void GereFrappe(void)
currentProcessedActorPtr->stepX = 0; currentProcessedActorPtr->stepX = 0;
currentProcessedActorPtr->stepZ = 0; currentProcessedActorPtr->stepZ = 0;
copyZv(&rangeZv2, &rangeZv); CopyZV(&rangeZv2, &rangeZv);
rangeZv.ZVX1 += x3; rangeZv.ZVX1 += x3;
rangeZv.ZVX2 += x3; rangeZv.ZVX2 += x3;
@ -385,7 +385,7 @@ void GereFrappe(void)
rangeZv.ZVZ1 += z3; rangeZv.ZVZ1 += z3;
rangeZv.ZVZ2 += z3; rangeZv.ZVZ2 += z3;
copyZv(&rangeZv, &currentProcessedActorPtr->zv); CopyZV(&rangeZv, &currentProcessedActorPtr->zv);
objPtr->x = xtemp; objPtr->x = xtemp;
objPtr->y = ytemp; objPtr->y = ytemp;
@ -399,7 +399,7 @@ void GereFrappe(void)
tObject* actorPtr; tObject* actorPtr;
currentProcessedActorPtr->HIT = currentActorCol; currentProcessedActorPtr->HIT = currentActorCol;
actorPtr = &objectTable[currentActorCol]; actorPtr = &ListObjets[currentActorCol];
actorPtr->HIT_BY = currentProcessedActorIdx; actorPtr->HIT_BY = currentProcessedActorIdx;
actorPtr->hitForce = currentProcessedActorPtr->hitForce; actorPtr->hitForce = currentProcessedActorPtr->hitForce;
} }

View File

@ -235,7 +235,7 @@ void debugger_draw(void)
if (selectedObject > NUM_MAX_OBJECT) if (selectedObject > NUM_MAX_OBJECT)
selectedObject = NUM_MAX_OBJECT - 1; selectedObject = NUM_MAX_OBJECT - 1;
tObject*pObject = &objectTable[selectedObject]; tObject*pObject = &ListObjets[selectedObject];
ImGui::PushItemWidth(100); ImGui::PushItemWidth(100);

View File

@ -9,8 +9,8 @@ int getMatrix(int param1, int actorIdx, int param2)
int matrixWidth = *matrixPtr++; int matrixWidth = *matrixPtr++;
int matrixHeigh = *matrixPtr++; int matrixHeigh = *matrixPtr++;
matrixPtr+=(objectTable[actorIdx].hardMat-1)*matrixWidth; matrixPtr+=(ListObjets[actorIdx].hardMat-1)*matrixWidth;
matrixPtr+=(objectTable[param2].hardMat-1); matrixPtr+=(ListObjets[param2].hardMat-1);
if(g_gameId == AITD3) if(g_gameId == AITD3)
{ {
@ -43,11 +43,11 @@ int getPosRel(tObject* actor1, tObject* actor2)
} }
copyZv(&actor2->zv, &localZv); CopyZV(&actor2->zv, &localZv);
if(actor1->room != actor2->room) if(actor1->room != actor2->room)
{ {
getZvRelativePosition(&localZv, actor2->room, actor1->room); AdjustZV(&localZv, actor2->room, actor1->room);
} }
centerX = (localZv.ZVX1 + localZv.ZVX2) / 2; centerX = (localZv.ZVX1 + localZv.ZVX2) / 2;
@ -118,7 +118,7 @@ int testZvEndAnim(tObject* actorPtr,sAnimation* animPtr, int param)
} }
ZVStruct localZv; ZVStruct localZv;
copyZv(&actorPtr->zv, &localZv); CopyZV(&actorPtr->zv, &localZv);
walkStep(0,stepX,actorPtr->beta); walkStep(0,stepX,actorPtr->beta);
@ -210,7 +210,7 @@ int evalVar(const char* name)
} }
} }
else { else {
actorPtr = &objectTable[actorIdx]; actorPtr = &ListObjets[actorIdx];
} }
} }
@ -228,7 +228,7 @@ int evalVar(const char* name)
if(temp1 != -1) if(temp1 != -1)
{ {
return(objectTable[temp1].indexInWorld); return(ListObjets[temp1].indexInWorld);
} }
else else
{ {
@ -256,7 +256,7 @@ int evalVar(const char* name)
} }
else else
{ {
return(objectTable[temp].indexInWorld); return(ListObjets[temp].indexInWorld);
} }
break; break;
@ -271,7 +271,7 @@ int evalVar(const char* name)
} }
else else
{ {
return(objectTable[temp].indexInWorld); return(ListObjets[temp].indexInWorld);
} }
break; break;
@ -332,9 +332,9 @@ int evalVar(const char* name)
} }
else else
{ {
int tempX = objectTable[actorNumber].worldX; int tempX = ListObjets[actorNumber].worldX;
int tempY = objectTable[actorNumber].worldY; int tempY = ListObjets[actorNumber].worldY;
int tempZ = objectTable[actorNumber].worldZ; int tempZ = ListObjets[actorNumber].worldZ;
return(calcDist(actorPtr->worldX, actorPtr->worldY, actorPtr->worldZ, tempX, tempY, tempZ)); return(calcDist(actorPtr->worldX, actorPtr->worldY, actorPtr->worldZ, tempX, tempY, tempZ));
} }
@ -346,7 +346,7 @@ int evalVar(const char* name)
if(actorPtr->COL_BY == -1) if(actorPtr->COL_BY == -1)
return(-1); return(-1);
else else
return(objectTable[actorPtr->COL_BY].indexInWorld); return(ListObjets[actorPtr->COL_BY].indexInWorld);
break; break;
} }
case 0x10: // found case 0x10: // found
@ -379,7 +379,7 @@ int evalVar(const char* name)
return 0; return 0;
} }
return (getPosRel(actorPtr, &objectTable[ListWorldObjets[objNum].objIndex])); return (getPosRel(actorPtr, &ListObjets[ListWorldObjets[objNum].objIndex]));
break; break;
} }
@ -412,7 +412,7 @@ int evalVar(const char* name)
return -1; return -1;
} }
return objectTable[temp1].indexInWorld; return ListObjets[temp1].indexInWorld;
break; break;
} }
case 0x16: case 0x16:
@ -626,7 +626,7 @@ int evalVar2(const char* name)
} }
} }
else { else {
actorPtr = &objectTable[actorIdx]; actorPtr = &ListObjets[actorIdx];
} }
} }
{ {
@ -647,7 +647,7 @@ int evalVar2(const char* name)
if(temp1 != -1) if(temp1 != -1)
{ {
return(objectTable[temp1].indexInWorld); return(ListObjets[temp1].indexInWorld);
} }
else else
{ {
@ -685,7 +685,7 @@ int evalVar2(const char* name)
} }
else else
{ {
return(objectTable[temp].indexInWorld); return(ListObjets[temp].indexInWorld);
} }
break; break;
@ -700,7 +700,7 @@ int evalVar2(const char* name)
} }
else else
{ {
return(objectTable[temp].indexInWorld); return(ListObjets[temp].indexInWorld);
} }
break; break;
@ -776,9 +776,9 @@ int evalVar2(const char* name)
} }
else else
{ {
tempX = objectTable[objectIdx].worldX; tempX = ListObjets[objectIdx].worldX;
tempY = objectTable[objectIdx].worldY; tempY = ListObjets[objectIdx].worldY;
tempZ = objectTable[objectIdx].worldZ; tempZ = ListObjets[objectIdx].worldZ;
} }
return(calcDist(actorPtr->worldX, actorPtr->worldY, actorPtr->worldZ, tempX, tempY, tempZ)); return(calcDist(actorPtr->worldX, actorPtr->worldY, actorPtr->worldZ, tempX, tempY, tempZ));
@ -790,7 +790,7 @@ int evalVar2(const char* name)
if(actorPtr->COL_BY == -1) if(actorPtr->COL_BY == -1)
return(-1); return(-1);
else else
return(objectTable[actorPtr->COL_BY].indexInWorld); return(ListObjets[actorPtr->COL_BY].indexInWorld);
break; break;
} }
case 0x10: // found case 0x10: // found
@ -823,7 +823,7 @@ int evalVar2(const char* name)
return 0; return 0;
} }
return (getPosRel(actorPtr, &objectTable[ListWorldObjets[objNum].objIndex])); return (getPosRel(actorPtr, &ListObjets[ListWorldObjets[objNum].objIndex]));
break; break;
} }
@ -856,7 +856,7 @@ int evalVar2(const char* name)
return -1; return -1;
} }
return objectTable[temp1].indexInWorld; return ListObjets[temp1].indexInWorld;
break; break;
} }
case 0x16: case 0x16:

View File

@ -493,7 +493,7 @@ void DrawFoundWindow(int menuState, int objectName, int zoomFactor)
} }
} }
void foundObject(int objIdx, int param) void FoundObjet(int objIdx, int param)
{ {
tWorldObject* objPtr; tWorldObject* objPtr;

View File

@ -87,7 +87,7 @@ int InitSpecialObjet(int mode, int X, int Y, int Z, int stage, int room, int alp
s16 localSpecialTable[4]; s16 localSpecialTable[4];
memcpy(localSpecialTable, specialTable, 8); memcpy(localSpecialTable, specialTable, 8);
tObject* currentActorPtr = objectTable.data(); tObject* currentActorPtr = ListObjets.data();
int i; int i;
for (i = 0; i < NUM_MAX_OBJECT; i++) // count the number of active actors for (i = 0; i < NUM_MAX_OBJECT; i++) // count the number of active actors
@ -131,7 +131,7 @@ int InitSpecialObjet(int mode, int X, int Y, int Z, int stage, int room, int alp
if (zvPtr) if (zvPtr)
{ {
actorZvPtr = &currentActorPtr->zv; actorZvPtr = &currentActorPtr->zv;
copyZv(zvPtr, actorZvPtr); CopyZV(zvPtr, actorZvPtr);
} }
switch (mode) switch (mode)
@ -226,7 +226,7 @@ void getHardClip()
zvCol.ZVZ1 = READ_LE_S16(etageData + 0x08); zvCol.ZVZ1 = READ_LE_S16(etageData + 0x08);
zvCol.ZVZ2 = READ_LE_S16(etageData + 0x0A); zvCol.ZVZ2 = READ_LE_S16(etageData + 0x0A);
if (checkZvCollision(zvPtr, &zvCol)) if (CubeIntersect(zvPtr, &zvCol))
{ {
hardClip.ZVX1 = zvCol.ZVX1; hardClip.ZVX1 = zvCol.ZVX1;
hardClip.ZVX2 = zvCol.ZVX2; hardClip.ZVX2 = zvCol.ZVX2;
@ -502,7 +502,7 @@ void processLife(int lifeNum, bool callFoundLife)
if (currentProcessedActorIdx != -1) if (currentProcessedActorIdx != -1)
{ {
currentProcessedActorPtr = &objectTable[currentProcessedActorIdx]; currentProcessedActorPtr = &ListObjets[currentProcessedActorIdx];
goto processOpcode; goto processOpcode;
} }
@ -1284,9 +1284,9 @@ void processLife(int lifeNum, bool callFoundLife)
currentProcessedActorPtr->gamma = ListWorldObjets[object].gamma; currentProcessedActorPtr->gamma = ListWorldObjets[object].gamma;
} }
else { else {
currentProcessedActorPtr->alpha = objectTable[localObjectIndex].alpha; currentProcessedActorPtr->alpha = ListObjets[localObjectIndex].alpha;
currentProcessedActorPtr->beta = objectTable[localObjectIndex].beta; currentProcessedActorPtr->beta = ListObjets[localObjectIndex].beta;
currentProcessedActorPtr->gamma = objectTable[localObjectIndex].gamma; currentProcessedActorPtr->gamma = ListObjets[localObjectIndex].gamma;
} }
break; break;
} }
@ -1408,7 +1408,7 @@ void processLife(int lifeNum, bool callFoundLife)
} }
case 1: // flow case 1: // flow
{ {
currentProcessedActorPtr = &objectTable[currentProcessedActorPtr->HIT_BY]; currentProcessedActorPtr = &ListObjets[currentProcessedActorPtr->HIT_BY];
InitSpecialObjet(1, InitSpecialObjet(1,
currentProcessedActorPtr->roomX + currentProcessedActorPtr->stepX + currentProcessedActorPtr->hotPoint.x, currentProcessedActorPtr->roomX + currentProcessedActorPtr->stepX + currentProcessedActorPtr->hotPoint.x,
@ -1458,17 +1458,17 @@ void processLife(int lifeNum, bool callFoundLife)
if (g_gameId == AITD1) if (g_gameId == AITD1)
{ {
foundObject(lifeTempVar1, 1); FoundObjet(lifeTempVar1, 1);
} }
else else
{ {
if (callFoundLife) if (callFoundLife)
{ {
foundObject(lifeTempVar1, 2); FoundObjet(lifeTempVar1, 2);
} }
else else
{ {
foundObject(lifeTempVar1, 1); FoundObjet(lifeTempVar1, 1);
} }
} }
@ -1947,7 +1947,7 @@ void processLife(int lifeNum, bool callFoundLife)
currentWorldTarget = lifeTempVar1; currentWorldTarget = lifeTempVar1;
currentCameraTargetActor = lifeTempVar2; currentCameraTargetActor = lifeTempVar2;
lifeTempVar3 = objectTable[currentCameraTargetActor].room; lifeTempVar3 = ListObjets[currentCameraTargetActor].room;
if (lifeTempVar3 != currentRoom) if (lifeTempVar3 != currentRoom)
{ {
@ -1959,19 +1959,19 @@ void processLife(int lifeNum, bool callFoundLife)
{ {
// security case, the target actor may be still be in list while already changed of stage // security case, the target actor may be still be in list while already changed of stage
// TODO: check if AITD1 could use the same code (quite probable as it's only security) // TODO: check if AITD1 could use the same code (quite probable as it's only security)
if (objectTable[lifeTempVar2].stage != g_currentFloor) if (ListObjets[lifeTempVar2].stage != g_currentFloor)
{ {
currentWorldTarget = lifeTempVar1; currentWorldTarget = lifeTempVar1;
FlagChangeEtage = 1; FlagChangeEtage = 1;
NewNumEtage = objectTable[lifeTempVar2].stage; NewNumEtage = ListObjets[lifeTempVar2].stage;
NewNumSalle = objectTable[lifeTempVar2].room; NewNumSalle = ListObjets[lifeTempVar2].room;
} }
else else
{ {
currentWorldTarget = lifeTempVar1; currentWorldTarget = lifeTempVar1;
currentCameraTargetActor = lifeTempVar2; currentCameraTargetActor = lifeTempVar2;
lifeTempVar3 = objectTable[currentCameraTargetActor].room; lifeTempVar3 = ListObjets[currentCameraTargetActor].room;
if (lifeTempVar3 != currentRoom) if (lifeTempVar3 != currentRoom)
{ {

View File

@ -197,7 +197,7 @@ void executeFoundLife(int objIdx)
if(actorIdx==-1) if(actorIdx==-1)
{ {
tObject* currentActorEntryPtr = &objectTable[NUM_MAX_OBJECT-1]; tObject* currentActorEntryPtr = &ListObjets[NUM_MAX_OBJECT-1];
int currentActorEntry = NUM_MAX_OBJECT-1; int currentActorEntry = NUM_MAX_OBJECT-1;
while(currentActorEntry>=0) while(currentActorEntry>=0)
@ -212,14 +212,14 @@ void executeFoundLife(int objIdx)
if(currentActorEntry==-1) // no space, we will have to overwrite the last actor ! if(currentActorEntry==-1) // no space, we will have to overwrite the last actor !
{ {
currentActorEntry = NUM_MAX_OBJECT-1; currentActorEntry = NUM_MAX_OBJECT-1;
currentActorEntryPtr = &objectTable[NUM_MAX_OBJECT-1]; currentActorEntryPtr = &ListObjets[NUM_MAX_OBJECT-1];
} }
actorIdx = currentActorEntry; actorIdx = currentActorEntry;
var_2 = 1; var_2 = 1;
currentProcessedActorPtr = &objectTable[actorIdx]; currentProcessedActorPtr = &ListObjets[actorIdx];
currentLifeActorPtr = &objectTable[actorIdx]; currentLifeActorPtr = &ListObjets[actorIdx];
currentProcessedActorIdx = actorIdx; currentProcessedActorIdx = actorIdx;
currentLifeActorIdx = actorIdx; currentLifeActorIdx = actorIdx;
@ -1184,7 +1184,7 @@ void LoadWorld(void)
for(i=0;i<NUM_MAX_OBJECT;i++) for(i=0;i<NUM_MAX_OBJECT;i++)
{ {
objectTable[i].indexInWorld = -1; ListObjets[i].indexInWorld = -1;
} }
if(g_gameId == AITD1) if(g_gameId == AITD1)
@ -1662,7 +1662,7 @@ void InitViewedRoomList()
void DeleteObjet(int index) // remove actor void DeleteObjet(int index) // remove actor
{ {
tObject *actorPtr = &objectTable[index]; tObject *actorPtr = &ListObjets[index];
if(actorPtr->indexInWorld == -2) // flow if(actorPtr->indexInWorld == -2) // flow
{ {
@ -1776,7 +1776,7 @@ void pointRotate(int x, int y, int z, int* destX, int* destY, int* destZ)
} }
} }
void copyZv(ZVStruct* source, ZVStruct* dest) void CopyZV(ZVStruct* source, ZVStruct* dest)
{ {
memcpy(dest,source,sizeof(ZVStruct)); memcpy(dest,source,sizeof(ZVStruct));
} }
@ -1842,7 +1842,7 @@ void updateAllActorAndObjectsAITD2()
{ {
for (int i = 0; i < NUM_MAX_OBJECT; i++) for (int i = 0; i < NUM_MAX_OBJECT; i++)
{ {
tObject* pObject = &objectTable[i]; tObject* pObject = &ListObjets[i];
if (pObject->indexInWorld == -1) if (pObject->indexInWorld == -1)
{ {
@ -1957,7 +1957,7 @@ void updateAllActorAndObjectsAITD2()
if (currentObject->objIndex != -1) if (currentObject->objIndex != -1)
{ {
currentProcessedActorPtr = &objectTable[currentObject->objIndex]; currentProcessedActorPtr = &ListObjets[currentObject->objIndex];
currentProcessedActorIdx = currentObject->objIndex; currentProcessedActorIdx = currentObject->objIndex;
if (currentWorldTarget == i) if (currentWorldTarget == i)
@ -1997,7 +1997,7 @@ void GenereActiveList()
for(int i=0;i<NUM_MAX_OBJECT;i++) for(int i=0;i<NUM_MAX_OBJECT;i++)
{ {
tObject* currentActor = &objectTable[i]; tObject* currentActor = &ListObjets[i];
if (currentActor->indexInWorld == -1) if (currentActor->indexInWorld == -1)
continue; continue;
@ -2095,7 +2095,7 @@ void GenereActiveList()
if(currentObject->objIndex != -1) if(currentObject->objIndex != -1)
{ {
currentProcessedActorPtr = &objectTable[currentObject->objIndex]; currentProcessedActorPtr = &ListObjets[currentObject->objIndex];
currentProcessedActorIdx = currentObject->objIndex; currentProcessedActorIdx = currentObject->objIndex;
if(currentWorldTarget == i) if(currentWorldTarget == i)
@ -2141,9 +2141,9 @@ void GenereAffList()
{ {
NbAffObjets = 0; NbAffObjets = 0;
for(int i=0;i< objectTable.size();i++) for(int i=0;i< ListObjets.size();i++)
{ {
tObject* actorPtr = &objectTable[i]; tObject* actorPtr = &ListObjets[i];
if(actorPtr->indexInWorld != -1 && actorPtr->bodyNum != -1) if(actorPtr->indexInWorld != -1 && actorPtr->bodyNum != -1)
{ {
if(checkActorInRoom(actorPtr->room)) if(checkActorInRoom(actorPtr->room))
@ -2207,9 +2207,9 @@ void InitView()
{ {
if(currentCameraTargetActor != -1) if(currentCameraTargetActor != -1)
{ {
x = objectTable[currentCameraTargetActor].worldX + objectTable[currentCameraTargetActor].stepX; x = ListObjets[currentCameraTargetActor].worldX + ListObjets[currentCameraTargetActor].stepX;
y = debufferVar_topCameraZoom; y = debufferVar_topCameraZoom;
z = objectTable[currentCameraTargetActor].worldZ + objectTable[currentCameraTargetActor].stepZ; z = ListObjets[currentCameraTargetActor].worldZ + ListObjets[currentCameraTargetActor].stepZ;
} }
} }
#endif #endif
@ -2322,7 +2322,7 @@ s16 updateActorRotation(RealValue* rotatePtr)
void removeFromBGIncrust(int actorIdx) void removeFromBGIncrust(int actorIdx)
{ {
tObject* actorPtr = &objectTable[actorIdx]; tObject* actorPtr = &ListObjets[actorIdx];
actorPtr->objectType &= ~AF_BOXIFY; actorPtr->objectType &= ~AF_BOXIFY;
@ -2380,7 +2380,7 @@ void deleteObject(int objIdx)
if(actorIdx != -1) if(actorIdx != -1)
{ {
actorPtr = &objectTable[actorIdx]; actorPtr = &ListObjets[actorIdx];
actorPtr->room = -1; actorPtr->room = -1;
actorPtr->stage = -1; actorPtr->stage = -1;
@ -2471,16 +2471,16 @@ void drawZv(tObject* actorPtr)
{ {
ZVStruct localZv; ZVStruct localZv;
if( actorPtr->room != objectTable[currentCameraTargetActor].room ) if( actorPtr->room != ListObjets[currentCameraTargetActor].room )
{ {
if (objectTable[currentCameraTargetActor].room == -1) { if (ListObjets[currentCameraTargetActor].room == -1) {
return; return;
} }
getZvRelativePosition(&localZv, actorPtr->room, objectTable[currentCameraTargetActor].room); AdjustZV(&localZv, actorPtr->room, ListObjets[currentCameraTargetActor].room);
} }
else else
{ {
copyZv(&actorPtr->zv,&localZv); CopyZV(&actorPtr->zv,&localZv);
} }
drawZv(localZv); drawZv(localZv);
@ -2644,7 +2644,7 @@ void drawRoomZv(ZVStruct* zoneData, int color, int transparency)
cameraZv.ZVZ1 += translateZ; cameraZv.ZVZ1 += translateZ;
cameraZv.ZVZ2 += translateZ; cameraZv.ZVZ2 += translateZ;
if(checkZvCollision(&cameraZv,zoneData)) if(CubeIntersect(&cameraZv,zoneData))
{ {
return; return;
} }
@ -2665,7 +2665,7 @@ void drawRoomZvLine(ZVStruct* zoneData, int color)
cameraZv.ZVZ1 += translateZ; cameraZv.ZVZ1 += translateZ;
cameraZv.ZVZ2 += translateZ; cameraZv.ZVZ2 += translateZ;
if(checkZvCollision(&cameraZv,zoneData)) if(CubeIntersect(&cameraZv,zoneData))
{ {
return; return;
} }
@ -2728,7 +2728,7 @@ void drawZone(char* zoneData,int color)
tempZv.ZVZ1 = READ_LE_S16(zoneData+0x08); tempZv.ZVZ1 = READ_LE_S16(zoneData+0x08);
tempZv.ZVZ2 = READ_LE_S16(zoneData+0x0A); tempZv.ZVZ2 = READ_LE_S16(zoneData+0x0A);
if(checkZvCollision(&cameraZv,&tempZv)) if(CubeIntersect(&cameraZv,&tempZv))
{ {
return; return;
} }
@ -2768,7 +2768,7 @@ void drawSceZone(int roomNumber)
memcpy(&dataLocal,&roomDataTable[roomNumber].sceZoneTable[i].zv,sizeof(ZVStruct)); memcpy(&dataLocal,&roomDataTable[roomNumber].sceZoneTable[i].zv,sizeof(ZVStruct));
if(roomNumber!=currentRoom) if(roomNumber!=currentRoom)
{ {
getZvRelativePosition(&dataLocal,roomNumber,currentRoom); AdjustZV(&dataLocal,roomNumber,currentRoom);
} }
// if(roomDataTable[roomNumber].sceZoneTable[i].parameter == 4) // if(roomDataTable[roomNumber].sceZoneTable[i].parameter == 4)
@ -2788,11 +2788,11 @@ void drawHardCol(int roomNumber)
/*if(roomDataTable[roomNumber].hardColTable[i].type != 9) /*if(roomDataTable[roomNumber].hardColTable[i].type != 9)
continue;*/ continue;*/
copyZv(&roomDataTable[roomNumber].hardColTable[i].zv,&dataLocal); CopyZV(&roomDataTable[roomNumber].hardColTable[i].zv,&dataLocal);
if(roomNumber!=currentRoom) if(roomNumber!=currentRoom)
{ {
getZvRelativePosition(&dataLocal,roomNumber,currentRoom); AdjustZV(&dataLocal,roomNumber,currentRoom);
} }
switch(roomDataTable[roomNumber].hardColTable[i].type) switch(roomDataTable[roomNumber].hardColTable[i].type)
@ -3032,7 +3032,7 @@ void AllRedraw(int flagFlip)
osystem_CopyBlockPhys((unsigned char*)logicalScreen, 0, 0, 320, 200); osystem_CopyBlockPhys((unsigned char*)logicalScreen, 0, 0, 320, 200);
} }
else { else {
tObject* actorPtr = &objectTable[currentDrawActor]; tObject* actorPtr = &ListObjets[currentDrawActor];
// this is commented out to draw actors backed into the background // this is commented out to draw actors backed into the background
//if(actorPtr->_flags & (AF_ANIMATED + AF_DRAWABLE + AF_SPECIAL)) //if(actorPtr->_flags & (AF_ANIMATED + AF_DRAWABLE + AF_SPECIAL))
@ -3188,13 +3188,13 @@ void walkStep(int angle1, int angle2, int angle3)
void addActorToBgInscrust(int actorIdx) void addActorToBgInscrust(int actorIdx)
{ {
objectTable[actorIdx].objectType |= AF_BOXIFY + AF_DRAWABLE; ListObjets[actorIdx].objectType |= AF_BOXIFY + AF_DRAWABLE;
objectTable[actorIdx].objectType &= ~AF_ANIMATED; ListObjets[actorIdx].objectType &= ~AF_ANIMATED;
//FlagRefreshAux2 = 1; //FlagRefreshAux2 = 1;
} }
int checkZvCollision(ZVStruct* zvPtr1,ZVStruct* zvPtr2) int CubeIntersect(ZVStruct* zvPtr1,ZVStruct* zvPtr2)
{ {
if(zvPtr1->ZVX1 >= zvPtr2->ZVX2) if(zvPtr1->ZVX1 >= zvPtr2->ZVX2)
return 0; return 0;
@ -3217,7 +3217,7 @@ int checkZvCollision(ZVStruct* zvPtr1,ZVStruct* zvPtr2)
return 1; return 1;
} }
void getZvRelativePosition(ZVStruct* zvPtr, int startRoom, int destRoom) void AdjustZV(ZVStruct* zvPtr, int startRoom, int destRoom)
{ {
unsigned int Xdif = 10*(roomDataTable[destRoom].worldX - roomDataTable[startRoom].worldX); unsigned int Xdif = 10*(roomDataTable[destRoom].worldX - roomDataTable[startRoom].worldX);
unsigned int Ydif = 10*(roomDataTable[destRoom].worldY - roomDataTable[startRoom].worldY); unsigned int Ydif = 10*(roomDataTable[destRoom].worldY - roomDataTable[startRoom].worldY);
@ -3231,11 +3231,11 @@ void getZvRelativePosition(ZVStruct* zvPtr, int startRoom, int destRoom)
zvPtr->ZVZ2 += Zdif; zvPtr->ZVZ2 += Zdif;
} }
int checkObjectCollisions(int actorIdx, ZVStruct* zvPtr) int CheckObjectCol(int actorIdx, ZVStruct* zvPtr)
{ {
int currentCollisionSlot = 0; int currentCollisionSlot = 0;
tObject* currentActor = objectTable.data();
int actorRoom = objectTable[actorIdx].room; int actorRoom = ListObjets[actorIdx].room;
for(int i=0;i<3;i++) for(int i=0;i<3;i++)
{ {
@ -3244,38 +3244,41 @@ int checkObjectCollisions(int actorIdx, ZVStruct* zvPtr)
for(int i=0;i<NUM_MAX_OBJECT;i++) for(int i=0;i<NUM_MAX_OBJECT;i++)
{ {
if(currentActor->indexInWorld != -1 && i!=actorIdx) tObject* currentActor = &ListObjets.at(i);
{
ZVStruct* currentActorZv = &currentActor->zv;
if(currentActor->room != actorRoom) if (currentActor->indexInWorld == -1)
{ continue;
ZVStruct localZv; if (i == actorIdx)
continue;
copyZv(zvPtr,&localZv); ZVStruct* currentActorZv = &currentActor->zv;
getZvRelativePosition(&localZv,actorRoom,currentActor->room); if (currentActor->room != actorRoom)
{
ZVStruct localZv;
if(checkZvCollision(&localZv,currentActorZv)) CopyZV(zvPtr, &localZv);
{
currentProcessedActorPtr->COL[currentCollisionSlot++] = i;
if(currentCollisionSlot == 3) AdjustZV(&localZv, actorRoom, currentActor->room);
return(3);
}
}
else
{
if(checkZvCollision(zvPtr,currentActorZv))
{
currentProcessedActorPtr->COL[currentCollisionSlot++] = i;
if(currentCollisionSlot == 3) if (CubeIntersect(&localZv, currentActorZv))
return(3); {
} currentProcessedActorPtr->COL[currentCollisionSlot++] = i;
}
} if (currentCollisionSlot == 3)
currentActor++; return(3);
}
}
else
{
if (CubeIntersect(zvPtr, currentActorZv))
{
currentProcessedActorPtr->COL[currentCollisionSlot++] = i;
if (currentCollisionSlot == 3)
return(3);
}
}
} }
return(currentCollisionSlot); return(currentCollisionSlot);
@ -3319,7 +3322,7 @@ void take(int objIdx)
objPtr->stage = -1; objPtr->stage = -1;
} }
void hardColSuB1Sub1(int flag) void Glisser(int flag)
{ {
switch(flag) switch(flag)
{ {
@ -3342,48 +3345,54 @@ void hardColSuB1Sub1(int flag)
} }
} }
void handleCollision(ZVStruct* startZv, ZVStruct* zvPtr2, ZVStruct* zvPtr3) void GereCollision(ZVStruct* oldZv, ZVStruct* animatedZv, ZVStruct* fixZv)
{ {
s32 flag = 0; s32 oldpos = 0;
s32 var_8; s32 oldtype;
s32 halfX; s32 halfX;
s32 halfZ; s32 halfZ;
s32 var_A; s32 pos;
s32 var_6; s32 type;
if(startZv->ZVX2 > zvPtr3->ZVX1) if(oldZv->ZVX2 > fixZv->ZVX1)
{ {
if(zvPtr3->ZVX2 <= startZv->ZVX1) if(fixZv->ZVX2 <= oldZv->ZVX1)
{ {
flag = 8; oldpos = 8; // right
} }
else {
oldpos = 0; // center
}
} }
else else
{ {
flag = 4; oldpos = 4; // left
} }
if(startZv->ZVZ2 > zvPtr3->ZVZ1) if(oldZv->ZVZ2 > fixZv->ZVZ1)
{ {
if(startZv->ZVZ1 >= zvPtr3->ZVZ2) if(oldZv->ZVZ1 >= fixZv->ZVZ2)
{ {
flag |= 2; oldpos |= 2;
} }
else {
oldpos |= 0; // center
}
} }
else else
{ {
flag |= 1; oldpos |= 1;
} }
if( flag == 5 || flag == 9 || flag == 6 || flag == 10 ) if( (oldpos == 5) || (oldpos == 9) || (oldpos == 6) || (oldpos == 10) )
{ {
var_8 = 2; oldtype = 2; // corner
} }
else else
{ {
if(!flag) if(oldpos == 0)
{ {
var_8 = 0; oldtype = 0;
hardColStepZ = 0; hardColStepZ = 0;
hardColStepX = 0; hardColStepX = 0;
@ -3392,99 +3401,100 @@ void handleCollision(ZVStruct* startZv, ZVStruct* zvPtr2, ZVStruct* zvPtr3)
} }
else else
{ {
var_8 = 1; oldtype = 1; // corner
} }
} }
halfX = (zvPtr2->ZVX1 + zvPtr2->ZVX2) / 2; halfX = (animatedZv->ZVX1 + animatedZv->ZVX2) / 2;
halfZ = (zvPtr2->ZVZ1 + zvPtr2->ZVZ2) / 2; halfZ = (animatedZv->ZVZ1 + animatedZv->ZVZ2) / 2;
if(zvPtr3->ZVX1 > halfX) if(fixZv->ZVX1 > halfX)
{ {
var_A = 4; pos = 4; // left
} }
else else
{ {
if(zvPtr3->ZVX2 < halfX) if(fixZv->ZVX2 < halfX)
{ {
var_A = 0; pos = 0; // center
} }
else else
{ {
var_A = 8; pos = 8; // right
} }
} }
if(zvPtr3->ZVZ1 > halfZ) if(fixZv->ZVZ1 > halfZ)
{ {
var_A |= 1; pos |= 1; // up
} }
else else
{ {
if(zvPtr3->ZVZ2 < halfZ) if(fixZv->ZVZ2 < halfZ)
{ {
var_A |= 0; // once again, not that much usefull pos |= 0; // center
} }
else else
{ {
var_A |= 2; pos |= 2; // bellow
} }
} }
if( var_A == 5 || var_A == 9 || var_A == 6 || var_A == 10 ) if( (pos == 5) || (pos == 9) || (pos == 6) || (pos == 10) )
{ {
var_6 = 2; type = 2; // corner
} }
else else
{ {
if(!var_A) if(pos == 0)
{ {
var_6 = 0; type = 0; // center
} }
else else
{ {
var_6 = 1; type = 1; // border
} }
} }
if(var_8 == 1) if(oldtype == 1) // border
{ {
hardColSuB1Sub1(flag); Glisser(oldpos);
return;
} }
else
{
if ((type == 1) && (pos & oldpos))
{
Glisser(pos);
}
else {
if ((pos == oldpos) || (pos+oldpos == 15))
{
int Xmod = abs(animatedZv->ZVX1 - oldZv->ZVX1); // recheck
int Zmod = abs(animatedZv->ZVZ1 - oldZv->ZVZ1);
if(var_6 == 1 && (var_A & flag)) if (Xmod > Zmod)
{ {
hardColSuB1Sub1(var_A); hardColStepZ = 0;
return; }
} else
{
if(var_A == flag || flag == 15) hardColStepX = 0;
{ }
int Xmod = abs(zvPtr2->ZVX1 - startZv->ZVX1); // recheck }
int Zmod = abs(zvPtr2->ZVZ1 - startZv->ZVZ1); else
{
if(Xmod > Zmod) if ((type == 0) || ((type == 1) && ((pos & oldpos) == 0)))
{ {
hardColStepZ = 0; hardColStepZ = 0;
} hardColStepX = 0;
else }
{ else
hardColStepX = 0; {
} Glisser(oldpos & pos);
} }
else }
{ }
if(!var_6 || (var_6 == 1 && !(var_A & flag))) }
{
hardColStepZ = 0;
hardColStepX = 0;
}
else
{
hardColSuB1Sub1(flag&var_A);
}
}
} }
int AsmCheckListCol(ZVStruct* zvPtr, roomDataStruct* pRoomData) int AsmCheckListCol(ZVStruct* zvPtr, roomDataStruct* pRoomData)
@ -3605,7 +3615,7 @@ int findBestCamera(void)
int foundAngle = 32000; int foundAngle = 32000;
int foundCamera = -1; int foundCamera = -1;
tObject* actorPtr = &objectTable[currentCameraTargetActor]; tObject* actorPtr = &ListObjets[currentCameraTargetActor];
int x1 = actorPtr->zv.ZVX1/10; int x1 = actorPtr->zv.ZVX1/10;
int x2 = actorPtr->zv.ZVX2/10; int x2 = actorPtr->zv.ZVX2/10;
@ -3658,7 +3668,7 @@ void GereSwitchCamera(void)
int zvz1; int zvz1;
int zvz2; int zvz2;
actorPtr = &objectTable[currentCameraTargetActor]; actorPtr = &ListObjets[currentCameraTargetActor];
zvx1 = actorPtr->zv.ZVX1/10; zvx1 = actorPtr->zv.ZVX1/10;
zvx2 = actorPtr->zv.ZVX2/10; zvx2 = actorPtr->zv.ZVX2/10;
@ -3890,9 +3900,9 @@ int checkLineProjectionWithActors( int actorIdx, int X, int Y, int Z, int beta,
} }
else else
{ {
for(int i=0;i<objectTable.size();i++) for(int i=0;i<ListObjets.size();i++)
{ {
tObject* currentActorPtr = &objectTable[i]; tObject* currentActorPtr = &ListObjets[i];
if(currentActorPtr->indexInWorld != -1 && i != actorIdx && !(currentActorPtr->objectType & AF_SPECIAL)) if(currentActorPtr->indexInWorld != -1 && i != actorIdx && !(currentActorPtr->objectType & AF_SPECIAL))
{ {
ZVStruct* zvPtr = &currentActorPtr->zv; ZVStruct* zvPtr = &currentActorPtr->zv;
@ -3901,10 +3911,10 @@ int checkLineProjectionWithActors( int actorIdx, int X, int Y, int Z, int beta,
{ {
ZVStruct localZv2; ZVStruct localZv2;
copyZv(&localZv, &localZv2); CopyZV(&localZv, &localZv2);
getZvRelativePosition(&localZv2, room, currentActorPtr->room); AdjustZV(&localZv2, room, currentActorPtr->room);
if(!checkZvCollision(&localZv2,zvPtr)) if(!CubeIntersect(&localZv2,zvPtr))
{ {
currentActorPtr++; currentActorPtr++;
continue; continue;
@ -3912,7 +3922,7 @@ int checkLineProjectionWithActors( int actorIdx, int X, int Y, int Z, int beta,
} }
else else
{ {
if(!checkZvCollision(&localZv,zvPtr)) if(!CubeIntersect(&localZv,zvPtr))
{ {
currentActorPtr++; currentActorPtr++;
continue; continue;
@ -3940,7 +3950,7 @@ void PutAtObjet(int objIdx, int objIdxToPutAt)
if(objPtrToPutAt->objIndex != -1) if(objPtrToPutAt->objIndex != -1)
{ {
tObject* actorToPutAtPtr = &objectTable[objPtrToPutAt->objIndex]; tObject* actorToPutAtPtr = &ListObjets[objPtrToPutAt->objIndex];
DeleteInventoryObjet(objIdx); DeleteInventoryObjet(objIdx);
@ -4046,7 +4056,7 @@ void throwStoppedAt(int x, int z)
while(!foundPosition) while(!foundPosition)
{ {
walkStep(0,-step,currentProcessedActorPtr->beta+0x200); walkStep(0,-step,currentProcessedActorPtr->beta+0x200);
copyZv(&zvLocal,&zvCopy); CopyZV(&zvLocal,&zvCopy);
x2 = x + animMoveX; x2 = x + animMoveX;
z2 = z + animMoveZ; z2 = z + animMoveZ;

View File

@ -14,7 +14,7 @@ void GereSwitchCamera(void);
void GenereActiveList(); void GenereActiveList();
void GenereAffList(); void GenereAffList();
void AllRedraw(int mode); void AllRedraw(int mode);
int checkObjectCollisions(int actorIdx, ZVStruct* zvPtr); int CheckObjectCol(int actorIdx, ZVStruct* zvPtr);
int checkLineProjectionWithActors( int actorIdx, int X, int Y, int Z, int beta, int room, int param ); int checkLineProjectionWithActors( int actorIdx, int X, int Y, int Z, int beta, int room, int param );
int AsmCheckListCol(ZVStruct* zvPtr, roomDataStruct* pRoomData); int AsmCheckListCol(ZVStruct* zvPtr, roomDataStruct* pRoomData);
void DeleteInventoryObjet(int objIdx); void DeleteInventoryObjet(int objIdx);
@ -38,12 +38,12 @@ void OpenProgram(void);
void freeAll(void); void freeAll(void);
void startGame(int startupEtage, int startupRoom, int allowSystemMenu); void startGame(int startupEtage, int startupRoom, int allowSystemMenu);
void AffRect(int x1, int y1, int x2, int y2, char color); // fast recode. No RE void AffRect(int x1, int y1, int x2, int y2, char color); // fast recode. No RE
void copyZv(ZVStruct* source, ZVStruct* dest); void CopyZV(ZVStruct* source, ZVStruct* dest);
void getZvRelativePosition(ZVStruct* zvPtr, int startRoom, int destRoom); void AdjustZV(ZVStruct* zvPtr, int startRoom, int destRoom);
void take(int objIdx); void take(int objIdx);
void foundObject(int objIdx, int param); void FoundObjet(int objIdx, int param);
void hit(int animNumber,int arg_2,int arg_4,int arg_6,int hitForce,int arg_A); void hit(int animNumber,int arg_2,int arg_4,int arg_6,int hitForce,int arg_A);
int checkZvCollision(ZVStruct* zvPtr1,ZVStruct* zvPtr2); int CubeIntersect(ZVStruct* zvPtr1,ZVStruct* zvPtr2);
void PutAtObjet(int objIdx, int objIdxToPutAt); void PutAtObjet(int objIdx, int objIdxToPutAt);
void SetClip(int left, int top, int right, int bottom); void SetClip(int left, int top, int right, int bottom);
@ -64,7 +64,7 @@ void deleteObject(int objIdx);
void removeFromBGIncrust(int actorIdx); void removeFromBGIncrust(int actorIdx);
void makeMessage(int messageIdx); void makeMessage(int messageIdx);
int drawTextOverlay(void); int drawTextOverlay(void);
void handleCollision(ZVStruct* startZv, ZVStruct* zvPtr2, ZVStruct* zvPtr3); void GereCollision(ZVStruct* startZv, ZVStruct* zvPtr2, ZVStruct* zvPtr3);
void addActorToBgInscrust(int actorIdx); void addActorToBgInscrust(int actorIdx);

View File

@ -113,7 +113,7 @@ void PlayWorld(int allowSystemMenu, int deltaTime)
for(currentProcessedActorIdx = 0; currentProcessedActorIdx < NUM_MAX_OBJECT; currentProcessedActorIdx++) for(currentProcessedActorIdx = 0; currentProcessedActorIdx < NUM_MAX_OBJECT; currentProcessedActorIdx++)
{ {
currentProcessedActorPtr = &objectTable[currentProcessedActorIdx]; currentProcessedActorPtr = &ListObjets[currentProcessedActorIdx];
if(currentProcessedActorPtr->indexInWorld >= 0) if(currentProcessedActorPtr->indexInWorld >= 0)
{ {
currentProcessedActorPtr->COL_BY = -1; currentProcessedActorPtr->COL_BY = -1;
@ -126,7 +126,7 @@ void PlayWorld(int allowSystemMenu, int deltaTime)
for(currentProcessedActorIdx = 0; currentProcessedActorIdx < NUM_MAX_OBJECT; currentProcessedActorIdx++) for(currentProcessedActorIdx = 0; currentProcessedActorIdx < NUM_MAX_OBJECT; currentProcessedActorIdx++)
{ {
currentProcessedActorPtr = &objectTable[currentProcessedActorIdx]; currentProcessedActorPtr = &ListObjets[currentProcessedActorIdx];
if(currentProcessedActorPtr->indexInWorld >= 0) if(currentProcessedActorPtr->indexInWorld >= 0)
{ {
int flag = currentProcessedActorPtr->objectType; int flag = currentProcessedActorPtr->objectType;
@ -150,7 +150,7 @@ void PlayWorld(int allowSystemMenu, int deltaTime)
for(currentProcessedActorIdx = 0; currentProcessedActorIdx < NUM_MAX_OBJECT; currentProcessedActorIdx++) for(currentProcessedActorIdx = 0; currentProcessedActorIdx < NUM_MAX_OBJECT; currentProcessedActorIdx++)
{ {
currentProcessedActorPtr = &objectTable[currentProcessedActorIdx]; currentProcessedActorPtr = &ListObjets[currentProcessedActorIdx];
if(currentProcessedActorPtr->indexInWorld >= 0) if(currentProcessedActorPtr->indexInWorld >= 0)
{ {
if(currentProcessedActorPtr->life != -1) if(currentProcessedActorPtr->life != -1)
@ -209,7 +209,7 @@ void PlayWorld(int allowSystemMenu, int deltaTime)
for (currentProcessedActorIdx = 0; currentProcessedActorIdx < NUM_MAX_OBJECT; currentProcessedActorIdx++) for (currentProcessedActorIdx = 0; currentProcessedActorIdx < NUM_MAX_OBJECT; currentProcessedActorIdx++)
{ {
currentProcessedActorPtr = &objectTable[currentProcessedActorIdx]; currentProcessedActorPtr = &ListObjets[currentProcessedActorIdx];
if (currentProcessedActorPtr->indexInWorld >= 0) if (currentProcessedActorPtr->indexInWorld >= 0)
{ {
if (currentProcessedActorPtr->life != -1) if (currentProcessedActorPtr->life != -1)

View File

@ -4,7 +4,7 @@ int InitObjet(int body, int typeZv, int hardZvIdx, s16 objectType, int x, int y,
{ {
int i; int i;
int j; int j;
tObject* actorPtr = objectTable.data(); tObject* actorPtr = ListObjets.data();
ZVStruct* zvPtr; ZVStruct* zvPtr;
for(i=0;i<NUM_MAX_OBJECT;i++) for(i=0;i<NUM_MAX_OBJECT;i++)
@ -200,7 +200,7 @@ int InitObjet(int body, int typeZv, int hardZvIdx, s16 objectType, int x, int y,
{ {
if((roomDataTable[room].hardColTable[hardColIdx].type == 9) && (roomDataTable[room].hardColTable[hardColIdx].parameter == hardZvIdx)) if((roomDataTable[room].hardColTable[hardColIdx].type == 9) && (roomDataTable[room].hardColTable[hardColIdx].parameter == hardZvIdx))
{ {
copyZv(&roomDataTable[room].hardColTable[hardColIdx].zv, zvPtr); CopyZV(&roomDataTable[room].hardColTable[hardColIdx].zv, zvPtr);
x = 0; x = 0;
y = 0; y = 0;

View File

@ -105,7 +105,7 @@ int FitdInit(int argc, char* argv[])
// Game is running in dos resolution 13h, ie 320x200x256, but is displayed in 4:3, so pixel are not square (1.6:1) // Game is running in dos resolution 13h, ie 320x200x256, but is displayed in 4:3, so pixel are not square (1.6:1)
// We still need to create a 4:3 window for the actual display on screen. // We still need to create a 4:3 window for the actual display on screen.
int scale = 4; int scale = 4;
int resolution[2] = { 320 * scale, 240 * scale }; int resolution[2] = { 80 * 4 * scale, 80 * 3 * scale };
gWindowBGFX = SDL_CreateWindow("FITD", resolution[0], resolution[1], flags); gWindowBGFX = SDL_CreateWindow("FITD", resolution[0], resolution[1], flags);

View File

@ -162,7 +162,7 @@ void ChangeSalle(int roomNumber)
for(i=0;i<NUM_MAX_OBJECT;i++) for(i=0;i<NUM_MAX_OBJECT;i++)
{ {
if(objectTable[i].indexInWorld != -1) if(ListObjets[i].indexInWorld != -1)
{ {
/* if(gameId == AITD1) // special case. In AITD1, the load room function was always triggered just after the actor was moved in the new room. /* if(gameId == AITD1) // special case. In AITD1, the load room function was always triggered just after the actor was moved in the new room.
// it is not always the case in later games. Maybe we could generalize the AITD2 way... // it is not always the case in later games. Maybe we could generalize the AITD2 way...
@ -175,15 +175,15 @@ void ChangeSalle(int roomNumber)
{ {
if(i!=currentCameraTargetActor) if(i!=currentCameraTargetActor)
{ {
objectTable[i].worldX -= var_E; ListObjets[i].worldX -= var_E;
objectTable[i].worldY += var_C; ListObjets[i].worldY += var_C;
objectTable[i].worldZ += var_A; ListObjets[i].worldZ += var_A;
} }
else else
{ {
objectTable[i].worldX = objectTable[i].roomX; ListObjets[i].worldX = ListObjets[i].roomX;
objectTable[i].worldY = objectTable[i].roomY; ListObjets[i].worldY = ListObjets[i].roomY;
objectTable[i].worldZ = objectTable[i].roomZ; ListObjets[i].worldZ = ListObjets[i].roomZ;
} }
} }
} }

View File

@ -278,228 +278,228 @@ int loadSave(int saveNumber)
for(i=0;i<NUM_MAX_OBJECT;i++) for(i=0;i<NUM_MAX_OBJECT;i++)
{ {
ASSERT(sizeof(objectTable[i].indexInWorld) == 2); ASSERT(sizeof(ListObjets[i].indexInWorld) == 2);
fread(&objectTable[i].indexInWorld,2,1,fHandle); fread(&ListObjets[i].indexInWorld,2,1,fHandle);
ASSERT(sizeof(objectTable[i].bodyNum) == 2); ASSERT(sizeof(ListObjets[i].bodyNum) == 2);
fread(&objectTable[i].bodyNum,2,1,fHandle); fread(&ListObjets[i].bodyNum,2,1,fHandle);
ASSERT(sizeof(objectTable[i].objectType) == 2); ASSERT(sizeof(ListObjets[i].objectType) == 2);
fread(&objectTable[i].objectType,2,1,fHandle); fread(&ListObjets[i].objectType,2,1,fHandle);
ASSERT(sizeof(objectTable[i].dynFlags) == 2); ASSERT(sizeof(ListObjets[i].dynFlags) == 2);
fread(&objectTable[i].dynFlags,2,1,fHandle); fread(&ListObjets[i].dynFlags,2,1,fHandle);
// ASSERT(sizeof(actorTable[i].zv.ZVX1) == 2); // ASSERT(sizeof(actorTable[i].zv.ZVX1) == 2);
fread(&objectTable[i].zv.ZVX1,2,1,fHandle); fread(&ListObjets[i].zv.ZVX1,2,1,fHandle);
objectTable[i].zv.ZVX1 = (s16)objectTable[i].zv.ZVX1; ListObjets[i].zv.ZVX1 = (s16)ListObjets[i].zv.ZVX1;
// ASSERT(sizeof(actorTable[i].zv.ZVX2) == 2); // ASSERT(sizeof(actorTable[i].zv.ZVX2) == 2);
fread(&objectTable[i].zv.ZVX2,2,1,fHandle); fread(&ListObjets[i].zv.ZVX2,2,1,fHandle);
objectTable[i].zv.ZVX2 = (s16)objectTable[i].zv.ZVX2; ListObjets[i].zv.ZVX2 = (s16)ListObjets[i].zv.ZVX2;
// ASSERT(sizeof(actorTable[i].zv.ZVY1) == 2); // ASSERT(sizeof(actorTable[i].zv.ZVY1) == 2);
fread(&objectTable[i].zv.ZVY1,2,1,fHandle); fread(&ListObjets[i].zv.ZVY1,2,1,fHandle);
objectTable[i].zv.ZVY1 = (s16)objectTable[i].zv.ZVY1; ListObjets[i].zv.ZVY1 = (s16)ListObjets[i].zv.ZVY1;
// ASSERT(sizeof(actorTable[i].zv.ZVY2) == 2); // ASSERT(sizeof(actorTable[i].zv.ZVY2) == 2);
fread(&objectTable[i].zv.ZVY2,2,1,fHandle); fread(&ListObjets[i].zv.ZVY2,2,1,fHandle);
objectTable[i].zv.ZVY2 = (s16)objectTable[i].zv.ZVY2; ListObjets[i].zv.ZVY2 = (s16)ListObjets[i].zv.ZVY2;
// ASSERT(sizeof(actorTable[i].zv.ZVZ1) == 2); // ASSERT(sizeof(actorTable[i].zv.ZVZ1) == 2);
fread(&objectTable[i].zv.ZVZ1,2,1,fHandle); fread(&ListObjets[i].zv.ZVZ1,2,1,fHandle);
objectTable[i].zv.ZVZ1 = (s16)objectTable[i].zv.ZVZ1; ListObjets[i].zv.ZVZ1 = (s16)ListObjets[i].zv.ZVZ1;
// ASSERT(sizeof(actorTable[i].zv.ZVZ2) == 2); // ASSERT(sizeof(actorTable[i].zv.ZVZ2) == 2);
fread(&objectTable[i].zv.ZVZ2,2,1,fHandle); fread(&ListObjets[i].zv.ZVZ2,2,1,fHandle);
objectTable[i].zv.ZVZ2 = (s16)objectTable[i].zv.ZVZ2; ListObjets[i].zv.ZVZ2 = (s16)ListObjets[i].zv.ZVZ2;
ASSERT(sizeof(objectTable[i].screenXMin) == 2); ASSERT(sizeof(ListObjets[i].screenXMin) == 2);
fread(&objectTable[i].screenXMin,2,1,fHandle); fread(&ListObjets[i].screenXMin,2,1,fHandle);
ASSERT(sizeof(objectTable[i].screenYMin) == 2); ASSERT(sizeof(ListObjets[i].screenYMin) == 2);
fread(&objectTable[i].screenYMin,2,1,fHandle); fread(&ListObjets[i].screenYMin,2,1,fHandle);
ASSERT(sizeof(objectTable[i].screenXMax) == 2); ASSERT(sizeof(ListObjets[i].screenXMax) == 2);
fread(&objectTable[i].screenXMax,2,1,fHandle); fread(&ListObjets[i].screenXMax,2,1,fHandle);
ASSERT(sizeof(objectTable[i].screenYMax) == 2); ASSERT(sizeof(ListObjets[i].screenYMax) == 2);
fread(&objectTable[i].screenYMax,2,1,fHandle); fread(&ListObjets[i].screenYMax,2,1,fHandle);
ASSERT(sizeof(objectTable[i].roomX) == 2); ASSERT(sizeof(ListObjets[i].roomX) == 2);
fread(&objectTable[i].roomX,2,1,fHandle); fread(&ListObjets[i].roomX,2,1,fHandle);
ASSERT(sizeof(objectTable[i].roomY) == 2); ASSERT(sizeof(ListObjets[i].roomY) == 2);
fread(&objectTable[i].roomY,2,1,fHandle); fread(&ListObjets[i].roomY,2,1,fHandle);
ASSERT(sizeof(objectTable[i].roomZ) == 2); ASSERT(sizeof(ListObjets[i].roomZ) == 2);
fread(&objectTable[i].roomZ,2,1,fHandle); fread(&ListObjets[i].roomZ,2,1,fHandle);
ASSERT(sizeof(objectTable[i].worldX) == 2); ASSERT(sizeof(ListObjets[i].worldX) == 2);
fread(&objectTable[i].worldX,2,1,fHandle); fread(&ListObjets[i].worldX,2,1,fHandle);
ASSERT(sizeof(objectTable[i].worldY) == 2); ASSERT(sizeof(ListObjets[i].worldY) == 2);
fread(&objectTable[i].worldY,2,1,fHandle); fread(&ListObjets[i].worldY,2,1,fHandle);
ASSERT(sizeof(objectTable[i].worldZ) == 2); ASSERT(sizeof(ListObjets[i].worldZ) == 2);
fread(&objectTable[i].worldZ,2,1,fHandle); fread(&ListObjets[i].worldZ,2,1,fHandle);
ASSERT(sizeof(objectTable[i].alpha) == 2); ASSERT(sizeof(ListObjets[i].alpha) == 2);
fread(&objectTable[i].alpha,2,1,fHandle); fread(&ListObjets[i].alpha,2,1,fHandle);
ASSERT(sizeof(objectTable[i].beta) == 2); ASSERT(sizeof(ListObjets[i].beta) == 2);
fread(&objectTable[i].beta,2,1,fHandle); fread(&ListObjets[i].beta,2,1,fHandle);
ASSERT(sizeof(objectTable[i].gamma) == 2); ASSERT(sizeof(ListObjets[i].gamma) == 2);
fread(&objectTable[i].gamma,2,1,fHandle); fread(&ListObjets[i].gamma,2,1,fHandle);
ASSERT(sizeof(objectTable[i].room) == 2); ASSERT(sizeof(ListObjets[i].room) == 2);
fread(&objectTable[i].room,2,1,fHandle); fread(&ListObjets[i].room,2,1,fHandle);
ASSERT(sizeof(objectTable[i].stage) == 2); ASSERT(sizeof(ListObjets[i].stage) == 2);
fread(&objectTable[i].stage,2,1,fHandle); fread(&ListObjets[i].stage,2,1,fHandle);
ASSERT(sizeof(objectTable[i].lifeMode) == 2); ASSERT(sizeof(ListObjets[i].lifeMode) == 2);
fread(&objectTable[i].lifeMode,2,1,fHandle); fread(&ListObjets[i].lifeMode,2,1,fHandle);
ASSERT(sizeof(objectTable[i].life) == 2); ASSERT(sizeof(ListObjets[i].life) == 2);
fread(&objectTable[i].life,2,1,fHandle); fread(&ListObjets[i].life,2,1,fHandle);
ASSERT(sizeof(objectTable[i].CHRONO) == 4); ASSERT(sizeof(ListObjets[i].CHRONO) == 4);
fread(&objectTable[i].CHRONO,4,1,fHandle); fread(&ListObjets[i].CHRONO,4,1,fHandle);
ASSERT(sizeof(objectTable[i].ROOM_CHRONO) == 4); ASSERT(sizeof(ListObjets[i].ROOM_CHRONO) == 4);
fread(&objectTable[i].ROOM_CHRONO,4,1,fHandle); fread(&ListObjets[i].ROOM_CHRONO,4,1,fHandle);
ASSERT(sizeof(objectTable[i].ANIM) == 2); ASSERT(sizeof(ListObjets[i].ANIM) == 2);
fread(&objectTable[i].ANIM,2,1,fHandle); fread(&ListObjets[i].ANIM,2,1,fHandle);
ASSERT(sizeof(objectTable[i].animType) == 2); ASSERT(sizeof(ListObjets[i].animType) == 2);
fread(&objectTable[i].animType,2,1,fHandle); fread(&ListObjets[i].animType,2,1,fHandle);
ASSERT(sizeof(objectTable[i].animInfo) == 2); ASSERT(sizeof(ListObjets[i].animInfo) == 2);
fread(&objectTable[i].animInfo,2,1,fHandle); fread(&ListObjets[i].animInfo,2,1,fHandle);
ASSERT(sizeof(objectTable[i].newAnim) == 2); ASSERT(sizeof(ListObjets[i].newAnim) == 2);
fread(&objectTable[i].newAnim,2,1,fHandle); fread(&ListObjets[i].newAnim,2,1,fHandle);
ASSERT(sizeof(objectTable[i].newAnimType) == 2); ASSERT(sizeof(ListObjets[i].newAnimType) == 2);
fread(&objectTable[i].newAnimType,2,1,fHandle); fread(&ListObjets[i].newAnimType,2,1,fHandle);
ASSERT(sizeof(objectTable[i].newAnimInfo) == 2); ASSERT(sizeof(ListObjets[i].newAnimInfo) == 2);
fread(&objectTable[i].newAnimInfo,2,1,fHandle); fread(&ListObjets[i].newAnimInfo,2,1,fHandle);
ASSERT(sizeof(objectTable[i].frame) == 2); ASSERT(sizeof(ListObjets[i].frame) == 2);
fread(&objectTable[i].frame,2,1,fHandle); fread(&ListObjets[i].frame,2,1,fHandle);
ASSERT(sizeof(objectTable[i].numOfFrames) == 2); ASSERT(sizeof(ListObjets[i].numOfFrames) == 2);
fread(&objectTable[i].numOfFrames,2,1,fHandle); fread(&ListObjets[i].numOfFrames,2,1,fHandle);
ASSERT(sizeof(objectTable[i].END_FRAME) == 2); ASSERT(sizeof(ListObjets[i].END_FRAME) == 2);
fread(&objectTable[i].END_FRAME,2,1,fHandle); fread(&ListObjets[i].END_FRAME,2,1,fHandle);
ASSERT(sizeof(objectTable[i].flagEndAnim) == 2); ASSERT(sizeof(ListObjets[i].flagEndAnim) == 2);
fread(&objectTable[i].flagEndAnim,2,1,fHandle); fread(&ListObjets[i].flagEndAnim,2,1,fHandle);
ASSERT(sizeof(objectTable[i].trackMode) == 2); ASSERT(sizeof(ListObjets[i].trackMode) == 2);
fread(&objectTable[i].trackMode,2,1,fHandle); fread(&ListObjets[i].trackMode,2,1,fHandle);
ASSERT(sizeof(objectTable[i].trackNumber) == 2); ASSERT(sizeof(ListObjets[i].trackNumber) == 2);
fread(&objectTable[i].trackNumber,2,1,fHandle); fread(&ListObjets[i].trackNumber,2,1,fHandle);
ASSERT(sizeof(objectTable[i].MARK) == 2); ASSERT(sizeof(ListObjets[i].MARK) == 2);
fread(&objectTable[i].MARK,2,1,fHandle); fread(&ListObjets[i].MARK,2,1,fHandle);
ASSERT(sizeof(objectTable[i].positionInTrack) == 2); ASSERT(sizeof(ListObjets[i].positionInTrack) == 2);
fread(&objectTable[i].positionInTrack,2,1,fHandle); fread(&ListObjets[i].positionInTrack,2,1,fHandle);
ASSERT(sizeof(objectTable[i].stepX) == 2); ASSERT(sizeof(ListObjets[i].stepX) == 2);
fread(&objectTable[i].stepX,2,1,fHandle); fread(&ListObjets[i].stepX,2,1,fHandle);
ASSERT(sizeof(objectTable[i].stepY) == 2); ASSERT(sizeof(ListObjets[i].stepY) == 2);
fread(&objectTable[i].stepY,2,1,fHandle); fread(&ListObjets[i].stepY,2,1,fHandle);
ASSERT(sizeof(objectTable[i].stepZ) == 2); // 45 ASSERT(sizeof(ListObjets[i].stepZ) == 2); // 45
fread(&objectTable[i].stepZ,2,1,fHandle); fread(&ListObjets[i].stepZ,2,1,fHandle);
loadInterpolatedValue(&objectTable[i].YHandler,fHandle); loadInterpolatedValue(&ListObjets[i].YHandler,fHandle);
ASSERT(sizeof(objectTable[i].falling) == 2); ASSERT(sizeof(ListObjets[i].falling) == 2);
fread(&objectTable[i].falling,2,1,fHandle); fread(&ListObjets[i].falling,2,1,fHandle);
loadInterpolatedValue(&objectTable[i].rotate,fHandle); loadInterpolatedValue(&ListObjets[i].rotate,fHandle);
ASSERT(sizeof(objectTable[i].direction) == 2); ASSERT(sizeof(ListObjets[i].direction) == 2);
fread(&objectTable[i].direction,2,1,fHandle); fread(&ListObjets[i].direction,2,1,fHandle);
ASSERT(sizeof(objectTable[i].speed) == 2); ASSERT(sizeof(ListObjets[i].speed) == 2);
fread(&objectTable[i].speed,2,1,fHandle); fread(&ListObjets[i].speed,2,1,fHandle);
loadInterpolatedValue(&objectTable[i].speedChange,fHandle); loadInterpolatedValue(&ListObjets[i].speedChange,fHandle);
ASSERT(sizeof(objectTable[i].COL[0]) == 2); ASSERT(sizeof(ListObjets[i].COL[0]) == 2);
fread(&objectTable[i].COL[0],2,1,fHandle); fread(&ListObjets[i].COL[0],2,1,fHandle);
ASSERT(sizeof(objectTable[i].COL[1]) == 2); ASSERT(sizeof(ListObjets[i].COL[1]) == 2);
fread(&objectTable[i].COL[1],2,1,fHandle); fread(&ListObjets[i].COL[1],2,1,fHandle);
ASSERT(sizeof(objectTable[i].COL[2]) == 2); ASSERT(sizeof(ListObjets[i].COL[2]) == 2);
fread(&objectTable[i].COL[2],2,1,fHandle); fread(&ListObjets[i].COL[2],2,1,fHandle);
ASSERT(sizeof(objectTable[i].COL_BY) == 2); ASSERT(sizeof(ListObjets[i].COL_BY) == 2);
fread(&objectTable[i].COL_BY,2,1,fHandle); fread(&ListObjets[i].COL_BY,2,1,fHandle);
ASSERT(sizeof(objectTable[i].HARD_DEC) == 2); ASSERT(sizeof(ListObjets[i].HARD_DEC) == 2);
fread(&objectTable[i].HARD_DEC,2,1,fHandle); fread(&ListObjets[i].HARD_DEC,2,1,fHandle);
ASSERT(sizeof(objectTable[i].HARD_COL) == 2); ASSERT(sizeof(ListObjets[i].HARD_COL) == 2);
fread(&objectTable[i].HARD_COL,2,1,fHandle); fread(&ListObjets[i].HARD_COL,2,1,fHandle);
ASSERT(sizeof(objectTable[i].HIT) == 2); ASSERT(sizeof(ListObjets[i].HIT) == 2);
fread(&objectTable[i].HIT,2,1,fHandle); fread(&ListObjets[i].HIT,2,1,fHandle);
ASSERT(sizeof(objectTable[i].HIT_BY) == 2); ASSERT(sizeof(ListObjets[i].HIT_BY) == 2);
fread(&objectTable[i].HIT_BY,2,1,fHandle); fread(&ListObjets[i].HIT_BY,2,1,fHandle);
ASSERT(sizeof(objectTable[i].animActionType) == 2); ASSERT(sizeof(ListObjets[i].animActionType) == 2);
fread(&objectTable[i].animActionType,2,1,fHandle); fread(&ListObjets[i].animActionType,2,1,fHandle);
ASSERT(sizeof(objectTable[i].animActionANIM) == 2); ASSERT(sizeof(ListObjets[i].animActionANIM) == 2);
fread(&objectTable[i].animActionANIM,2,1,fHandle); fread(&ListObjets[i].animActionANIM,2,1,fHandle);
ASSERT(sizeof(objectTable[i].animActionFRAME) == 2); ASSERT(sizeof(ListObjets[i].animActionFRAME) == 2);
fread(&objectTable[i].animActionFRAME,2,1,fHandle); fread(&ListObjets[i].animActionFRAME,2,1,fHandle);
ASSERT(sizeof(objectTable[i].animActionParam) == 2); ASSERT(sizeof(ListObjets[i].animActionParam) == 2);
fread(&objectTable[i].animActionParam,2,1,fHandle); fread(&ListObjets[i].animActionParam,2,1,fHandle);
ASSERT(sizeof(objectTable[i].hitForce) == 2); ASSERT(sizeof(ListObjets[i].hitForce) == 2);
fread(&objectTable[i].hitForce,2,1,fHandle); fread(&ListObjets[i].hitForce,2,1,fHandle);
ASSERT(sizeof(objectTable[i].hotPointID) == 2); ASSERT(sizeof(ListObjets[i].hotPointID) == 2);
fread(&objectTable[i].hotPointID,2,1,fHandle); fread(&ListObjets[i].hotPointID,2,1,fHandle);
ASSERT(sizeof(objectTable[i].hotPoint.x) == 2); ASSERT(sizeof(ListObjets[i].hotPoint.x) == 2);
fread(&objectTable[i].hotPoint.x,2,1,fHandle); fread(&ListObjets[i].hotPoint.x,2,1,fHandle);
ASSERT(sizeof(objectTable[i].hotPoint.y) == 2); ASSERT(sizeof(ListObjets[i].hotPoint.y) == 2);
fread(&objectTable[i].hotPoint.x,2,1,fHandle); fread(&ListObjets[i].hotPoint.x,2,1,fHandle);
ASSERT(sizeof(objectTable[i].hotPoint.z) == 2); ASSERT(sizeof(ListObjets[i].hotPoint.z) == 2);
fread(&objectTable[i].hotPoint.x,2,1,fHandle); fread(&ListObjets[i].hotPoint.x,2,1,fHandle);
} }
fclose(fHandle); fclose(fHandle);
for(i=0;i<NUM_MAX_OBJECT;i++) for(i=0;i<NUM_MAX_OBJECT;i++)
{ {
if(objectTable[i].indexInWorld != -1 && objectTable[i].bodyNum != -1) if(ListObjets[i].indexInWorld != -1 && ListObjets[i].bodyNum != -1)
{ {
sBody* bodyPtr = HQR_Get(HQ_Bodys,objectTable[i].bodyNum); sBody* bodyPtr = HQR_Get(HQ_Bodys,ListObjets[i].bodyNum);
if(objectTable[i].ANIM != -1) if(ListObjets[i].ANIM != -1)
{ {
sAnimation* animPtr = HQR_Get(HQ_Anims,objectTable[i].ANIM); sAnimation* animPtr = HQR_Get(HQ_Anims,ListObjets[i].ANIM);
SetAnimObjet(objectTable[i].frame,animPtr,bodyPtr); SetAnimObjet(ListObjets[i].frame,animPtr,bodyPtr);
} }
} }
} }
@ -556,13 +556,13 @@ int makeSaveFile(int entry)
// For safety, destroy special objects before mallocs // For safety, destroy special objects before mallocs
for(i=0;i<NUM_MAX_OBJECT;i++) for(i=0;i<NUM_MAX_OBJECT;i++)
{ {
if (objectTable[i].indexInWorld == -2) // Special objects if (ListObjets[i].indexInWorld == -2) // Special objects
{ {
objectTable[i].indexInWorld = -1; ListObjets[i].indexInWorld = -1;
if (objectTable[i].ANIM == 4) if (ListObjets[i].ANIM == 4)
{ {
CVars[getCVarsIdx(FOG_FLAG)] = 0; CVars[getCVarsIdx(FOG_FLAG)] = 0;
HQ_Free_Malloc(HQ_Memory, objectTable[i].frame); HQ_Free_Malloc(HQ_Memory, ListObjets[i].frame);
} }
} }
} }
@ -772,211 +772,211 @@ int makeSaveFile(int entry)
for(i=0;i<NUM_MAX_OBJECT;i++) for(i=0;i<NUM_MAX_OBJECT;i++)
{ {
ASSERT(sizeof(objectTable[i].indexInWorld) == 2); ASSERT(sizeof(ListObjets[i].indexInWorld) == 2);
fwrite(&objectTable[i].indexInWorld,2,1,fHandle); fwrite(&ListObjets[i].indexInWorld,2,1,fHandle);
ASSERT(sizeof(objectTable[i].bodyNum) == 2); ASSERT(sizeof(ListObjets[i].bodyNum) == 2);
fwrite(&objectTable[i].bodyNum,2,1,fHandle); fwrite(&ListObjets[i].bodyNum,2,1,fHandle);
ASSERT(sizeof(objectTable[i].objectType) == 2); ASSERT(sizeof(ListObjets[i].objectType) == 2);
fwrite(&objectTable[i].objectType,2,1,fHandle); fwrite(&ListObjets[i].objectType,2,1,fHandle);
ASSERT(sizeof(objectTable[i].dynFlags) == 2); ASSERT(sizeof(ListObjets[i].dynFlags) == 2);
fwrite(&objectTable[i].dynFlags,2,1,fHandle); fwrite(&ListObjets[i].dynFlags,2,1,fHandle);
// ASSERT(sizeof(actorTable[i].zv.ZVX1) == 2); // ASSERT(sizeof(actorTable[i].zv.ZVX1) == 2);
fwrite(&objectTable[i].zv.ZVX1,2,1,fHandle); fwrite(&ListObjets[i].zv.ZVX1,2,1,fHandle);
objectTable[i].zv.ZVX1 = (s16)objectTable[i].zv.ZVX1; ListObjets[i].zv.ZVX1 = (s16)ListObjets[i].zv.ZVX1;
// ASSERT(sizeof(actorTable[i].zv.ZVX2) == 2); // ASSERT(sizeof(actorTable[i].zv.ZVX2) == 2);
fwrite(&objectTable[i].zv.ZVX2,2,1,fHandle); fwrite(&ListObjets[i].zv.ZVX2,2,1,fHandle);
objectTable[i].zv.ZVX2 = (s16)objectTable[i].zv.ZVX2; ListObjets[i].zv.ZVX2 = (s16)ListObjets[i].zv.ZVX2;
// ASSERT(sizeof(actorTable[i].zv.ZVY1) == 2); // ASSERT(sizeof(actorTable[i].zv.ZVY1) == 2);
fwrite(&objectTable[i].zv.ZVY1,2,1,fHandle); fwrite(&ListObjets[i].zv.ZVY1,2,1,fHandle);
// ASSERT(sizeof(actorTable[i].zv.ZVY2) == 2); // ASSERT(sizeof(actorTable[i].zv.ZVY2) == 2);
fwrite(&objectTable[i].zv.ZVY2,2,1,fHandle); fwrite(&ListObjets[i].zv.ZVY2,2,1,fHandle);
// ASSERT(sizeof(actorTable[i].zv.ZVZ1) == 2); // ASSERT(sizeof(actorTable[i].zv.ZVZ1) == 2);
fwrite(&objectTable[i].zv.ZVZ1,2,1,fHandle); fwrite(&ListObjets[i].zv.ZVZ1,2,1,fHandle);
// ASSERT(sizeof(actorTable[i].zv.ZVZ2) == 2); // ASSERT(sizeof(actorTable[i].zv.ZVZ2) == 2);
fwrite(&objectTable[i].zv.ZVZ2,2,1,fHandle); fwrite(&ListObjets[i].zv.ZVZ2,2,1,fHandle);
ASSERT(sizeof(objectTable[i].screenXMin) == 2); ASSERT(sizeof(ListObjets[i].screenXMin) == 2);
fwrite(&objectTable[i].screenXMin,2,1,fHandle); fwrite(&ListObjets[i].screenXMin,2,1,fHandle);
ASSERT(sizeof(objectTable[i].screenYMin) == 2); ASSERT(sizeof(ListObjets[i].screenYMin) == 2);
fwrite(&objectTable[i].screenYMin,2,1,fHandle); fwrite(&ListObjets[i].screenYMin,2,1,fHandle);
ASSERT(sizeof(objectTable[i].screenXMax) == 2); ASSERT(sizeof(ListObjets[i].screenXMax) == 2);
fwrite(&objectTable[i].screenXMax,2,1,fHandle); fwrite(&ListObjets[i].screenXMax,2,1,fHandle);
ASSERT(sizeof(objectTable[i].screenYMax) == 2); ASSERT(sizeof(ListObjets[i].screenYMax) == 2);
fwrite(&objectTable[i].screenYMax,2,1,fHandle); fwrite(&ListObjets[i].screenYMax,2,1,fHandle);
ASSERT(sizeof(objectTable[i].roomX) == 2); ASSERT(sizeof(ListObjets[i].roomX) == 2);
fwrite(&objectTable[i].roomX,2,1,fHandle); fwrite(&ListObjets[i].roomX,2,1,fHandle);
ASSERT(sizeof(objectTable[i].roomY) == 2); ASSERT(sizeof(ListObjets[i].roomY) == 2);
fwrite(&objectTable[i].roomY,2,1,fHandle); fwrite(&ListObjets[i].roomY,2,1,fHandle);
ASSERT(sizeof(objectTable[i].roomZ) == 2); ASSERT(sizeof(ListObjets[i].roomZ) == 2);
fwrite(&objectTable[i].roomZ,2,1,fHandle); fwrite(&ListObjets[i].roomZ,2,1,fHandle);
ASSERT(sizeof(objectTable[i].worldX) == 2); ASSERT(sizeof(ListObjets[i].worldX) == 2);
fwrite(&objectTable[i].worldX,2,1,fHandle); fwrite(&ListObjets[i].worldX,2,1,fHandle);
ASSERT(sizeof(objectTable[i].worldY) == 2); ASSERT(sizeof(ListObjets[i].worldY) == 2);
fwrite(&objectTable[i].worldY,2,1,fHandle); fwrite(&ListObjets[i].worldY,2,1,fHandle);
ASSERT(sizeof(objectTable[i].worldZ) == 2); ASSERT(sizeof(ListObjets[i].worldZ) == 2);
fwrite(&objectTable[i].worldZ,2,1,fHandle); fwrite(&ListObjets[i].worldZ,2,1,fHandle);
ASSERT(sizeof(objectTable[i].alpha) == 2); ASSERT(sizeof(ListObjets[i].alpha) == 2);
fwrite(&objectTable[i].alpha,2,1,fHandle); fwrite(&ListObjets[i].alpha,2,1,fHandle);
ASSERT(sizeof(objectTable[i].beta) == 2); ASSERT(sizeof(ListObjets[i].beta) == 2);
fwrite(&objectTable[i].beta,2,1,fHandle); fwrite(&ListObjets[i].beta,2,1,fHandle);
ASSERT(sizeof(objectTable[i].gamma) == 2); ASSERT(sizeof(ListObjets[i].gamma) == 2);
fwrite(&objectTable[i].gamma,2,1,fHandle); fwrite(&ListObjets[i].gamma,2,1,fHandle);
ASSERT(sizeof(objectTable[i].room) == 2); ASSERT(sizeof(ListObjets[i].room) == 2);
fwrite(&objectTable[i].room,2,1,fHandle); fwrite(&ListObjets[i].room,2,1,fHandle);
ASSERT(sizeof(objectTable[i].stage) == 2); ASSERT(sizeof(ListObjets[i].stage) == 2);
fwrite(&objectTable[i].stage,2,1,fHandle); fwrite(&ListObjets[i].stage,2,1,fHandle);
ASSERT(sizeof(objectTable[i].lifeMode) == 2); ASSERT(sizeof(ListObjets[i].lifeMode) == 2);
fwrite(&objectTable[i].lifeMode,2,1,fHandle); fwrite(&ListObjets[i].lifeMode,2,1,fHandle);
ASSERT(sizeof(objectTable[i].life) == 2); ASSERT(sizeof(ListObjets[i].life) == 2);
fwrite(&objectTable[i].life,2,1,fHandle); fwrite(&ListObjets[i].life,2,1,fHandle);
ASSERT(sizeof(objectTable[i].CHRONO) == 4); ASSERT(sizeof(ListObjets[i].CHRONO) == 4);
fwrite(&objectTable[i].CHRONO,4,1,fHandle); fwrite(&ListObjets[i].CHRONO,4,1,fHandle);
ASSERT(sizeof(objectTable[i].ROOM_CHRONO) == 4); ASSERT(sizeof(ListObjets[i].ROOM_CHRONO) == 4);
fwrite(&objectTable[i].ROOM_CHRONO,4,1,fHandle); fwrite(&ListObjets[i].ROOM_CHRONO,4,1,fHandle);
ASSERT(sizeof(objectTable[i].ANIM) == 2); ASSERT(sizeof(ListObjets[i].ANIM) == 2);
fwrite(&objectTable[i].ANIM,2,1,fHandle); fwrite(&ListObjets[i].ANIM,2,1,fHandle);
ASSERT(sizeof(objectTable[i].animType) == 2); ASSERT(sizeof(ListObjets[i].animType) == 2);
fwrite(&objectTable[i].animType,2,1,fHandle); fwrite(&ListObjets[i].animType,2,1,fHandle);
ASSERT(sizeof(objectTable[i].animInfo) == 2); ASSERT(sizeof(ListObjets[i].animInfo) == 2);
fwrite(&objectTable[i].animInfo,2,1,fHandle); fwrite(&ListObjets[i].animInfo,2,1,fHandle);
ASSERT(sizeof(objectTable[i].newAnim) == 2); ASSERT(sizeof(ListObjets[i].newAnim) == 2);
fwrite(&objectTable[i].newAnim,2,1,fHandle); fwrite(&ListObjets[i].newAnim,2,1,fHandle);
ASSERT(sizeof(objectTable[i].newAnimType) == 2); ASSERT(sizeof(ListObjets[i].newAnimType) == 2);
fwrite(&objectTable[i].newAnimType,2,1,fHandle); fwrite(&ListObjets[i].newAnimType,2,1,fHandle);
ASSERT(sizeof(objectTable[i].newAnimInfo) == 2); ASSERT(sizeof(ListObjets[i].newAnimInfo) == 2);
fwrite(&objectTable[i].newAnimInfo,2,1,fHandle); fwrite(&ListObjets[i].newAnimInfo,2,1,fHandle);
ASSERT(sizeof(objectTable[i].frame) == 2); ASSERT(sizeof(ListObjets[i].frame) == 2);
fwrite(&objectTable[i].frame,2,1,fHandle); fwrite(&ListObjets[i].frame,2,1,fHandle);
ASSERT(sizeof(objectTable[i].numOfFrames) == 2); ASSERT(sizeof(ListObjets[i].numOfFrames) == 2);
fwrite(&objectTable[i].numOfFrames,2,1,fHandle); fwrite(&ListObjets[i].numOfFrames,2,1,fHandle);
ASSERT(sizeof(objectTable[i].END_FRAME) == 2); ASSERT(sizeof(ListObjets[i].END_FRAME) == 2);
fwrite(&objectTable[i].END_FRAME,2,1,fHandle); fwrite(&ListObjets[i].END_FRAME,2,1,fHandle);
ASSERT(sizeof(objectTable[i].flagEndAnim) == 2); ASSERT(sizeof(ListObjets[i].flagEndAnim) == 2);
fwrite(&objectTable[i].flagEndAnim,2,1,fHandle); fwrite(&ListObjets[i].flagEndAnim,2,1,fHandle);
ASSERT(sizeof(objectTable[i].trackMode) == 2); ASSERT(sizeof(ListObjets[i].trackMode) == 2);
fwrite(&objectTable[i].trackMode,2,1,fHandle); fwrite(&ListObjets[i].trackMode,2,1,fHandle);
ASSERT(sizeof(objectTable[i].trackNumber) == 2); ASSERT(sizeof(ListObjets[i].trackNumber) == 2);
fwrite(&objectTable[i].trackNumber,2,1,fHandle); fwrite(&ListObjets[i].trackNumber,2,1,fHandle);
ASSERT(sizeof(objectTable[i].MARK) == 2); ASSERT(sizeof(ListObjets[i].MARK) == 2);
fwrite(&objectTable[i].MARK,2,1,fHandle); fwrite(&ListObjets[i].MARK,2,1,fHandle);
ASSERT(sizeof(objectTable[i].positionInTrack) == 2); ASSERT(sizeof(ListObjets[i].positionInTrack) == 2);
fwrite(&objectTable[i].positionInTrack,2,1,fHandle); fwrite(&ListObjets[i].positionInTrack,2,1,fHandle);
ASSERT(sizeof(objectTable[i].stepX) == 2); ASSERT(sizeof(ListObjets[i].stepX) == 2);
fwrite(&objectTable[i].stepX,2,1,fHandle); fwrite(&ListObjets[i].stepX,2,1,fHandle);
ASSERT(sizeof(objectTable[i].stepY) == 2); ASSERT(sizeof(ListObjets[i].stepY) == 2);
fwrite(&objectTable[i].stepY,2,1,fHandle); fwrite(&ListObjets[i].stepY,2,1,fHandle);
ASSERT(sizeof(objectTable[i].stepZ) == 2); // 45 ASSERT(sizeof(ListObjets[i].stepZ) == 2); // 45
fwrite(&objectTable[i].stepZ,2,1,fHandle); fwrite(&ListObjets[i].stepZ,2,1,fHandle);
saveInterpolatedValue(&objectTable[i].YHandler,fHandle); saveInterpolatedValue(&ListObjets[i].YHandler,fHandle);
ASSERT(sizeof(objectTable[i].falling) == 2); ASSERT(sizeof(ListObjets[i].falling) == 2);
fwrite(&objectTable[i].falling,2,1,fHandle); fwrite(&ListObjets[i].falling,2,1,fHandle);
saveInterpolatedValue(&objectTable[i].rotate,fHandle); saveInterpolatedValue(&ListObjets[i].rotate,fHandle);
ASSERT(sizeof(objectTable[i].direction) == 2); ASSERT(sizeof(ListObjets[i].direction) == 2);
fwrite(&objectTable[i].direction,2,1,fHandle); fwrite(&ListObjets[i].direction,2,1,fHandle);
ASSERT(sizeof(objectTable[i].speed) == 2); ASSERT(sizeof(ListObjets[i].speed) == 2);
fwrite(&objectTable[i].speed,2,1,fHandle); fwrite(&ListObjets[i].speed,2,1,fHandle);
saveInterpolatedValue(&objectTable[i].speedChange,fHandle); saveInterpolatedValue(&ListObjets[i].speedChange,fHandle);
ASSERT(sizeof(objectTable[i].COL[0]) == 2); ASSERT(sizeof(ListObjets[i].COL[0]) == 2);
fwrite(&objectTable[i].COL[0],2,1,fHandle); fwrite(&ListObjets[i].COL[0],2,1,fHandle);
ASSERT(sizeof(objectTable[i].COL[1]) == 2); ASSERT(sizeof(ListObjets[i].COL[1]) == 2);
fwrite(&objectTable[i].COL[1],2,1,fHandle); fwrite(&ListObjets[i].COL[1],2,1,fHandle);
ASSERT(sizeof(objectTable[i].COL[2]) == 2); ASSERT(sizeof(ListObjets[i].COL[2]) == 2);
fwrite(&objectTable[i].COL[2],2,1,fHandle); fwrite(&ListObjets[i].COL[2],2,1,fHandle);
ASSERT(sizeof(objectTable[i].COL_BY) == 2); ASSERT(sizeof(ListObjets[i].COL_BY) == 2);
fwrite(&objectTable[i].COL_BY,2,1,fHandle); fwrite(&ListObjets[i].COL_BY,2,1,fHandle);
ASSERT(sizeof(objectTable[i].HARD_DEC) == 2); ASSERT(sizeof(ListObjets[i].HARD_DEC) == 2);
fwrite(&objectTable[i].HARD_DEC,2,1,fHandle); fwrite(&ListObjets[i].HARD_DEC,2,1,fHandle);
ASSERT(sizeof(objectTable[i].HARD_COL) == 2); ASSERT(sizeof(ListObjets[i].HARD_COL) == 2);
fwrite(&objectTable[i].HARD_COL,2,1,fHandle); fwrite(&ListObjets[i].HARD_COL,2,1,fHandle);
ASSERT(sizeof(objectTable[i].HIT) == 2); ASSERT(sizeof(ListObjets[i].HIT) == 2);
fwrite(&objectTable[i].HIT,2,1,fHandle); fwrite(&ListObjets[i].HIT,2,1,fHandle);
ASSERT(sizeof(objectTable[i].HIT_BY) == 2); ASSERT(sizeof(ListObjets[i].HIT_BY) == 2);
fwrite(&objectTable[i].HIT_BY,2,1,fHandle); fwrite(&ListObjets[i].HIT_BY,2,1,fHandle);
ASSERT(sizeof(objectTable[i].animActionType) == 2); ASSERT(sizeof(ListObjets[i].animActionType) == 2);
fwrite(&objectTable[i].animActionType,2,1,fHandle); fwrite(&ListObjets[i].animActionType,2,1,fHandle);
ASSERT(sizeof(objectTable[i].animActionANIM) == 2); ASSERT(sizeof(ListObjets[i].animActionANIM) == 2);
fwrite(&objectTable[i].animActionANIM,2,1,fHandle); fwrite(&ListObjets[i].animActionANIM,2,1,fHandle);
ASSERT(sizeof(objectTable[i].animActionFRAME) == 2); ASSERT(sizeof(ListObjets[i].animActionFRAME) == 2);
fwrite(&objectTable[i].animActionFRAME,2,1,fHandle); fwrite(&ListObjets[i].animActionFRAME,2,1,fHandle);
ASSERT(sizeof(objectTable[i].animActionParam) == 2); ASSERT(sizeof(ListObjets[i].animActionParam) == 2);
fwrite(&objectTable[i].animActionParam,2,1,fHandle); fwrite(&ListObjets[i].animActionParam,2,1,fHandle);
ASSERT(sizeof(objectTable[i].hitForce) == 2); ASSERT(sizeof(ListObjets[i].hitForce) == 2);
fwrite(&objectTable[i].hitForce,2,1,fHandle); fwrite(&ListObjets[i].hitForce,2,1,fHandle);
ASSERT(sizeof(objectTable[i].hotPointID) == 2); ASSERT(sizeof(ListObjets[i].hotPointID) == 2);
fwrite(&objectTable[i].hotPointID,2,1,fHandle); fwrite(&ListObjets[i].hotPointID,2,1,fHandle);
ASSERT(sizeof(objectTable[i].hotPoint.x) == 2); ASSERT(sizeof(ListObjets[i].hotPoint.x) == 2);
fwrite(&objectTable[i].hotPoint.x,2,1,fHandle); fwrite(&ListObjets[i].hotPoint.x,2,1,fHandle);
ASSERT(sizeof(objectTable[i].hotPoint.y) == 2); ASSERT(sizeof(ListObjets[i].hotPoint.y) == 2);
fwrite(&objectTable[i].hotPoint.x,2,1,fHandle); fwrite(&ListObjets[i].hotPoint.x,2,1,fHandle);
ASSERT(sizeof(objectTable[i].hotPoint.z) == 2); ASSERT(sizeof(ListObjets[i].hotPoint.z) == 2);
fwrite(&objectTable[i].hotPoint.x,2,1,fHandle); fwrite(&ListObjets[i].hotPoint.x,2,1,fHandle);
} }
fclose(fHandle); fclose(fHandle);

View File

@ -242,7 +242,7 @@ void processTrack(void)
} }
else else
{ {
tObject* followedActorPtr = &objectTable[followedActorIdx]; tObject* followedActorPtr = &ListObjets[followedActorIdx];
int targetRoomNumber = followedActorPtr->room; int targetRoomNumber = followedActorPtr->room;
int targetX = followedActorPtr->roomX; int targetX = followedActorPtr->roomX;

View File

@ -71,7 +71,7 @@ char* screenSm3;
char* screenSm4; char* screenSm4;
char* screenSm5; char* screenSm5;
std::array<tObject, NUM_MAX_OBJECT> objectTable; std::array<tObject, NUM_MAX_OBJECT> ListObjets;
s16 currentWorldTarget; s16 currentWorldTarget;

View File

@ -306,7 +306,7 @@ extern char* screenSm3;
extern char* screenSm4; extern char* screenSm4;
extern char* screenSm5; extern char* screenSm5;
extern std::array<tObject, NUM_MAX_OBJECT> objectTable; extern std::array<tObject, NUM_MAX_OBJECT> ListObjets;
extern s16 currentWorldTarget; extern s16 currentWorldTarget;