bitshifts be gone

This commit is contained in:
Woops 2020-10-17 23:36:06 -05:00
parent 17e9ce886a
commit e42f9ca80e
50 changed files with 277 additions and 277 deletions

View file

@ -68,7 +68,7 @@ static void TriggerAhmetDeathEffect(ITEM_INFO* item)
// cant be FALSE here because else it will be local space not world // cant be FALSE here because else it will be local space not world
// because of that it cant be GetJointAbsPosition() ! // because of that it cant be GetJointAbsPosition() !
meshCount = GetSpheres(item, CreatureSpheres, SPHERES_SPACE_WORLD, Matrix::Identity); meshCount = GetSpheres(item, CreatureSpheres, SPHERES_SPACE_WORLD, Matrix::Identity);
sphere = &CreatureSpheres[(Wibble >> 3) & 1]; sphere = &CreatureSpheres[(Wibble / 8) & 1];
for (int i = meshCount; i > 0; i--, sphere += 2) for (int i = meshCount; i > 0; i--, sphere += 2)
TriggerFireFlame(sphere->x, sphere->y, sphere->z, -1, 1); TriggerFireFlame(sphere->x, sphere->y, sphere->z, -1, 1);
@ -369,9 +369,9 @@ bool RespawnAhmet(short itemNumber)
FlashFadeB = 0; FlashFadeB = 0;
FlashFader = 32; FlashFader = 32;
item->pos.xPos = (item->itemFlags[0] << 10) + 512; item->pos.xPos = (item->itemFlags[0] * 1024) + 512;
item->pos.yPos = (item->itemFlags[1] << 8); item->pos.yPos = (item->itemFlags[1] * 256);
item->pos.zPos = (item->itemFlags[2] << 10) + 512; item->pos.zPos = (item->itemFlags[2] * 1024) + 512;
IsRoomOutside(item->pos.xPos, item->pos.yPos, item->pos.zPos); IsRoomOutside(item->pos.xPos, item->pos.yPos, item->pos.zPos);

View file

@ -1025,7 +1025,7 @@ void BaddyControl(short itemNum)
} }
if (currentCreature->enemy->objectNumber == ID_SMALLMEDI_ITEM) if (currentCreature->enemy->objectNumber == ID_SMALLMEDI_ITEM)
{ {
item->hitPoints += Objects[item->objectNumber].hitPoints >> 1; item->hitPoints += Objects[item->objectNumber].hitPoints / 2;
} }
else else
{ {

View file

@ -162,7 +162,7 @@ void CrocodileControl(short itemNumber)
AlertAllGuards(itemNumber); AlertAllGuards(itemNumber);
} }
boneAngle = angle << 2; boneAngle = angle * 4;
switch (item->currentAnimState) switch (item->currentAnimState)
{ {
case CROC_IDLE: case CROC_IDLE:

View file

@ -236,8 +236,8 @@ static void DemigodHammerAttack(int x, int y, int z, int something)
spark->gravity = -4 - (GetRandomControl() & 3); spark->gravity = -4 - (GetRandomControl() & 3);
spark->maxYvel = -4 - (GetRandomControl() & 3); spark->maxYvel = -4 - (GetRandomControl() & 3);
spark->dSize = ((GetRandomControl() & 0x3F) + 64); spark->dSize = ((GetRandomControl() & 0x3F) + 64);
spark->sSize = spark->dSize >> 3; spark->sSize = spark->dSize / 8;
spark->size = spark->dSize >> 3; spark->size = spark->dSize / 8;
angle += deltaAngle; angle += deltaAngle;
} }
@ -349,9 +349,9 @@ void DemigodControl(short itemNumber)
dz = abs(dz); dz = abs(dz);
if (dx <= dz) if (dx <= dz)
laraInfo.xAngle = phd_atan(dz + (dx >> 1), dy); laraInfo.xAngle = phd_atan(dz + (dx / 2), dy);
else else
laraInfo.xAngle = phd_atan(dx + (dz >> 1), dy); laraInfo.xAngle = phd_atan(dx + (dz / 2), dy);
} }
GetCreatureMood(item, &info, VIOLENT); GetCreatureMood(item, &info, VIOLENT);
@ -361,17 +361,17 @@ void DemigodControl(short itemNumber)
if (laraInfo.ahead) if (laraInfo.ahead)
{ {
joint0 = laraInfo.angle >> 1; joint0 = laraInfo.angle / 2;
joint1 = -laraInfo.xAngle; joint1 = -laraInfo.xAngle;
joint2 = laraInfo.angle >> 1; joint2 = laraInfo.angle / 2;
joint3 = laraInfo.angle >> 1; joint3 = laraInfo.angle / 2;
} }
else if (info.ahead) else if (info.ahead)
{ {
joint0 = info.angle >> 1; joint0 = info.angle / 2;
joint1 = -info.xAngle; joint1 = -info.xAngle;
joint2 = info.angle >> 1; joint2 = info.angle / 2;
joint3 = info.angle >> 1; joint3 = info.angle / 2;
} }
switch (item->currentAnimState) switch (item->currentAnimState)

View file

@ -397,6 +397,6 @@ void EnemyJeepControl(short itemNumber)
item->gravityStatus = false; item->gravityStatus = false;
} }
SoundEffect(SFX_TR4_JEEP_MOVE, &item->pos, (item->itemFlags[0] << 10) + 16777220); SoundEffect(SFX_TR4_JEEP_MOVE, &item->pos, (item->itemFlags[0] * 1024) + 16777220);
} }
} }

View file

