Refactor wwmath and fix issues in weapon and EulerAnglesClass - #7
Open
Okladnoj wants to merge 7 commits into
Open
Refactor wwmath and fix issues in weapon and EulerAnglesClass#7Okladnoj wants to merge 7 commits into
Okladnoj wants to merge 7 commits into
Conversation
Okladnoj
marked this pull request as ready for review
August 3, 2026 09:56
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
…wrappers These five _Legacy wrappers are bit-identical to their non-Legacy siblings in every math mode (verified exhaustively and independently), so route all callers to the siblings and drop the wrappers. Force float binding where a call site passed a double literal or double expression, to keep the original single-precision behaviour and avoid selecting the true-double overload. Kept: Fabsf/Sinf/Cosf/Inv_Sqrt _Legacy, which differ under retail (x87 asm, bit twiddle, NaN handling) and must stay to preserve RETAIL_COMPATIBLE_CRC.
Matrix3D elements are float, so passing double sy/cy to WWMath::Atan2 produced mixed (double, float) argument lists that matched neither the float nor the double overload after the _Legacy wrappers were removed in 3860582, causing error C2666.
…loat TheSuperHackers @refactor Okladnoj Sqrt(int) collapsed to the same numeric result as Sqrt(float): in DET it already truncated the argument to float (gm_sqrtf((float)x)); in RETAIL it returned (float)sqrt((double)x). After removal an int argument would be ambiguous between Sqrt(float)/Sqrt(double), so the pathfinding call sites in AIPathfind (Int dx,dy cell deltas) get an explicit (float) cast. This preserves CRC bit-for-bit in both modes: DET is identical, RETAIL is identical because the int magnitudes (dx*dx+dy*dy of cell coordinates) are far below 2^24 and thus exactly representable in float.
TheSuperHackers @refactor Okladnoj Finish the constant-only WWMath conversion in W3DMouse::draw() (WWMATH_HALF_PI) by also routing the scroll-cursor angle through WWMath::Atan2 instead of the raw libm atan2, per review consensus (either all operations through WWMath or revert the constant). Cursor rendering is not part of the simulation CRC.
…c branch TheSuperHackers @refactor Okladnoj Finish the Sqrt consolidation per review: the non-deterministic branch of Sqrt(float) now calls sqrtf(x) directly instead of (float)Sqrt((double)x), dropping the float->double->float round-trip left over from the old Sqrt_Legacy removal. CRC is preserved bit-for-bit: sqrtf(x) == (float)sqrt((double)x) == x87 fsqrt across all 2^31 non-negative float encodings (VC6, MSVC x86/x64; 0 divergences), and double rounding is harmless for sqrt. The deterministic branch (gm_sqrtf) is unchanged.
The WWVegas include restructuring removed the per-directory include path from core_wwlib, so the unqualified include of wwmath.h no longer resolves.
Okladnoj
force-pushed
the
okji/feat/deterministic-math-v2.2.4
branch
from
August 3, 2026 17:18
2a23091 to
4a3002d
Compare
Okladnoj
changed the base branch from
okji/feat/deterministic-math-v2.2.3
to
okji/feat/deterministic-math-v2
August 3, 2026 17:20
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Math Refactoring
This PR contains only the math refactoring recommended by @bobtista and @Caball009 in their reviews — 7 commits, 23 files, all under
WWMathand its call sites. Scope is closed; further math work will come as separate PRs.The non-math fixes that used to be bundled here were split out into their own upstream PRs and are no longer part of this branch:
DieOnDetonateCRC loggingThis PR is a sub-part of the fundamental milestone tracked in TheSuperHackers#2670, where the final deterministic math implementation is waiting for its time.
To verify
RETAIL=1compatibility, I use my own workflow that runs retail replays—the golden set—in VC6 mode.To verify deterministic math support, I use the
1x1x2x2x2_mac_win_3.repreplay (118,800 frames), running it simultaneously on macOS and Windows.1x1x2x2x2_mac_win_3.rep.zip