Skip to content

Commit 186a237

Browse files
committed
fix: replace sqrt with deterministic Sqrt in GameLogic to fix x87 FPU lockstep desyncs
1 parent 2aa5e00 commit 186a237

34 files changed

Lines changed: 99 additions & 60 deletions

Core/Libraries/Include/Lib/trig.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,4 @@ Real Tan(Real);
2929
Real ACos(Real);
3030
Real ASin(Real x);
3131
Real Atan2(Real y, Real x);
32+
Real Sqrt(Real x);

Dependencies/bink

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Subproject commit 180fc4620ed72fd700347ab837a5271fd0259901

Dependencies/dx8

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Subproject commit 7bddff8c01f5fb931c3cb73d4aa8e66d303d97bc

Dependencies/gamespy

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Subproject commit 998c1f7d180707597ef4a201b653483b38118132

Dependencies/lzhl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Subproject commit dfd96e2ca64adaddb35dd4ebadd6add7d5586783

Dependencies/miles

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Subproject commit 6e32700d7ba4b4713a03bf1f5ffc3b0ac8d17264

Dependencies/reactos

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Subproject commit 22fb3bb2c1d8196cf501edbb49b3814739f7b016

Dependencies/stlport

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Subproject commit 501824065f5b1eab77ca7f53ed3a227acf965eb1

GeneralsMD/Code/GameEngine/Source/Common/System/Trig.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,11 @@ Real Atan2(Real y, Real x)
7777
return WWMath::Atan2(y, x);
7878
}
7979

80+
Real Sqrt(Real x)
81+
{
82+
return WWMath::Sqrt(x);
83+
}
84+
8085
#ifdef REGENERATE_TRIG_TABLES
8186
void initTrig()
8287
{

GeneralsMD/Code/GameEngine/Source/GameLogic/AI/AI.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -709,7 +709,7 @@ Object *AI::findClosestEnemy( const Object *me, Real range, UnsignedInt qualifie
709709
}
710710

711711
Real distSqr = ThePartitionManager->getDistanceSquared(me, theEnemy, FROM_BOUNDINGSPHERE_2D);
712-
Real dist = sqrt(distSqr);
712+
Real dist = Sqrt(distSqr);
713713
Int modifier = dist/getAiData()->m_attackPriorityDistanceModifier;
714714
Int modPriority = curPriority-modifier;
715715
if (modPriority < 1)

0 commit comments

Comments
 (0)