@ -63,7 +63,7 @@ void GuideControl(short itemNumber)
GrenadeLauncherSpecialEffect1(pos.x, pos.y - 40, pos.z, -1, 7); GrenadeLauncherSpecialEffect1(pos.x, pos.y - 40, pos.z, -1, 7);
short random = GetRandomControl(); short random = GetRandomControl();
TriggerDynamicLight(pos.x, pos.y, pos.z, 15, 255 - ((random >> 4) & 0x1F), 192 - ((random >> 6) & 0x1F), random & 0x3F); TriggerDynamicLight(pos.x, pos.y, pos.z, 15, 255 - ((random / 16) & 0x1F), 192 - ((random / 64) & 0x1F), random & 0x3F);
if (item->animNumber == obj->animIndex + 61) if (item->animNumber == obj->animIndex + 61)
{ {
@ -72,8 +72,8 @@ void GuideControl(short itemNumber)
{ {
GrenadeLauncherSpecialEffect1( GrenadeLauncherSpecialEffect1(
(random & 0x3F) + pos.x - 32, (random & 0x3F) + pos.x - 32,
((random >> 3) & 0x3F) + pos.y - 128, ((random / 8) & 0x3F) + pos.y - 128,
pos.z + ((random >> 6) & 0x3F) - 32, pos.z + ((random / 64) & 0x3F) - 32,
-1, -1,
1); 1);
} }
@ -109,9 +109,9 @@ void GuideControl(short itemNumber)
short rot2 = 0; short rot2 = 0;
if (dx <= dz) if (dx <= dz)
laraInfo.xAngle = phd_atan(dz + (dx >> 1), dy); laraInfo.xAngle = phd_atan(dz + (dx / 2), dy);
else else
laraInfo.xAngle = phd_atan(dx + (dz >> 1), dy); laraInfo.xAngle = phd_atan(dx + (dz / 2), dy);
ITEM_INFO* foundEnemy = NULL; ITEM_INFO* foundEnemy = NULL;
@ -183,19 +183,19 @@ void GuideControl(short itemNumber)
creature->LOT.isJumping = false; creature->LOT.isJumping = false;
creature->flags = 0; creature->flags = 0;
creature->maximumTurn = 0; creature->maximumTurn = 0;
joint2 = info.angle >> 1; joint2 = info.angle / 2;
if (laraInfo.ahead) if (laraInfo.ahead)
{ {
joint0 = laraInfo.angle >> 1; joint0 = laraInfo.angle / 2;
joint1 = laraInfo.xAngle >> 1; joint1 = laraInfo.xAngle / 2;
joint2 = laraInfo.angle >> 1; joint2 = laraInfo.angle / 2;
} }
else if (info.ahead) else if (info.ahead)
{ {
joint0 = info.angle >> 1; joint0 = info.angle / 2;
joint1 = info.xAngle >> 1; joint1 = info.xAngle / 2;
joint2 = info.angle >> 1; joint2 = info.angle / 2;
} }
/*if (Objects[ID_WRAITH1].loaded & 0x10000) /*if (Objects[ID_WRAITH1].loaded & 0x10000)
@ -457,8 +457,8 @@ void GuideControl(short itemNumber)
{ {
GrenadeLauncherSpecialEffect1( GrenadeLauncherSpecialEffect1(
(random & 0x3F) + pos1.x - 64, (random & 0x3F) + pos1.x - 64,
((random >> 5) & 0x3F) + pos1.y - 96, ((random / 32) & 0x3F) + pos1.y - 96,
((random >> 10) & 0x3F) + pos1.z - 64, ((random / 1024) & 0x3F) + pos1.z - 64,
-1, -1,
7); 7);
@ -467,8 +467,8 @@ void GuideControl(short itemNumber)
pos1.y - 64, pos1.y - 64,
pos1.z - 32, pos1.z - 32,
10, 10,
192 - ((random >> 4) & 0x1F), 192 - ((random / 16) & 0x1F),
128 - ((random >> 6) & 0x1F), 128 - ((random / 64) & 0x1F),
random & 0x1F); random & 0x1F);
item->itemFlags[1] = 2; item->itemFlags[1] = 2;
@ -477,24 +477,24 @@ void GuideControl(short itemNumber)
else else
{ {
TriggerMetalSparks(pos1.x, pos1.y, pos1.z, -1, -1, 0, 1); TriggerMetalSparks(pos1.x, pos1.y, pos1.z, -1, -1, 0, 1);
TriggerDynamicLight(pos1.x, pos1.y, pos1.z, 10, random & 0x1F, 96 - ((random >> 6) & 0x1F), 128 - ((random >> 4) & 0x1F)); TriggerDynamicLight(pos1.x, pos1.y, pos1.z, 10, random & 0x1F, 96 - ((random / 64) & 0x1F), 128 - ((random / 16) & 0x1F));
} }
} }
else else
{ {
TriggerDynamicLight(pos1.x - 32, pos1.y - 64, pos1.z - 32, 10, 192 - ((random >> 4) & 0x1F), 128 - ((random >> 6) & 0x1F), random & 0x1F); TriggerDynamicLight(pos1.x - 32, pos1.y - 64, pos1.z - 32, 10, 192 - ((random / 16) & 0x1F), 128 - ((random / 64) & 0x1F), random & 0x1F);
GrenadeLauncherSpecialEffect1( GrenadeLauncherSpecialEffect1(
(random & 0x3F) + pos1.x - 64, (random & 0x3F) + pos1.x - 64,
((random >> 5) & 0x3F) + pos1.y - 96, ((random / 32) & 0x3F) + pos1.y - 96,
((random >> 10) & 0x3F) + pos1.z - 64, ((random / 1024) & 0x3F) + pos1.z - 64,
-1, -1,
7); 7);
} }
} }
else else
{ {
TriggerDynamicLight(pos1.x, pos1.y, pos1.z, 10, random & 0x1F, 96 - ((random >> 6) & 0x1F), 128 - ((random >> 4) & 0x1F)); TriggerDynamicLight(pos1.x, pos1.y, pos1.z, 10, random & 0x1F, 96 - ((random / 64) & 0x1F), 128 - ((random / 16) & 0x1F));
TriggerMetalSparks(pos1.x, pos1.y, pos1.z, -1, -1, 0, 1); TriggerMetalSparks(pos1.x, pos1.y, pos1.z, -1, -1, 0, 1);
} }
@ -513,9 +513,9 @@ void GuideControl(short itemNumber)
case 31: case 31:
if (info.ahead) if (info.ahead)
{ {
joint0 = info.angle >> 1; joint0 = info.angle / 2;
joint2 = info.angle >> 1; joint2 = info.angle / 2;
joint1 = info.xAngle >> 1; joint1 = info.xAngle / 2;
} }
creature->maximumTurn = 0; creature->maximumTurn = 0;

View file

@ -364,8 +364,8 @@ void HarpyControl(short itemNumber)
if (info.ahead) if (info.ahead)
{ {
joint0 = info.angle >> 1; joint0 = info.angle / 2;
joint1 = info.angle >> 1; joint1 = info.angle / 2;
joint0 = info.xAngle; joint0 = info.xAngle;
} }

View file

@ -30,7 +30,7 @@ static void HorsemanSparks(PHD_VECTOR* pos, int param1, int num)
spark->sB = (r & 0xF) + 16; spark->sB = (r & 0xF) + 16;
spark->sR = 0; spark->sR = 0;
spark->dG = 96; spark->dG = 96;
spark->dB = ((r >> 4) & 0x1F) + 48; spark->dB = ((r / 16) & 0x1F) + 48;
spark->dR = 0; spark->dR = 0;
spark->colFadeSpeed = 2; spark->colFadeSpeed = 2;
spark->fadeToBlack = 4; spark->fadeToBlack = 4;
@ -43,7 +43,7 @@ static void HorsemanSparks(PHD_VECTOR* pos, int param1, int num)
spark->friction = 34; spark->friction = 34;
spark->yVel = (r & 0xFFF) - 2048; spark->yVel = (r & 0xFFF) - 2048;
spark->flags = SP_NONE; spark->flags = SP_NONE;
spark->gravity = (r >> 7) & 0x1F; spark->gravity = (r / 128) & 0x1F;
spark->maxYvel = 0; spark->maxYvel = 0;
spark->zVel = phd_cos((r & 0x7FF) + param1 - 1024) * 4096; spark->zVel = phd_cos((r & 0x7FF) + param1 - 1024) * 4096;
spark->xVel = -phd_sin((r & 0x7FF) + param1 - 1024) * 4096; spark->xVel = -phd_sin((r & 0x7FF) + param1 - 1024) * 4096;
@ -63,7 +63,7 @@ static void HorsemanSparks(PHD_VECTOR* pos, int param1, int num)
spark->dR = 0; spark->dR = 0;
spark->colFadeSpeed = 2; spark->colFadeSpeed = 2;
spark->fadeToBlack = 4; spark->fadeToBlack = 4;
spark->dB = ((r >> 4) & 0x1F) + 48; spark->dB = ((r / 16) & 0x1F) + 48;
spark->life = 9; spark->life = 9;
spark->sLife = 9; spark->sLife = 9;
spark->transType = COLADD; spark->transType = COLADD;
@ -71,8 +71,8 @@ static void HorsemanSparks(PHD_VECTOR* pos, int param1, int num)
spark->y = pos->y; spark->y = pos->y;
spark->z = pos->z; spark->z = pos->z;
spark->yVel = (r & 0xFFF) - 2048; spark->yVel = (r & 0xFFF) - 2048;
spark->gravity = (r >> 7) & 0x1F; spark->gravity = (r / 128) & 0x1F;
spark->rotAng = r >> 3; spark->rotAng = r / 8;
if (r & 1) if (r & 1)
{ {
spark->rotAdd = -16 - (r & 0xF); spark->rotAdd = -16 - (r & 0xF);
@ -83,7 +83,7 @@ static void HorsemanSparks(PHD_VECTOR* pos, int param1, int num)
} }
spark->scalar = 3; spark->scalar = 3;
spark->friction = 34; spark->friction = 34;
spark->sSize = spark->size = ((r >> 5) & 7) + 4; spark->sSize = spark->size = ((r / 32) & 7) + 4;
spark->dSize = spark->sSize / 2; spark->dSize = spark->sSize / 2;
spark->flags = 26; spark->flags = 26;
spark->maxYvel = 0; spark->maxYvel = 0;

View file

@ -85,8 +85,8 @@ void KnightTemplarControl(short itemNumber)
if (info.ahead) if (info.ahead)
{ {
joint0 = info.angle >> 1; joint0 = info.angle / 2;
joint2 = info.angle >> 1; joint2 = info.angle / 2;
joint1 = info.xAngle; joint1 = info.xAngle;
} }

View file

@ -146,8 +146,8 @@ void MummyControl(short itemNumber)
if (info.ahead) if (info.ahead)
{ {
joint0 = info.angle >> 1; joint0 = info.angle / 2;
joint2 = info.angle >> 1; joint2 = info.angle / 2;
joint1 = info.xAngle; joint1 = info.xAngle;
} }

View file

@ -72,11 +72,11 @@ void TriggerMutantRocketEffects(short fxNumber, short xVel, short yVel, short zV
color = (GetRandomControl() & 0x3F) - 128; color = (GetRandomControl() & 0x3F) - 128;
sptr->sB = 0; sptr->sB = 0;
sptr->sR = color; sptr->sR = color;
sptr->sG = color >> 1; sptr->sG = color / 2;
color = (GetRandomControl() & 0x3F) - 128; color = (GetRandomControl() & 0x3F) - 128;
sptr->dB = 0; sptr->dB = 0;
sptr->dR = color; sptr->dR = color;
sptr->dG = color >> 1; sptr->dG = color / 2;
sptr->fadeToBlack = 8; sptr->fadeToBlack = 8;
sptr->colFadeSpeed = (GetRandomControl() & 3) + 8; sptr->colFadeSpeed = (GetRandomControl() & 3) + 8;
sptr->transType = COLADD; sptr->transType = COLADD;
@ -107,7 +107,7 @@ void TriggerMutantRocketEffects(short fxNumber, short xVel, short yVel, short zV
size = (GetRandomControl() & 0xF) + 128; size = (GetRandomControl() & 0xF) + 128;
sptr->size = size; sptr->size = size;
sptr->sSize = size; sptr->sSize = size;
sptr->dSize = size >> 2; sptr->dSize = size / 4;
} }
static void ShootFireball(PHD_3DPOS* src, MissileRotationType rotation, short roomNumber, int timer) static void ShootFireball(PHD_3DPOS* src, MissileRotationType rotation, short roomNumber, int timer)

View file

@ -70,7 +70,7 @@ static void SentryGunThrowFire(ITEM_INFO* item)
} }
spark->scalar = 3; spark->scalar = 3;
spark->dSize = v * ((GetRandomControl() & 7) + 60) >> 8; spark->dSize = (v * ((GetRandomControl() & 7) + 60)) / 256;
spark->sSize = spark->dSize / 8; spark->sSize = spark->dSize / 8;
spark->size = spark->dSize / 8; spark->size = spark->dSize / 8;
} }
@ -146,7 +146,7 @@ void SentryGunControl(short itemNum)
{ {
// Throw fire // Throw fire
SentryGunThrowFire(item); SentryGunThrowFire(item);
c = phd_sin((GlobalCounter & 0x1F) << 11) * 4096; c = phd_sin((GlobalCounter & 0x1F) * 2048) * 4096;
} }
else else
{ {

View file

@ -31,8 +31,8 @@ static void WakeUpSkeleton(ITEM_INFO* item)
fx->pos.zPos = (byte)GetRandomControl() + item->pos.zPos - 128; fx->pos.zPos = (byte)GetRandomControl() + item->pos.zPos - 128;
fx->roomNumber = item->roomNumber; fx->roomNumber = item->roomNumber;
fx->pos.yRot = 2 * GetRandomControl(); fx->pos.yRot = 2 * GetRandomControl();
fx->speed = GetRandomControl() >> 11; fx->speed = GetRandomControl() / 2048;
fx->fallspeed = -(GetRandomControl() >> 10); fx->fallspeed = -(GetRandomControl() / 1024);
fx->frameNumber = Objects[103].meshIndex; fx->frameNumber = Objects[103].meshIndex;
fx->objectNumber = ID_BODY_PART; fx->objectNumber = ID_BODY_PART;
fx->shade = 0x4210; fx->shade = 0x4210;

View file

@ -48,7 +48,7 @@ void SphinxControl(short itemNumber)
{ {
MESH_INFO* mesh = &room->mesh[i]; MESH_INFO* mesh = &room->mesh[i];
if (mesh->z >> 10 == z >> 10 && mesh->x >> 10 == x >> 10 && mesh->staticNumber >= 50) if (((mesh->z / 1024) == (z / 1024)) && ((mesh->x / 1024) == (x / 1024)) && mesh->staticNumber >= 50)
{ {
ShatterObject(NULL, mesh, -64, item->roomNumber, 0); ShatterObject(NULL, mesh, -64, item->roomNumber, 0);
SoundEffect(SFX_TR4_HIT_ROCK, &item->pos, 0); SoundEffect(SFX_TR4_HIT_ROCK, &item->pos, 0);

View file

@ -252,9 +252,9 @@ void VonCroyControl(short itemNumber)
short rot2 = 0; short rot2 = 0;
if (dx <= dz) if (dx <= dz)
laraInfo.xAngle = phd_atan(dz + (dx >> 1), dy); laraInfo.xAngle = phd_atan(dz + (dx / 2), dy);
else else
laraInfo.xAngle = phd_atan(dx + (dz >> 1), dy); laraInfo.xAngle = phd_atan(dx + (dz / 2), dy);
} }
if (abs(laraInfo.angle) < 6144 && laraInfo.distance < SQUARE(1024)) if (abs(laraInfo.angle) < 6144 && laraInfo.distance < SQUARE(1024))
@ -663,8 +663,8 @@ void VonCroyControl(short itemNumber)
case STATE_VON_CROY_KNIFE_ATTACK_HIGH: case STATE_VON_CROY_KNIFE_ATTACK_HIGH:
if (info.ahead) if (info.ahead)
{ {
joint2 = info.angle >> 1; joint2 = info.angle / 2;
joint1 = info.xAngle >> 1; joint1 = info.xAngle / 2;
joint0 = joint2; joint0 = joint2;
} }
@ -733,8 +733,8 @@ void VonCroyControl(short itemNumber)
case STATE_VON_CROY_KNIFE_ATTACK_LOW: case STATE_VON_CROY_KNIFE_ATTACK_LOW:
if (info.ahead) if (info.ahead)
{ {
joint2 = info.angle >> 1; joint2 = info.angle / 2;
joint1 = info.xAngle >> 1; joint1 = info.xAngle / 2;
joint0 = joint2; joint0 = joint2;
} }
@ -785,13 +785,13 @@ void VonCroyControl(short itemNumber)
case 32: case 32:
if (info.ahead) if (info.ahead)
{ {
joint2 = info.angle >> 1; joint2 = info.angle / 2;
joint1 = info.xAngle; joint1 = info.xAngle;
joint0 = joint2; joint0 = joint2;
} }
creature->maximumTurn = 0; creature->maximumTurn = 0;
ClampRotation(&item->pos, info.angle >> 1, ANGLE(6)); ClampRotation(&item->pos, info.angle / 2, ANGLE(6));
if (item->animNumber == Objects[item->objectNumber].animIndex + 47) if (item->animNumber == Objects[item->objectNumber].animIndex + 47)
{ {

View file

@ -89,8 +89,8 @@ void WildBoarControl(short itemNumber)
if (info.ahead) if (info.ahead)
{ {
joint1 = info.angle >> 1; joint1 = info.angle / 2;
joint3 = info.angle >> 1; joint3 = info.angle / 2;
} }
switch (item->currentAnimState) switch (item->currentAnimState)
@ -103,7 +103,7 @@ void WildBoarControl(short itemNumber)
} }
else if (GetRandomControl() & 0x7F) else if (GetRandomControl() & 0x7F)
{ {
joint1 = AIGuard(creature) >> 1; joint1 = AIGuard(creature) / 2;
joint3 = joint1; joint3 = joint1;
} }
else else

View file

@ -64,7 +64,7 @@ void WraithControl(short itemNumber)
y = target->pos.yPos; y = target->pos.yPos;
z = target->pos.zPos - item->pos.zPos; z = target->pos.zPos - item->pos.zPos;
distance = SQUARE(x) + SQUARE(z); distance = SQUARE(x) + SQUARE(z);
dy = abs((distance >> 13) - 512); dy = abs((distance / 8192) - 512);
} }
else else
{ {
@ -74,7 +74,7 @@ void WraithControl(short itemNumber)
z = room->z + room->xSize * 1024 / 2 - item->pos.zPos; z = room->z + room->xSize * 1024 / 2 - item->pos.zPos;
distance = SQUARE(x) + SQUARE(z); distance = SQUARE(x) + SQUARE(z);
dy = abs((distance >> 13) - 768); dy = abs((distance / 8192) - 768);
y = room->y + ((room->minfloor - room->maxceiling) / 2); y = room->y + ((room->minfloor - room->maxceiling) / 2);
} }
@ -327,13 +327,13 @@ void WraithControl(short itemNumber)
int j = 0; int j = 0;
for (int i = WRAITH_COUNT - 1; i > 0; i--) for (int i = WRAITH_COUNT - 1; i > 0; i--)
{ {
creature[i - 1].xPos += (creature[i - 1].xRot >> 4); creature[i - 1].xPos += (creature[i - 1].xRot / 16);
creature[i - 1].yPos += (creature[i - 1].yRot >> 4); creature[i - 1].yPos += (creature[i - 1].yRot / 16);
creature[i - 1].zPos += (creature[i - 1].zRot >> 4); creature[i - 1].zPos += (creature[i - 1].zRot / 16);
creature[i - 1].xRot -= (creature[i - 1].xRot >> 4); creature[i - 1].xRot -= (creature[i - 1].xRot / 16);
creature[i - 1].yRot -= (creature[i - 1].yRot >> 4); creature[i - 1].yRot -= (creature[i - 1].yRot / 16);
creature[i - 1].zRot -= (creature[i - 1].zRot >> 4); creature[i - 1].zRot -= (creature[i - 1].zRot / 16);
creature[i].xPos = creature[i - 1].xPos; creature[i].xPos = creature[i - 1].xPos;
creature[i].yPos = creature[i - 1].yPos; creature[i].yPos = creature[i - 1].yPos;
@ -552,7 +552,7 @@ void WraithWallsEffect(int x, int y, int z, short yrot, short objNumber)
short size = (GetRandomControl() & 0x1F) + 48; short size = (GetRandomControl() & 0x1F) + 48;
spark->sSize = size; spark->sSize = size;
spark->size = size; spark->size = size;
spark->dSize = size >> 2; spark->dSize = size / 4;
} }
} }

View file

@ -40,8 +40,8 @@ void ElementPuzzleControl(short itemNumber)
on = 1; on = 1;
if (on <= 255) if (on <= 255)
{ {
r = r * on >> 8; r = (r * on) / 256;
g = g * on >> 8; g = (g * on) / 256;
} }
} }
else else

View file

@ -38,7 +38,7 @@ void BladeCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll)
DoBloodSplat((GetRandomControl() & 0x3F) + l->pos.xPos - 32, DoBloodSplat((GetRandomControl() & 0x3F) + l->pos.xPos - 32,
l->pos.yPos - (GetRandomControl() & 0x1FF) - 256, l->pos.yPos - (GetRandomControl() & 0x1FF) - 256,
(GetRandomControl() & 0x3F) + l->pos.zPos - 32, (GetRandomControl() & 0x3F) + l->pos.zPos - 32,
(GetRandomControl() & 3) + (item->itemFlags[3] >> 5) + 2, (GetRandomControl() & 3) + (item->itemFlags[3] / 32) + 2,
2 * GetRandomControl(), 2 * GetRandomControl(),
l->roomNumber); l->roomNumber);
} }

View file

@ -15,9 +15,9 @@ void InitialiseSlicerDicer(short itemNum)
item->pos.xPos += dx; item->pos.xPos += dx;
item->pos.zPos += dz; item->pos.zPos += dz;
item->itemFlags[0] = item->pos.xPos >> 8; item->itemFlags[0] = item->pos.xPos / 256;
item->itemFlags[1] = (item->pos.yPos - 4608) >> 8; item->itemFlags[1] = (item->pos.yPos - 4608) / 256;
item->itemFlags[2] = item->pos.zPos >> 8; item->itemFlags[2] = item->pos.zPos / 256;
item->itemFlags[3] = 50; item->itemFlags[3] = 50;
} }
@ -30,9 +30,9 @@ void SlicerDicerControl(short itemNum)
int factor = 4608 * phd_cos(item->triggerFlags) * phd_cos(item->pos.yRot); int factor = 4608 * phd_cos(item->triggerFlags) * phd_cos(item->pos.yRot);
item->pos.xPos = (item->itemFlags[0] << 8) + factor; item->pos.xPos = (item->itemFlags[0] * 256) + factor;
item->pos.yPos = (item->itemFlags[1] << 8) - 4608 * phd_sin(item->triggerFlags); item->pos.yPos = (item->itemFlags[1] * 256) - 4608 * phd_sin(item->triggerFlags);
item->pos.zPos = (item->itemFlags[2] << 8) + factor; item->pos.zPos = (item->itemFlags[2] * 256) + factor;
item->triggerFlags += 170; item->triggerFlags += 170;

View file

@ -92,9 +92,9 @@ void StargateCollision(short itemNum, ITEM_INFO* l, COLL_INFO* c)
} }
} }
result >>= 1; result /= 2;
j++; j++;
flags >>= 1; flags /= 2;
} while (result); } while (result);
} }

View file

@ -182,10 +182,10 @@ void UpdateBats()
if (bat->counter > 90) if (bat->counter > 90)
{ {
short speed = bat->speed << 7; short speed = bat->speed * 128;
short xAngle = abs(angles[1] - bat->pos.xRot) >> 3; short xAngle = abs(angles[1] - bat->pos.xRot) / 8;
short yAngle = abs(angles[0] - bat->pos.yRot) >> 3; short yAngle = abs(angles[0] - bat->pos.yRot) / 8;
if (xAngle < -speed) if (xAngle < -speed)
xAngle = -speed; xAngle = -speed;

View file

@ -179,7 +179,7 @@ void UpdateRats()
rat->pos.yRot += 512; rat->pos.yRot += 512;
else else
rat->pos.yRot -= 512; rat->pos.yRot -= 512;
rat->speed = 48 - (abs(angle) >> 10); rat->speed = 48 - (abs(angle) / 1024);
} }
else else
{ {

View file

@ -38,7 +38,7 @@ void InitialiseSmokeEmitter(short itemNumber)
} }
else if (item->triggerFlags & 8) else if (item->triggerFlags & 8)
{ {
item->itemFlags[0] = item->triggerFlags >> 4; item->itemFlags[0] = item->triggerFlags / 16;
if (item->pos.yRot > 0) if (item->pos.yRot > 0)
{ {
@ -59,7 +59,7 @@ void InitialiseSmokeEmitter(short itemNumber)
item->pos.xPos -= 256; item->pos.xPos -= 256;
} }
if ((signed short)(item->triggerFlags >> 4) <= 0) if ((signed short)(item->triggerFlags / 16) <= 0)
{ {
item->itemFlags[2] = 4096; item->itemFlags[2] = 4096;
item->triggerFlags |= 4; item->triggerFlags |= 4;

View file

@ -175,7 +175,7 @@ void UpdateSpiders()
spider->pos.yRot += 512; spider->pos.yRot += 512;
else else
spider->pos.yRot -= 512; spider->pos.yRot -= 512;
spider->speed = 48 - (abs(angle) >> 10); spider->speed = 48 - (abs(angle) / 1024);
} }
else else
{ {

View file

@ -43,8 +43,8 @@ static void TriggerAutoGunSmoke(PHD_VECTOR* pos, char shade)
spark->gravity = -4 - (GetRandomControl() & 3); spark->gravity = -4 - (GetRandomControl() & 3);
spark->mirror = 0; spark->mirror = 0;
spark->dSize = (GetRandomControl() & 0xF) + 24; spark->dSize = (GetRandomControl() & 0xF) + 24;
spark->sSize = spark->dSize >> 2; spark->sSize = spark->dSize / 4;
spark->size = spark->dSize >> 2; spark->size = spark->dSize / 4;
} }
void AutoGunsControl(short itemNumber) void AutoGunsControl(short itemNumber)
@ -166,7 +166,7 @@ void AutoGunsControl(short itemNumber)
} }
if (item->itemFlags[2]) if (item->itemFlags[2])
TriggerAutoGunSmoke((PHD_VECTOR*)&pos1, item->itemFlags[2] >> 4); TriggerAutoGunSmoke((PHD_VECTOR*)&pos1, item->itemFlags[2] / 16);
} }
else else
{ {

View file

@ -100,9 +100,9 @@ void ControlChef(short itemNumber)
if (info.ahead) if (info.ahead)
{ {
joint0 = info.angle >> 1; joint0 = info.angle / 2;
//joint1 = info.xAngle; //joint1 = info.xAngle;
joint2 = info.angle >> 1; joint2 = info.angle / 2;
} }
creature->maximumTurn = 0; creature->maximumTurn = 0;

View file

@ -65,13 +65,13 @@ static void TriggerHitmanSparks(int x, int y, int z, short xv, short yv, short z
spark->scalar = 1; spark->scalar = 1;
spark->flags = SP_SCALE; spark->flags = SP_SCALE;
spark->x = (rand() & 7) + x - 3; spark->x = (rand() & 7) + x - 3;
spark->y = ((rand() >> 3) & 7) + y - 3; spark->y = ((rand() / 8) & 7) + y - 3;
spark->z = ((rand() >> 6) & 7) + z - 3; spark->z = ((rand() / 64) & 7) + z - 3;
spark->xVel = (byte)(rand() >> 2) + xv - 128; spark->xVel = (byte)(rand() / 4) + xv - 128;
spark->yVel = (byte)(rand() >> 4) + yv - 128; spark->yVel = (byte)(rand() / 16) + yv - 128;
spark->zVel = (byte)(rand() >> 6) + zv - 128; spark->zVel = (byte)(rand() / 64) + zv - 128;
spark->sSize = spark->size= ((rand() >> 9) & 3) + 4; spark->sSize = spark->size= ((rand() / 512) & 3) + 4;
spark->dSize = ((rand() >> 12) & 1) + 1; spark->dSize = ((rand() / 4096) & 1) + 1;
spark->maxYvel = 0; spark->maxYvel = 0;
spark->gravity = 0; spark->gravity = 0;
} }
@ -278,7 +278,7 @@ void HitmanControl(short itemNumber)
if (info.ahead && item->aiBits != GUARD) if (info.ahead && item->aiBits != GUARD)
{ {
joint0 = info.angle >> 1; joint0 = info.angle / 2;
joint1 = info.xAngle; joint1 = info.xAngle;
} }
@ -467,8 +467,8 @@ void HitmanControl(short itemNumber)
break; break;
case STATE_HITMAN_AIM: case STATE_HITMAN_AIM:
joint0 = laraInfo.angle >> 1; joint0 = laraInfo.angle / 2;
joint2 = laraInfo.angle >> 1; joint2 = laraInfo.angle / 2;
creature->flags = 0; creature->flags = 0;
creature->maximumTurn = 0; creature->maximumTurn = 0;
@ -496,8 +496,8 @@ void HitmanControl(short itemNumber)
break; break;
case STATE_HITMAN_FIRE: case STATE_HITMAN_FIRE:
joint0 = laraInfo.angle >> 1; joint0 = laraInfo.angle / 2;
joint2 = laraInfo.angle >> 1; joint2 = laraInfo.angle / 2;
if (info.ahead) if (info.ahead)
joint1 = info.xAngle; joint1 = info.xAngle;

View file

@ -84,7 +84,7 @@ void Tr5DogControl(short itemNumber)
CreatureMood(item, &info, VIOLENT); CreatureMood(item, &info, VIOLENT);
if (!creature->mood) if (!creature->mood)
creature->maximumTurn >>= 1; creature->maximumTurn /= 2;
angle = CreatureTurn(item, creature->maximumTurn); angle = CreatureTurn(item, creature->maximumTurn);
joint0 = 4 * angle; joint0 = 4 * angle;

View file

@ -63,8 +63,8 @@ void InvisibleGhostControl(short itemNumber)
if (info.ahead) if (info.ahead)
{ {
joint0 = info.angle >> 1; joint0 = info.angle / 2;
joint2 = info.angle >> 1; joint2 = info.angle / 2;
joint1 = info.xAngle; joint1 = info.xAngle;
} }

View file

@ -101,8 +101,8 @@ void ControlGladiator(short itemNumber)
if (info.ahead) if (info.ahead)
{ {
joint0 = info.angle >> 1; joint0 = info.angle / 2;
joint2 = info.angle >> 1; joint2 = info.angle / 2;
joint1 = info.xAngle; joint1 = info.xAngle;
} }

View file

@ -368,7 +368,7 @@ void GuardControl(short itemNum)
{ {
if (!(item->aiBits & FOLLOW)) if (!(item->aiBits & FOLLOW))
{ {
joint0 = info.angle >> 1; joint0 = info.angle / 2;
joint1 = info.xAngle; joint1 = info.xAngle;
} }
} }
@ -458,8 +458,8 @@ void GuardControl(short itemNum)
break; break;
case STATE_GUARD_FIRE_SINGLE: case STATE_GUARD_FIRE_SINGLE:
case STATE_GUARD_FIRE_FAST: case STATE_GUARD_FIRE_FAST:
joint0 = laraInfo.angle >> 1; joint0 = laraInfo.angle / 2;
joint2 = laraInfo.angle >> 1; joint2 = laraInfo.angle / 2;
if (info.ahead) if (info.ahead)
joint1 = info.xAngle; joint1 = info.xAngle;
if (abs(info.angle) >= ANGLE(2)) if (abs(info.angle) >= ANGLE(2))
@ -502,8 +502,8 @@ void GuardControl(short itemNum)
break; break;
case STATE_GUARD_AIM: case STATE_GUARD_AIM:
creature->flags = 0; creature->flags = 0;
joint0 = laraInfo.angle >> 1; joint0 = laraInfo.angle / 2;
joint2 = laraInfo.angle >> 1; joint2 = laraInfo.angle / 2;
if (info.ahead) if (info.ahead)
joint1 = info.xAngle; joint1 = info.xAngle;
if (abs(info.angle) >= ANGLE(2)) if (abs(info.angle) >= ANGLE(2))
@ -935,8 +935,8 @@ void SniperControl(short itemNumber)
angle = CreatureTurn(item, creature->maximumTurn); angle = CreatureTurn(item, creature->maximumTurn);
if (info.ahead) if (info.ahead)
{ {
joint0 = info.angle >> 1; joint0 = info.angle / 2;
joint2 = info.angle >> 1; joint2 = info.angle / 2;
joint1 = info.xAngle; joint1 = info.xAngle;
} }
creature->maximumTurn = 0; creature->maximumTurn = 0;
@ -1107,7 +1107,7 @@ void Mafia2Control(short itemNum)
creature->maximumTurn = 0; creature->maximumTurn = 0;
if (info.ahead && !(item->aiBits & GUARD)) if (info.ahead && !(item->aiBits & GUARD))
{ {
joint0 = info.angle >> 1; joint0 = info.angle / 2;
joint1 = info.xAngle; joint1 = info.xAngle;
} }
if (item->aiBits & GUARD) if (item->aiBits & GUARD)
@ -1191,8 +1191,8 @@ void Mafia2Control(short itemNum)
} }
break; break;
case STATE_MAFIA2_FIRE: case STATE_MAFIA2_FIRE:
joint0 = laraInfo.angle >> 1; joint0 = laraInfo.angle / 2;
joint2 = laraInfo.angle >> 1; joint2 = laraInfo.angle / 2;
if (info.ahead) if (info.ahead)
joint1 = info.xAngle; joint1 = info.xAngle;
creature->maximumTurn = 0; creature->maximumTurn = 0;
@ -1209,14 +1209,14 @@ void Mafia2Control(short itemNum)
} }
if (!creature->flags) if (!creature->flags)
{ {
ShotLara(item, &info, &ArmedBaddy2Gun, laraInfo.angle >> 1, 35); ShotLara(item, &info, &ArmedBaddy2Gun, laraInfo.angle / 2, 35);
creature->flags = 1; creature->flags = 1;
item->firedWeapon = 2; item->firedWeapon = 2;
} }
break; break;
case STATE_MAFIA2_AIM: case STATE_MAFIA2_AIM:
joint0 = laraInfo.angle >> 1; joint0 = laraInfo.angle / 2;
joint2 = laraInfo.angle >> 1; joint2 = laraInfo.angle / 2;
creature->flags = 0; creature->flags = 0;
creature->maximumTurn = 0; creature->maximumTurn = 0;
if (info.ahead) if (info.ahead)

View file

@ -33,24 +33,24 @@ void ControlGunShip(short itemNumber)
if (!item->itemFlags[0] && !item->itemFlags[1] && !item->itemFlags[2]) if (!item->itemFlags[0] && !item->itemFlags[1] && !item->itemFlags[2])
{ {
item->itemFlags[0] = pos.x >> 4; item->itemFlags[0] = pos.x / 16;
item->itemFlags[1] = pos.y >> 4; item->itemFlags[1] = pos.y / 16;
item->itemFlags[2] = pos.z >> 4; item->itemFlags[2] = pos.z / 16;
} }
pos.x = (pos.x + 80 * item->itemFlags[0]) / 6; pos.x = (pos.x + 80 * item->itemFlags[0]) / 6;
pos.y = (pos.y + 80 * item->itemFlags[1]) / 6; pos.y = (pos.y + 80 * item->itemFlags[1]) / 6;
pos.z = (pos.z + 80 * item->itemFlags[2]) / 6; pos.z = (pos.z + 80 * item->itemFlags[2]) / 6;
item->itemFlags[0] = pos.x >> 4; item->itemFlags[0] = pos.x / 16;
item->itemFlags[1] = pos.y >> 4; item->itemFlags[1] = pos.y / 16;
item->itemFlags[2] = pos.z >> 4; item->itemFlags[2] = pos.z / 16;
if (item->triggerFlags == 1) if (item->triggerFlags == 1)
item->pos.zPos += (pos.z - item->pos.zPos) >> 5; item->pos.zPos += (pos.z - item->pos.zPos) / 32;
else else
item->pos.xPos += (pos.x - item->pos.xPos) >> 5; item->pos.xPos += (pos.x - item->pos.xPos) / 32;
item->pos.yPos += (pos.y - item->pos.yPos - 256) >> 5; item->pos.yPos += (pos.y - item->pos.yPos - 256) / 32;
GAME_VECTOR start; GAME_VECTOR start;
start.x = GetRandomControl() + item->pos.xPos - 128; start.x = GetRandomControl() + item->pos.xPos - 128;
@ -157,7 +157,7 @@ void ControlGunShip(short itemNumber)
SPARKS* spark = &Sparks[GetFreeSpark()]; SPARKS* spark = &Sparks[GetFreeSpark()];
spark->on = 1; spark->on = 1;
spark->sR = spark->dR = (GetRandomControl() & 0x7F) + -128; spark->sR = spark->dR = (GetRandomControl() & 0x7F) + -128;
spark->sG = (spark->dR >> 1) + (GetRandomControl() & 0x7F); spark->sG = (spark->dR / 2) + (GetRandomControl() & 0x7F);
if (spark->sG > spark->sR) if (spark->sG > spark->sR)
spark->sG = spark->sR; spark->sG = spark->sR;
spark->sB = 0; spark->sB = 0;

View file

@ -72,10 +72,10 @@ void TriggerHydraMissileSparks(PHD_VECTOR* pos, short xv, short yv, short zv)
spark->on = true; spark->on = true;
spark->sB = 0; spark->sB = 0;
spark->sR = (GetRandomControl() & 0x3F) - 96; spark->sR = (GetRandomControl() & 0x3F) - 96;
spark->sG = spark->sR >> 1; spark->sG = spark->sR / 2;
spark->dB = 0; spark->dB = 0;
spark->dR = (GetRandomControl() & 0x3F) - 96; spark->dR = (GetRandomControl() & 0x3F) - 96;
spark->dG = spark->dR >> 1; spark->dG = spark->dR / 2;
spark->fadeToBlack = 8; spark->fadeToBlack = 8;
spark->colFadeSpeed = (GetRandomControl() & 3) + 8; spark->colFadeSpeed = (GetRandomControl() & 3) + 8;
spark->transType = COLADD; spark->transType = COLADD;
@ -115,11 +115,11 @@ static void TriggerHydraSparks(short itemNumber, int frame)
spark->dB = 0; spark->dB = 0;
if (frame < 16) if (frame < 16)
{ {
spark->sR = frame * spark->sR >> 4; spark->sR = frame * spark->sR / 16;
spark->dR = frame * spark->dR >> 4; spark->dR = frame * spark->dR / 16;
} }
spark->sG = spark->sR >> 1; spark->sG = spark->sR / 2;
spark->dG = spark->dR >> 1; spark->dG = spark->dR / 2;
spark->fadeToBlack = 4; spark->fadeToBlack = 4;
spark->colFadeSpeed = (GetRandomControl() & 3) + 8; spark->colFadeSpeed = (GetRandomControl() & 3) + 8;
spark->transType = COLADD; spark->transType = COLADD;
@ -141,7 +141,7 @@ static void TriggerHydraSparks(short itemNumber, int frame)
spark->gravity = -8 - (GetRandomControl() & 7); spark->gravity = -8 - (GetRandomControl() & 7);
spark->scalar = 0; spark->scalar = 0;
spark->dSize = 4; spark->dSize = 4;
spark->sSize = spark->size = frame * ((GetRandomControl() & 0xF) + 16) >> 4; spark->sSize = spark->size = (frame * ((GetRandomControl() & 0xF) + 16)) / 16;
} }
void HydraControl(short itemNumber) void HydraControl(short itemNumber)
@ -203,8 +203,8 @@ void HydraControl(short itemNumber)
if (item->currentAnimState != 12) if (item->currentAnimState != 12)
{ {
joint1 = info.angle >> 1; joint1 = info.angle / 2;
joint3 = info.angle >> 1; joint3 = info.angle / 2;
joint2 = -info.xAngle; joint2 = -info.xAngle;
} }
@ -316,7 +316,7 @@ void HydraControl(short itemNumber)
if (!(GlobalCounter & 3)) if (!(GlobalCounter & 3))
{ {
frame = ((g_Level.Anims[item->animNumber].frameBase - item->frameNumber) >> 3) + 1; frame = ((g_Level.Anims[item->animNumber].frameBase - item->frameNumber) / 8) + 1;
if (frame > 16) if (frame > 16)
frame = 16; frame = 16;
TriggerHydraSparks(itemNumber, frame); TriggerHydraSparks(itemNumber, frame);

View file

@ -78,8 +78,8 @@ static void ImpThrowStones(ITEM_INFO* item)
if (distance < 8) if (distance < 8)
distance = 8; distance = 8;
angles[0] += GetRandomControl() % (distance >> 2) - (distance >> 3); angles[0] += GetRandomControl() % (distance / 4) - (distance / 8);
angles[1] += GetRandomControl() % (distance >> 1) - (distance >> 2); angles[1] += GetRandomControl() % (distance / 2) - (distance / 4);
short fxNum = CreateNewEffect(item->roomNumber); short fxNum = CreateNewEffect(item->roomNumber);
if (fxNum != NO_ITEM) if (fxNum != NO_ITEM)
@ -89,7 +89,7 @@ static void ImpThrowStones(ITEM_INFO* item)
fx->pos.yPos = pos1.y; fx->pos.yPos = pos1.y;
fx->pos.zPos = pos1.z; fx->pos.zPos = pos1.z;
fx->roomNumber = item->roomNumber; fx->roomNumber = item->roomNumber;
fx->pos.xRot = angles[1] + distance >> 1; fx->pos.xRot = (angles[1] + distance) / 2;
fx->pos.yRot = angles[0]; fx->pos.yRot = angles[0];
fx->pos.zRot = 0; fx->pos.zRot = 0;
fx->speed = 4 * sqrt(distance); fx->speed = 4 * sqrt(distance);
@ -166,10 +166,10 @@ void ImpControl(short itemNumber)
CreatureMood(item, &info, VIOLENT); CreatureMood(item, &info, VIOLENT);
angle = CreatureTurn(item, creature->maximumTurn); angle = CreatureTurn(item, creature->maximumTurn);
joint1 = info.angle >> 1; joint1 = info.angle / 2;
joint0 = info.xAngle >> 1; joint0 = info.xAngle / 2;
joint3 = info.angle >> 1; joint3 = info.angle / 2;
joint2 = info.xAngle >> 1; joint2 = info.xAngle / 2;
if (Wibble & 0x10) if (Wibble & 0x10)
item->swapMeshFlags = 1024; item->swapMeshFlags = 1024;

View file

@ -88,8 +88,8 @@ void LagoonWitchControl(short itemNumber)
if (info.ahead) if (info.ahead)
{ {
joint0 = info.angle >> 1; joint0 = info.angle / 2;
joint2 = info.angle >> 1; joint2 = info.angle / 2;
joint1 = info.xAngle; joint1 = info.xAngle;
} }

View file

@ -159,8 +159,8 @@ void LarsonControl(short itemNumber)
switch (item->currentAnimState) switch (item->currentAnimState)
{ {
case STATE_TR5_LARSON_STOP: case STATE_TR5_LARSON_STOP:
joint0 = info.angle >> 1; joint0 = info.angle / 2;
joint2 = info.angle >> 1; joint2 = info.angle / 2;
if (info.ahead) if (info.ahead)
joint1 = info.xAngle; joint1 = info.xAngle;
@ -278,8 +278,8 @@ void LarsonControl(short itemNumber)
break; break;
case STATE_TR5_LARSON_AIM: case STATE_TR5_LARSON_AIM:
joint0 = info.angle >> 1; joint0 = info.angle / 2;
joint2 = info.angle >> 1; joint2 = info.angle / 2;
if (info.ahead) if (info.ahead)
joint1 = info.xAngle; joint1 = info.xAngle;
creature->maximumTurn = 0; creature->maximumTurn = 0;
@ -302,8 +302,8 @@ void LarsonControl(short itemNumber)
break; break;
case STATE_TR5_LARSON_IDLE: case STATE_TR5_LARSON_IDLE:
joint0 = info.angle >> 1; joint0 = info.angle / 2;
joint2 = info.angle >> 1; joint2 = info.angle / 2;
if (info.ahead) if (info.ahead)
joint1 = info.xAngle; joint1 = info.xAngle;
@ -322,8 +322,8 @@ void LarsonControl(short itemNumber)
break; break;
case STATE_TR5_LARSON_ATTACK: case STATE_TR5_LARSON_ATTACK:
joint0 = info.angle >> 1; joint0 = info.angle / 2;
joint2 = info.angle >> 1; joint2 = info.angle / 2;
if (info.ahead) if (info.ahead)
joint1 = info.xAngle; joint1 = info.xAngle;
creature->maximumTurn = 0; creature->maximumTurn = 0;

View file

@ -65,7 +65,7 @@ static void TriggerLaserHeadSparks(PHD_VECTOR* pos, int count, byte r, byte g, b
spark->x = pos->x; spark->x = pos->x;
spark->y = pos->y; spark->y = pos->y;
spark->z = pos->z; spark->z = pos->z;
spark->gravity = (GetRandomControl() >> 7) & 0x1F; spark->gravity = (GetRandomControl() / 128) & 0x1F;
spark->yVel = ((GetRandomControl() & 0xFFF) - 2048) << unk; spark->yVel = ((GetRandomControl() & 0xFFF) - 2048) << unk;
spark->xVel = ((GetRandomControl() & 0xFFF) - 2048) << unk; spark->xVel = ((GetRandomControl() & 0xFFF) - 2048) << unk;
spark->zVel = ((GetRandomControl() & 0xFFF) - 2048) << unk; spark->zVel = ((GetRandomControl() & 0xFFF) - 2048) << unk;
@ -84,8 +84,8 @@ static void LaserHeadCharge(ITEM_INFO* item)
if (item->itemFlags[3] <= 32) if (item->itemFlags[3] <= 32)
{ {
g = item->itemFlags[3] * g >> 5; g = (item->itemFlags[3] * g) / 32;
b = item->itemFlags[3] * b >> 5; b = (item->itemFlags[3] * b) / 32;
} }
else else
{ {
@ -331,7 +331,7 @@ void LaserHeadControl(short itemNumber)
if (item->itemFlags[3] <= 0 || condition) if (item->itemFlags[3] <= 0 || condition)
{ {
short xRot = (GetRandomControl() >> 2) - 4096; short xRot = (GetRandomControl() / 4) - 4096;
short yRot; short yRot;
if (condition) if (condition)
yRot = item->pos.yRot + (GetRandomControl() & 0x3FFF) + ANGLE(135); yRot = item->pos.yRot + (GetRandomControl() & 0x3FFF) + ANGLE(135);
@ -458,7 +458,7 @@ void LaserHeadControl(short itemNumber)
&& arc && arc
&& arc->life < 16) && arc->life < 16)
{ {
g = b = arc->life * g >> 4; g = b = (arc->life * g) / 16;
} }
for (int i = 0, j = 0; i < 5; i += 4, j++) for (int i = 0, j = 0; i < 5; i += 4, j++)
@ -546,9 +546,9 @@ void LaserHeadControl(short itemNumber)
dest.z = src.z + dl * (dest.z - src.z) / 8192; dest.z = src.z + dl * (dest.z - src.z) / 8192;
} }
int dx = (dest.x - src.x) >> 5; int dx = (dest.x - src.x) / 32;
int dy = (dest.y - src.y) >> 5; int dy = (dest.y - src.y) / 32;
int dz = (dest.z - src.z) >> 5; int dz = (dest.z - src.z) / 32;
int adx = currentArc->pos4.x - src.z; int adx = currentArc->pos4.x - src.z;
int ady = currentArc->pos4.y - src.y; int ady = currentArc->pos4.y - src.y;

View file

@ -141,12 +141,12 @@ static void TriggerRomanStatueScreamingSparks(int x, int y, int z, short xv, sho
if (flags) if (flags)
{ {
spark->dG = (GetRandomControl() & 0x3F) - 64; spark->dG = (GetRandomControl() & 0x3F) - 64;
spark->dB = spark->dG >> 1; spark->dB = spark->dG / 2;
} }
else else
{ {
spark->dB = (GetRandomControl() & 0x3F) - 64; spark->dB = (GetRandomControl() & 0x3F) - 64;
spark->dG = spark->dB >> 1; spark->dG = spark->dB / 2;
} }
spark->colFadeSpeed = 4; spark->colFadeSpeed = 4;
spark->fadeToBlack = 4; spark->fadeToBlack = 4;
@ -176,11 +176,11 @@ static void TriggerRomanStatueAttackEffect1(short itemNum, int factor)
spark->dR = 0; spark->dR = 0;
if (factor < 16) if (factor < 16)
{ {
spark->sB = factor * spark->sB >> 4; spark->sB = (factor * spark->sB) / 16;
spark->dB = factor * spark->dB >> 4; spark->dB = (factor * spark->dB) / 16;
} }
spark->sG = spark->sB >> 1; spark->sG = spark->sB / 2;
spark->dG = spark->dB >> 1; spark->dG = spark->dB / 2;
spark->fadeToBlack = 4; spark->fadeToBlack = 4;
spark->colFadeSpeed = (GetRandomControl() & 3) + 8; spark->colFadeSpeed = (GetRandomControl() & 3) + 8;
spark->transType = COLADD; spark->transType = COLADD;
@ -202,7 +202,7 @@ static void TriggerRomanStatueAttackEffect1(short itemNum, int factor)
spark->gravity = -8 - (GetRandomControl() & 7); spark->gravity = -8 - (GetRandomControl() & 7);
spark->scalar = 2; spark->scalar = 2;
spark->dSize = 4; spark->dSize = 4;
spark->sSize = spark->size = factor * ((GetRandomControl() & 0x1F) + 64) >> 4; spark->sSize = (spark->size = factor * ((GetRandomControl() & 0x1F) + 64)) / 16;
} }
static void RomanStatueAttack(PHD_3DPOS* pos, short roomNumber, short count) static void RomanStatueAttack(PHD_3DPOS* pos, short roomNumber, short count)
@ -235,10 +235,10 @@ void TriggerRomanStatueMissileSparks(PHD_VECTOR* pos, char fxObj)
spark->on = 1; spark->on = 1;
spark->sR = 0; spark->sR = 0;
spark->sG = (GetRandomControl() & 0x3F) - 96; spark->sG = (GetRandomControl() & 0x3F) - 96;
spark->sB = spark->sG >> 1; spark->sB = spark->sG / 2;
spark->dR = 0; spark->dR = 0;
spark->dG = (GetRandomControl() & 0x3F) - 96; spark->dG = (GetRandomControl() & 0x3F) - 96;
spark->dB = spark->dG >> 1; spark->dB = spark->dG / 2;
spark->fadeToBlack = 8; spark->fadeToBlack = 8;
spark->colFadeSpeed = (GetRandomControl() & 3) + 8; spark->colFadeSpeed = (GetRandomControl() & 3) + 8;
spark->transType = COLADD; spark->transType = COLADD;
@ -344,8 +344,8 @@ void RomanStatueControl(short itemNumber)
if (info.ahead) if (info.ahead)
{ {
joint0 = info.angle >> 1; joint0 = info.angle / 2;
joint2 = info.angle >> 1; joint2 = info.angle / 2;
joint1 = info.xAngle; joint1 = info.xAngle;
} }
@ -449,9 +449,9 @@ void RomanStatueControl(short itemNumber)
pos2.z = 490; pos2.z = 490;
GetJointAbsPosition(item, &pos2, 14); GetJointAbsPosition(item, &pos2, 14);
pos.x = (pos1.x + pos2.x) >> 1; pos.x = (pos1.x + pos2.x) / 2;
pos.y = (pos1.y + pos2.y) >> 1; pos.y = (pos1.y + pos2.y) / 2;
pos.z = (pos1.z + pos2.z) >> 1; pos.z = (pos1.z + pos2.z) / 2;
deltaFrame = item->frameNumber - g_Level.Anims[item->animNumber].frameBase; deltaFrame = item->frameNumber - g_Level.Anims[item->animNumber].frameBase;
@ -468,12 +468,12 @@ void RomanStatueControl(short itemNumber)
deltaFrame2 = 4 * (62 - deltaFrame); deltaFrame2 = 4 * (62 - deltaFrame);
} }
color = deltaFrame2 * ((GetRandomControl() & 0x3F) + 128) >> 4; color = (deltaFrame2 * ((GetRandomControl() & 0x3F) + 128)) / 16;
if (item->triggerFlags) if (item->triggerFlags)
TriggerDynamicLight(pos.x, pos.y, pos.z, 16, 0, color, color >> 1); TriggerDynamicLight(pos.x, pos.y, pos.z, 16, 0, color, color / 2);
else else
TriggerDynamicLight(pos.x, pos.y, pos.z, 16, 0, color >> 1, color); TriggerDynamicLight(pos.x, pos.y, pos.z, 16, 0, color / 2, color);
for (int i = 0; i < 2; i++) for (int i = 0; i < 2; i++)
{ {
@ -529,9 +529,9 @@ void RomanStatueControl(short itemNumber)
arc->pos4.z = pos2.z; arc->pos4.z = pos2.z;
if (item->triggerFlags) if (item->triggerFlags)
TriggerLightningGlow(pos1.x, pos1.y, pos1.z, 16, 0, color, color >> 1); TriggerLightningGlow(pos1.x, pos1.y, pos1.z, 16, 0, color, color / 2);
else else
TriggerLightningGlow(pos1.x, pos1.y, pos1.z, 16, 0, color >> 1, color); TriggerLightningGlow(pos1.x, pos1.y, pos1.z, 16, 0, color / 2, color);
continue; continue;
} }
@ -553,7 +553,7 @@ void RomanStatueControl(short itemNumber)
48, 48,
5);*/ 5);*/
TriggerLightningGlow(pos.x, pos.y, pos.z, 16, 0, color, color >> 1); TriggerLightningGlow(pos.x, pos.y, pos.z, 16, 0, color, color / 2);
unk = 1; unk = 1;
continue; continue;
} }
@ -567,7 +567,7 @@ void RomanStatueControl(short itemNumber)
48, 48,
5);*/ 5);*/
TriggerLightningGlow(pos.x, pos.y, pos.z, 16, 0, color >> 1, color); TriggerLightningGlow(pos.x, pos.y, pos.z, 16, 0, color / 2, color);
unk = 1; unk = 1;
} }
@ -752,8 +752,8 @@ void RomanStatueControl(short itemNumber)
if (RomanStatueData.counter) if (RomanStatueData.counter)
{ {
RomanStatueData.counter--; RomanStatueData.counter--;
color = RomanStatueData.counter * ((GetRandomControl() & 0x3F) + 128) >> 4; color = (RomanStatueData.counter * ((GetRandomControl() & 0x3F) + 128)) / 16;
TriggerDynamicLight(RomanStatueData.pos.x, RomanStatueData.pos.y, RomanStatueData.pos.z, 16, 0, color, color >> 1); TriggerDynamicLight(RomanStatueData.pos.x, RomanStatueData.pos.y, RomanStatueData.pos.z, 16, 0, color, color / 2);
} }
deltaFrame = item->frameNumber - g_Level.Anims[item->animNumber].frameBase; deltaFrame = item->frameNumber - g_Level.Anims[item->animNumber].frameBase;
@ -789,7 +789,7 @@ void RomanStatueControl(short itemNumber)
attackPos.yPos, attackPos.yPos,
attackPos.zPos, attackPos.zPos,
0, 0,
(((GetRandomControl() & 0x3F) + 128) >> 1), (((GetRandomControl() & 0x3F) + 128) / 2),
(((GetRandomControl() & 0x3F) + 128)), (((GetRandomControl() & 0x3F) + 128)),
64); 64);
@ -821,9 +821,9 @@ void RomanStatueControl(short itemNumber)
for (i = 0; i < 4; i++) for (i = 0; i < 4; i++)
{ {
r = deltaFrame * ((GetRandomControl() & 0x3F) + 128) >> 5; r = (deltaFrame * ((GetRandomControl() & 0x3F) + 128)) / 32;
g = deltaFrame * ((GetRandomControl() & 0x3F) + 128) >> 4; g = (deltaFrame * ((GetRandomControl() & 0x3F) + 128)) / 16;
b = deltaFrame * ((GetRandomControl() & 0x3F) + 128) >> 5; b = (deltaFrame * ((GetRandomControl() & 0x3F) + 128)) / 32;
if (i == 0) if (i == 0)
{ {
@ -833,8 +833,8 @@ void RomanStatueControl(short itemNumber)
pos2.z, pos2.z,
8, 8,
0, 0,
deltaFrame * ((GetRandomControl() & 0x3F) + 128) >> 5, (deltaFrame * ((GetRandomControl() & 0x3F) + 128)) / 32,
deltaFrame * ((GetRandomControl() & 0x3F) + 128) >> 6); (deltaFrame * ((GetRandomControl() & 0x3F) + 128)) / 64);
} }
arc = RomanStatueData.energyArcs[i]; arc = RomanStatueData.energyArcs[i];
@ -861,7 +861,7 @@ void RomanStatueControl(short itemNumber)
if (deltaFrame == 24) if (deltaFrame == 24)
{ {
TriggerEnergyArc(&pos1, &pos2, 0, ((GetRandomControl() & 0x3F) + 128), TriggerEnergyArc(&pos1, &pos2, 0, ((GetRandomControl() & 0x3F) + 128),
(((GetRandomControl() & 0x3F) + 128) >> 1), 256, 32, 32, ENERGY_ARC_NO_RANDOMIZE, (((GetRandomControl() & 0x3F) + 128) / 2), 256, 32, 32, ENERGY_ARC_NO_RANDOMIZE,
ENERGY_ARC_STRAIGHT_LINE); ENERGY_ARC_STRAIGHT_LINE);
} }
} }

View file

@ -26,8 +26,8 @@ static void TriggerSubmarineSparks(short itemNumber)
spark->colFadeSpeed = 2; spark->colFadeSpeed = 2;
spark->dG = (GetRandomControl() & 0x1F) - 32; spark->dG = (GetRandomControl() & 0x1F) - 32;
spark->life = 2; spark->life = 2;
spark->dR = spark->dG >> 1; spark->dR = spark->dG / 2;
spark->dB = spark->dG >> 1; spark->dB = spark->dG / 2;
spark->sLife = 2; spark->sLife = 2;
spark->transType = COLADD; spark->transType = COLADD;
spark->fadeToBlack = 0; spark->fadeToBlack = 0;
@ -212,7 +212,7 @@ void SubmarineControl(short itemNumber)
laraInfo.ahead = true; laraInfo.ahead = true;
} }
int tilt = item->itemFlags[0] + (angle >> 1); int tilt = item->itemFlags[0] + (angle / 2);
if (tilt > 2048) if (tilt > 2048)
{ {
@ -372,8 +372,8 @@ void SubmarineControl(short itemNumber)
if (distance < 16384) if (distance < 16384)
{ {
distance = 16384 - distance; distance = 16384 - distance;
byte color = (GetRandomControl() & 0xF) + (distance >> 7) + 64; byte color = (GetRandomControl() & 0xF) + (distance / 128) + 64;
TriggerDynamicLight(pos2.x, pos2.y, pos2.z, (GetRandomControl() & 1) + (distance >> 11) + 12, color >> 1, color, color >> 1); TriggerDynamicLight(pos2.x, pos2.y, pos2.z, (GetRandomControl() & 1) + (distance / 2048) + 12, color / 2, color, color / 2);
} }
} }
@ -411,8 +411,8 @@ void ChaffFlareControl(short itemNumber)
if (g_Level.Rooms[item->roomNumber].flags & ENV_FLAG_WATER) if (g_Level.Rooms[item->roomNumber].flags & ENV_FLAG_WATER)
{ {
item->fallspeed += (5 - item->fallspeed) >> 1; item->fallspeed += (5 - item->fallspeed) / 2;
item->speed += (5 - item->speed) >> 1; item->speed += (5 - item->speed) / 2;
} }
else else
{ {
@ -499,9 +499,9 @@ void TorpedoControl(short itemNumber)
pos.x = chaffItem->pos.xPos; pos.x = chaffItem->pos.xPos;
pos.y = chaffItem->pos.yPos; pos.y = chaffItem->pos.yPos;
pos.z = chaffItem->pos.zPos; pos.z = chaffItem->pos.zPos;
item->currentAnimState = pos.x >> 2; item->currentAnimState = pos.x / 4;
item->goalAnimState = pos.y >> 2; item->goalAnimState = pos.y / 4;
item->requiredAnimState = pos.z >> 2; item->requiredAnimState = pos.z / 4;
} }
else else
{ {
@ -536,8 +536,8 @@ void TorpedoControl(short itemNumber)
if (abs(drx) > 0x8000) if (abs(drx) > 0x8000)
drx = -drx; drx = -drx;
drx >>= 3; drx /= 8;
dry >>= 3; dry /= 8;
if (drx <= 512) if (drx <= 512)
{ {

View file

@ -26,9 +26,9 @@ void PulseLightControl(short itemNumber)
item->pos.yPos, item->pos.yPos,
item->pos.zPos, item->pos.zPos,
24, 24,
pulse * 8 * (item->triggerFlags & 0x1F) >> 9, (pulse * 8 * (item->triggerFlags & 0x1F)) / 512,
pulse * ((item->triggerFlags >> 2) & 0xF8) >> 9, (pulse * ((item->triggerFlags / 4) & 0xF8)) / 512,
pulse * ((item->triggerFlags >> 7) & 0xF8) >> 9); (pulse * ((item->triggerFlags / 128) & 0xF8)) / 512);
} }
} }
@ -57,15 +57,15 @@ void StrobeLightControl(short itemNumber)
item->pos.yRot += ANGLE(16.0f); item->pos.yRot += ANGLE(16.0f);
byte r = 8 * (item->triggerFlags & 0x1F); byte r = 8 * (item->triggerFlags & 0x1F);
byte g = (item->triggerFlags >> 2) & 0xF8; byte g = (item->triggerFlags / 4) & 0xF8;
byte b = (item->triggerFlags >> 7) & 0xF8; byte b = (item->triggerFlags / 128) & 0xF8;
TriggerAlertLight( TriggerAlertLight(
item->pos.xPos, item->pos.xPos,
item->pos.yPos - 512, item->pos.yPos - 512,
item->pos.zPos, item->pos.zPos,
r, g, b, r, g, b,
((item->pos.yRot + 22528) >> 4) & 0xFFF, ((item->pos.yRot + 22528) / 16) & 0xFFF,
item->roomNumber, item->roomNumber,
12); 12);
@ -90,8 +90,8 @@ void ColorLightControl(short itemNumber)
item->pos.zPos, item->pos.zPos,
24, 24,
8 * (item->triggerFlags & 0x1F), 8 * (item->triggerFlags & 0x1F),
(item->triggerFlags >> 2) & 0xF8, (item->triggerFlags / 4) & 0xF8,
(item->triggerFlags >> 7) & 0xF8); (item->triggerFlags / 128) & 0xF8);
} }
} }
@ -177,9 +177,9 @@ void ElectricalLightControl(short itemNumber)
item->pos.yPos, item->pos.yPos,
item->pos.zPos, item->pos.zPos,
24, 24,
intensity * 8 * (item->triggerFlags & 0x1F) >> 8, (intensity * 8 * (item->triggerFlags & 0x1F)) / 256,
intensity * ((item->triggerFlags >> 2) & 0xF8) >> 8, (intensity * ((item->triggerFlags / 4) & 0xF8)) / 256,
intensity * ((item->triggerFlags >> 7) & 0xF8) >> 8); (intensity * ((item->triggerFlags / 128) & 0xF8)) / 256);
} }
void BlinkingLightControl(short itemNumber) void BlinkingLightControl(short itemNumber)
@ -208,8 +208,8 @@ void BlinkingLightControl(short itemNumber)
pos.z, pos.z,
16, 16,
8 * (item->triggerFlags & 0x1F), 8 * (item->triggerFlags & 0x1F),
(item->triggerFlags >> 2) & 0xF8, (item->triggerFlags / 4) & 0xF8,
(item->triggerFlags >> 7) & 0xF8); (item->triggerFlags / 128) & 0xF8);
item->meshBits = 2; item->meshBits = 2;

View file

@ -48,7 +48,7 @@ void ControlBodyPart(short fxNumber)
{ {
fx->pos.yPos = ceiling; fx->pos.yPos = ceiling;
fx->fallspeed = -fx->fallspeed; fx->fallspeed = -fx->fallspeed;
fx->speed -= (fx->speed >> 3); fx->speed -= (fx->speed / 8);
} }
int height = GetFloorHeight(floor, fx->pos.xPos, fx->pos.yPos, fx->pos.zPos); int height = GetFloorHeight(floor, fx->pos.xPos, fx->pos.yPos, fx->pos.zPos);
@ -76,7 +76,7 @@ void ControlBodyPart(short fxNumber)
if (fx->fallspeed <= 32) if (fx->fallspeed <= 32)
fx->fallspeed = 0; fx->fallspeed = 0;
else else
fx->fallspeed = -fx->fallspeed >> 2; fx->fallspeed = -fx->fallspeed / 4;
} }
else else
{ {
@ -85,7 +85,7 @@ void ControlBodyPart(short fxNumber)
fx->pos.zPos = z; fx->pos.zPos = z;
} }
fx->speed -= (fx->speed >> 2); fx->speed -= (fx->speed / 4);
if (abs(fx->speed) < 4) if (abs(fx->speed) < 4)
fx->speed = 0; fx->speed = 0;
fx->pos.yPos = y; fx->pos.yPos = y;

View file

@ -23,7 +23,7 @@ void InitialiseHighObject1(short itemNumber)
{ {
if (currentItem->objectNumber == ID_PUZZLE_ITEM4_COMBO2) if (currentItem->objectNumber == ID_PUZZLE_ITEM4_COMBO2)
{ {
item->itemFlags[3] |= (i << 8); item->itemFlags[3] |= (i * 256);
currentItem->pos.yPos = item->pos.yPos - 512; currentItem->pos.yPos = item->pos.yPos - 512;
continue; continue;
} }
@ -39,7 +39,7 @@ void InitialiseHighObject1(short itemNumber)
{ {
if (currentItem->objectNumber == ID_PUZZLE_ITEM4_COMBO2) if (currentItem->objectNumber == ID_PUZZLE_ITEM4_COMBO2)
{ {
item->itemFlags[3] |= (i << 8); item->itemFlags[3] |= (i * 256);
currentItem->pos.yPos = item->pos.yPos - 512; currentItem->pos.yPos = item->pos.yPos - 512;
continue; continue;
} }
@ -102,18 +102,18 @@ void ControlHighObject1(short itemNumber)
if (item->itemFlags[1] <= 512) if (item->itemFlags[1] <= 512)
flags = 31; flags = 31;
else else
flags = (768 - item->itemFlags[1]) >> 3; flags = (768 - item->itemFlags[1]) / 8;
} }
else else
{ {
flags = item->itemFlags[1] >> 3; flags = item->itemFlags[1] / 8;
} }
SoundEffect(SFX_BLK_PLAT_RAISE_LOW, &item->pos, (flags << 8) | 8); SoundEffect(SFX_BLK_PLAT_RAISE_LOW, &item->pos, (flags * 256) | 8);
item->pos.yPos += 8; item->pos.yPos += 8;
ITEM_INFO* targetItem = &g_Level.Items[(item->itemFlags[3] >> 8) & 0xFF]; ITEM_INFO* targetItem = &g_Level.Items[(item->itemFlags[3] / 256) & 0xFF];
targetItem->flags |= 0x20u; targetItem->flags |= 0x20u;
targetItem->pos.yPos = item->pos.yPos - 560; targetItem->pos.yPos = item->pos.yPos - 560;
} }
@ -142,7 +142,7 @@ void ControlHighObject1(short itemNumber)
item->itemFlags[0] = 5; item->itemFlags[0] = 5;
item->itemFlags[1] = 0; item->itemFlags[1] = 0;
} }
else if (item->itemFlags[0] == 5 && !item->itemFlags[1] && g_Level.Items[(item->itemFlags[3] >> 8) & 0xFF].flags < 0) else if (item->itemFlags[0] == 5 && !item->itemFlags[1] && g_Level.Items[(item->itemFlags[3] / 256) & 0xFF].flags < 0)
{ {
DoFlipMap(3); DoFlipMap(3);
FlipMap[3] ^= 0x3E00u; FlipMap[3] ^= 0x3E00u;
@ -201,12 +201,12 @@ void ControlHighObject1(short itemNumber)
flags = item->itemFlags[1]; flags = item->itemFlags[1];
} }
SoundEffect(SFX_BLK_PLAT_RAISE_LOW, &item->pos, (flags << 8) | 8); SoundEffect(SFX_BLK_PLAT_RAISE_LOW, &item->pos, (flags * 256) | 8);
item->itemFlags[1] += 16; item->itemFlags[1] += 16;
item->pos.yPos -= 16; item->pos.yPos -= 16;
short targetItemNumber = (item->itemFlags[3] >> 8) & 0xFF; short targetItemNumber = (item->itemFlags[3] / 256) & 0xFF;
ITEM_INFO* targetItem = &g_Level.Items[targetItemNumber]; ITEM_INFO* targetItem = &g_Level.Items[targetItemNumber];
targetItem->flags |= 0x20; targetItem->flags |= 0x20;
targetItem->pos.yPos = item->pos.yPos - 560; targetItem->pos.yPos = item->pos.yPos - 560;

View file

@ -64,12 +64,12 @@ void MissileControl(short itemNumber)
int dy = angles[0] - fx->pos.yRot; int dy = angles[0] - fx->pos.yRot;
if (abs(dy) > 0x8000) if (abs(dy) > 0x8000)
dy = -dy; dy = -dy;
dy >>= 3; dy /= 8;
int dx = angles[1] - fx->pos.xRot; int dx = angles[1] - fx->pos.xRot;
if (abs(dx) > 0x8000) if (abs(dx) > 0x8000)
dx = -dx; dx = -dx;
dx >>= 3; dx /= 8;
if (dy <= dh) if (dy <= dh)
{ {

View file

@ -39,9 +39,9 @@ void RollingBallControl(short itemNumber)
return; return;
item->fallspeed += GRAVITY; item->fallspeed += GRAVITY;
item->pos.xPos += item->itemFlags[0] >> 5; item->pos.xPos += item->itemFlags[0] / 32;
item->pos.yPos += item->fallspeed; item->pos.yPos += item->fallspeed;
item->pos.zPos += item->itemFlags[1] >> 5; item->pos.zPos += item->itemFlags[1] / 32;
short roomNumber = item->roomNumber; short roomNumber = item->roomNumber;
FLOOR_INFO* floor = GetFloor(item->pos.xPos, item->pos.yPos, item->pos.zPos, &roomNumber); FLOOR_INFO* floor = GetFloor(item->pos.xPos, item->pos.yPos, item->pos.zPos, &roomNumber);
@ -58,7 +58,7 @@ void RollingBallControl(short itemNumber)
SQUARE(Camera.pos.z - item->pos.zPos)); SQUARE(Camera.pos.z - item->pos.zPos));
if (distance < 16384) if (distance < 16384)
Camera.bounce = -((16384 - distance) * abs(item->fallspeed) >> 14); Camera.bounce = -(((16384 - distance) * abs(item->fallspeed)) / 16384);
} }
if (item->pos.yPos - dh < 512) if (item->pos.yPos - dh < 512)
@ -69,11 +69,11 @@ void RollingBallControl(short itemNumber)
if (abs(item->speed) <= 512 || GetRandomControl() & 0x1F) if (abs(item->speed) <= 512 || GetRandomControl() & 0x1F)
item->fallspeed = 0; item->fallspeed = 0;
else else
item->fallspeed = -(short)(GetRandomControl() % (item->speed >> 3)); item->fallspeed = -(short)(GetRandomControl() % (item->speed / 8));
} }
else else
{ {
item->fallspeed = -(short)(item->fallspeed >> 2); item->fallspeed = -(short)(item->fallspeed / 4);
} }
} }
@ -126,7 +126,7 @@ void RollingBallControl(short itemNumber)
} }
else else
{ {
item->itemFlags[1] = -item->itemFlags[1] >> 1; item->itemFlags[1] = -item->itemFlags[1] / 2;
item->pos.zPos = (item->pos.zPos & -512) + 512; item->pos.zPos = (item->pos.zPos & -512) + 512;
} }
} }
@ -136,7 +136,7 @@ void RollingBallControl(short itemNumber)
} }
else else
{ {
item->itemFlags[1] += (y1a - dh) >> 1; item->itemFlags[1] += (y1a - dh) / 2;
} }
} }
@ -153,7 +153,7 @@ void RollingBallControl(short itemNumber)
} }
else else
{ {
item->itemFlags[1] = -item->itemFlags[1] >> 1; item->itemFlags[1] = -item->itemFlags[1] / 2;
item->pos.zPos = (item->pos.zPos & -512) + 512; item->pos.zPos = (item->pos.zPos & -512) + 512;
} }
} }
@ -163,7 +163,7 @@ void RollingBallControl(short itemNumber)
} }
else else
{ {
item->itemFlags[1] -= (y2a - dh) >> 1; item->itemFlags[1] -= (y2a - dh) / 2;
} }
} }
@ -172,7 +172,7 @@ void RollingBallControl(short itemNumber)
if (abs(item->itemFlags[1]) <= 64) if (abs(item->itemFlags[1]) <= 64)
item->itemFlags[1] = 0; item->itemFlags[1] = 0;
else else
item->itemFlags[1] = item->itemFlags[1] - (item->itemFlags[1] >> 6); item->itemFlags[1] = item->itemFlags[1] - (item->itemFlags[1] / 64);
} }
int counterX = 0; int counterX = 0;
@ -190,7 +190,7 @@ void RollingBallControl(short itemNumber)
} }
else else
{ {
item->itemFlags[0] = -item->itemFlags[0] >> 1; item->itemFlags[0] = -item->itemFlags[0] / 2;
item->pos.xPos = (item->pos.xPos & -512) + 512; item->pos.xPos = (item->pos.xPos & -512) + 512;
} }
} }
@ -200,7 +200,7 @@ void RollingBallControl(short itemNumber)
} }
else else
{ {
item->itemFlags[0] -= (y4a - dh) >> 1; item->itemFlags[0] -= (y4a - dh) / 2;
} }
} }
@ -217,7 +217,7 @@ void RollingBallControl(short itemNumber)
} }
else else
{ {
item->itemFlags[0] = -item->itemFlags[0] >> 1; item->itemFlags[0] = -item->itemFlags[0] / 2;
item->pos.xPos = (item->pos.xPos & -512) + 512; item->pos.xPos = (item->pos.xPos & -512) + 512;
} }
} }
@ -227,7 +227,7 @@ void RollingBallControl(short itemNumber)
} }
else else
{ {
item->itemFlags[0] += (y3a - dh) >> 1; item->itemFlags[0] += (y3a - dh) / 2;
} }
} }
@ -236,7 +236,7 @@ void RollingBallControl(short itemNumber)
if (abs(item->itemFlags[0]) <= 64) if (abs(item->itemFlags[0]) <= 64)
item->itemFlags[0] = 0; item->itemFlags[0] = 0;
else else
item->itemFlags[0] = item->itemFlags[0] - (item->itemFlags[0] >> 6); item->itemFlags[0] = item->itemFlags[0] - (item->itemFlags[0] / 64);
} }
} }
@ -287,7 +287,7 @@ void RollingBallControl(short itemNumber)
} }
} }
item->pos.xRot -= (abs(item->itemFlags[0]) + abs(item->itemFlags[1])) >> 1; item->pos.xRot -= (abs(item->itemFlags[0]) + abs(item->itemFlags[1])) / 2;
roomNumber = item->roomNumber; roomNumber = item->roomNumber;
floor = GetFloor(item->pos.xPos, item->pos.yPos, item->pos.zPos, &roomNumber); floor = GetFloor(item->pos.xPos, item->pos.yPos, item->pos.zPos, &roomNumber);

View file

@ -24,7 +24,7 @@ void SmashObject(short itemNumber)
{ {
ITEM_INFO* item = &g_Level.Items[itemNumber]; ITEM_INFO* item = &g_Level.Items[itemNumber];
ROOM_INFO* r = &g_Level.Rooms[item->roomNumber]; ROOM_INFO* r = &g_Level.Rooms[item->roomNumber];
int sector = ((item->pos.zPos - r->z) >> 10) + r->xSize * ((item->pos.xPos - r->x) >> 10); int sector = ((item->pos.zPos - r->z) / 1024) + r->xSize * ((item->pos.xPos - r->x) / 1024);
BOX_INFO* box = &g_Level.Boxes[r->floor[sector].box]; BOX_INFO* box = &g_Level.Boxes[r->floor[sector].box];
if (box->flags & 0x8000) if (box->flags & 0x8000)
@ -46,5 +46,5 @@ void SmashObject(short itemNumber)
void SmashObjectControl(short itemNumber) void SmashObjectControl(short itemNumber)
{ {
SmashObject(itemNumber << 16); SmashObject(itemNumber * 65536);
} }

View file

@ -111,7 +111,7 @@ void RaisingCogControl(short itemNumber)
flags = item->itemFlags[2]; flags = item->itemFlags[2];
} }
SoundEffect(SFX_BLK_PLAT_RAISE_LOW, &item->pos, (flags << 8) | 8); SoundEffect(SFX_BLK_PLAT_RAISE_LOW, &item->pos, (flags * 256) | 8);
item->itemFlags[2] += 2; item->itemFlags[2] += 2;
item->pos.yPos -= 2; item->pos.yPos -= 2;

View file

@ -90,7 +90,7 @@ void ControlDeathSlide(short itemNumber)
item->pos.zPos += item->fallspeed * c; item->pos.zPos += item->fallspeed * c;
item->pos.xPos += item->fallspeed * s; item->pos.xPos += item->fallspeed * s;
item->pos.yPos += item->fallspeed >> 2; item->pos.yPos += item->fallspeed / 4;
short roomNumber = item->roomNumber; short roomNumber = item->roomNumber;
GetFloor(item->pos.xPos, item->pos.yPos, item->pos.zPos, &roomNumber); GetFloor(item->pos.xPos, item->pos.yPos, item->pos.zPos, &roomNumber);
@ -118,7 +118,7 @@ void ControlDeathSlide(short itemNumber)
AnimateLara(LaraItem); AnimateLara(LaraItem);
LaraItem->gravityStatus = true; LaraItem->gravityStatus = true;
LaraItem->speed = item->fallspeed; LaraItem->speed = item->fallspeed;
LaraItem->fallspeed = item->fallspeed >> 2; LaraItem->fallspeed = item->fallspeed / 4;
} }
// TODO: sounds // TODO: sounds

View file

@ -108,7 +108,7 @@ void ControlTeethSpikes(short itemNumber)
if (TriggerActive(item)) if (TriggerActive(item))
{ {
item->itemFlags[1] -= item->itemFlags[0]; item->itemFlags[1] -= item->itemFlags[0];
item->itemFlags[0] += (item->itemFlags[0] >> 3) + 32; item->itemFlags[0] += (item->itemFlags[0] / 8) + 32;
if (item->itemFlags[1] < 0) if (item->itemFlags[1] < 0)
{ {
@ -131,7 +131,7 @@ void ControlTeethSpikes(short itemNumber)
} }
else if (!item->timer) else if (!item->timer)
{ {
item->itemFlags[0] += (item->itemFlags[0] >> 3) + 32; item->itemFlags[0] += (item->itemFlags[0] / 8) + 32;
if (item->itemFlags[1] > 0) if (item->itemFlags[1] > 0)
{ {
@ -247,7 +247,7 @@ void ControlTeethSpikes(short itemNumber)
} }
else else
{ {
item->itemFlags[0] = -item->itemFlags[0] >> 1; item->itemFlags[0] = -item->itemFlags[0] / 2;
} }
} }
} }

View file

@ -54,10 +54,10 @@ static void VentilatorEffect(BOUNDING_BOX* bounds, int intensity, short rot, int
spark->sR = 0; spark->sR = 0;
spark->sG = 0; spark->sG = 0;
spark->sB = 0; spark->sB = 0;
spark->dR = spark->dG = 48 * speed >> 7; spark->dR = spark->dG = (48 * speed) / 128;
spark->colFadeSpeed = 4; spark->colFadeSpeed = 4;
spark->fadeToBlack = 8; spark->fadeToBlack = 8;
spark->dB = speed * ((GetRandomControl() & 8) + 48) >> 7; spark->dB = (speed * ((GetRandomControl() & 8) + 48)) / 128;
spark->transType = COLADD; spark->transType = COLADD;
spark->life = spark->sLife = (GetRandomControl() & 3) + 20; spark->life = spark->sLife = (GetRandomControl() & 3) + 20;
@ -114,9 +114,9 @@ static void VentilatorEffect(BOUNDING_BOX* bounds, int intensity, short rot, int
} }
spark->friction = 85; spark->friction = 85;
spark->xVel = speed * spark->xVel >> 7; spark->xVel = (speed * spark->xVel) / 128;
spark->yVel = speed * spark->yVel >> 7; spark->yVel = (speed * spark->yVel) / 128;
spark->zVel = speed * spark->zVel >> 7; spark->zVel = (speed * spark->zVel) / 128;
spark->maxYvel = 0; spark->maxYvel = 0;
spark->gravity = 0; spark->gravity = 0;
spark->flags = SP_NONE; spark->flags = SP_NONE;