Skip to content

feat(math): backport upstream deterministic math and route gamelogic via wwmath (#2670) - #389

Merged
fbraz3 merged 5 commits into
mainfrom
feat/backport-upstream-deterministic-math-2670
Nov 2, 2026
Merged

fbraz3 merged 5 commits into
mainfrom
feat/backport-upstream-deterministic-math-2670

Conversation

@fbraz3

@fbraz3 fbraz3 commented Oct 26, 2026

Copy link
Copy Markdown
Owner

Description

Backports upstream TheSuperHackers PR #2670 (feat(math): Route game logic math through WWMath with 3-mode deterministic support), establishing bit-identical cross-platform game simulation determinism between macOS (ARM64) and Linux (x86_64) to prevent multiplayer SyncCrash / CRC desyncs.

Context & Architectural Scope

Upstream PR TheSuperHackers#2670 established the gold standard for cross-platform simulation determinism:

  • Simulation math in GameLogic (and shared math primitives Trig.cpp, Coord2D, Coord3D, BezierSegment) is routed through deterministic WWMath / GameMath single-precision wrappers (gm_*f), which guarantee bit-identical results across architectures without x87/NEON 1-ULP divergence.
  • Rendering, UI, audio, and client visuals (GameClient, W3DDevice, WW3D2, D3DX math compat) do not contribute to simulation CRCs and remain on standard CRT math (sinf, cosf, sqrtf, tanf, atan2f) to eliminate unnecessary runtime overhead.
  • Deprecated custom math symbols (*Origin, *Trig, Div_FixNaN, SAGE_USE_DETERMINISTIC_MATH) have been completely cleaned up in favor of the official upstream API (WWMath::Sqrt, WWMath::Sin, WWMath::Cos, WWMath::Tan, WWMath::Acos, WWMath::Asin, WWMath::Atan, WWMath::Atan2, WWMath::Ceil, WWMath::Floor, WWMath::Pow, WWMath::Fabs, WWMath::Div_Safe).

Summary of Changes

  • Core Library Switches: Added Core/Libraries/Source/Lib/Include/Lib/BaseDefines.h with RETAIL_COMPATIBLE_CRC (0) and USE_DETERMINISTIC_MATH (1) defaults, and Dependencies/Utility/Utility/bit_adapter.h for portable std::bit_cast.
  • WWMath Modernization: Updated Core/Libraries/Source/WWVegas/WWMath/wwmath.h with comprehensive gm_*f entry points, preserving 64-bit safety fixes and Div_Safe division-by-zero guards.
  • Locomotors & Physics: Verified 100% routing of distance, velocity, force, acceleration, and angle math through WWMath in Locomotor.cpp and PhysicsUpdate.cpp.
  • Dual Target Parity: Backported all math routing and casts to Generals base game (Generals/) ensuring exact bit-for-bit parity with Zero Hour (GeneralsMD/).
  • Guidelines & Tooling: Updated AGENTS.md, .coderabbit.yaml, and PR review prompt rules to enforce determinism checks strictly on GameLogic and shared simulation math.

Testing & Validation

  • Native macOS Vulkan build: cmake --build build/macos-vulkan --target z_generals (Exit code 0)
  • Native macOS Vulkan build: cmake --build build/macos-vulkan --target g_generals (Exit code 0)
  • Static math audit: verified 0 raw CRT math calls across all GameLogic subsystems in GeneralsMD/, Generals/, and Core/
  • Ready for cross-platform LAN/NGMP multiplayer sync testing between macOS ARM64 and Linux x86_64

…via wwmath (TheSuperHackers#2670)

Backports upstream TheSuperHackers PR TheSuperHackers#2670 establishing the cross-platform
deterministic math standard across all systems:
- Add BaseDefines.h with RETAIL_COMPATIBLE_CRC and USE_DETERMINISTIC_MATH switches
- Add bit_adapter.h utility for portable bit_cast
- Update wwmath.h with comprehensive deterministic gm_*f math wrappers
- Route GameLogic, Locomotors, PhysicsUpdate, AIUpdate, and simulation math through WWMath
- Preserve CRT math in client/rendering code (Drawable, W3DShadow, PlaceEventTranslator, WW3D2)
- Backport full math parity to Generals base game target
- Update AGENTS.md, CodeRabbit guidelines, and reviewer prompts
@coderabbitai

coderabbitai Bot commented Oct 26, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 226 files, which is 126 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

Run configuration
Commits

Reviewing files that changed from the base of the PR and between afb09f1 and 4c5ecd6.

Files ignored due to path filters: 1
  • Dependencies/Utility/Utility/bit_adapter.h is excluded by !Dependencies/**
Files selected for processing: 226
  • .coderabbit.yaml
  • .devin/wiki.json
  • .github/prompts/review-pull-request.prompt.md
  • .github/workflows/build-windows.yml
  • AGENTS.md
  • Benchmarks/Google/Core/CMakeLists.txt
  • Benchmarks/Google/Core/Libraries/WWVegas/WWMath/WWMathBenchmark.cpp
  • CMakeLists.txt
  • Core/GameEngine/Include/Common/BezierSegment.h
  • Core/GameEngine/Include/Common/GameDefines.h
  • Core/GameEngine/Source/Common/Diagnostic/SimulationMathCrc.cpp
  • Core/GameEngine/Source/Common/INI/INI.cpp
  • Core/GameEngine/Source/Common/ReplaySimulation.cpp
  • Core/GameEngine/Source/GameClient/FXList.cpp
  • Core/GameEngine/Source/GameClient/MessageStream/LookAtXlat.cpp
  • Core/GameEngine/Source/GameClient/MessageStream/PlaceEventTranslator.cpp
  • Core/GameEngine/Source/GameLogic/AI/AIPathfind.cpp
  • Core/GameEngine/Source/GameLogic/AI/Pathfinder/Path.cpp
  • Core/GameEngine/Source/GameLogic/AI/Pathfinder/PathfindCell.cpp
  • Core/GameEngine/Source/GameLogic/AI/Pathfinder/PathfindLayer.cpp
  • Core/GameEngine/Source/GameLogic/Map/PolygonTrigger.cpp
  • Core/GameEngine/Source/GameLogic/Map/TerrainLogic.cpp
  • Core/GameEngineDevice/Source/W3DDevice/GameClient/BaseHeightMap.cpp
  • Core/GameEngineDevice/Source/W3DDevice/GameClient/CameraShakeSystem.cpp
  • Core/GameEngineDevice/Source/W3DDevice/GameClient/Drawable/Draw/W3DTankDraw.cpp
  • Core/GameEngineDevice/Source/W3DDevice/GameClient/Drawable/Draw/W3DTankTruckDraw.cpp
  • Core/GameEngineDevice/Source/W3DDevice/GameClient/HeightMap.cpp
  • Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DMouse.cpp
  • Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DParticleSys.cpp
  • Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DProfilerFrameCapture.cpp
  • Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTreeBuffer.cpp
  • Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DView.cpp
  • Core/Libraries/Source/Lib/CMakeLists.txt
  • Core/Libraries/Source/Lib/Include/Lib/BaseDefines.h
  • Core/Libraries/Source/Lib/Include/Lib/BaseFunctions.h
  • Core/Libraries/Source/Lib/Include/Lib/Coord2D.h
  • Core/Libraries/Source/Lib/Include/Lib/Coord3D.h
  • Core/Libraries/Source/Lib/Include/Lib/ICoord2D.h
  • Core/Libraries/Source/Lib/Include/Lib/ICoord3D.h
  • Core/Libraries/Source/Lib/Include/Lib/trig.h
  • Core/Libraries/Source/Lib/Trig.cpp
  • Core/Libraries/Source/WWVegas/WW3D2/animatedsoundmgr.cpp
  • Core/Libraries/Source/WWVegas/WW3D2/colorspace.h
  • Core/Libraries/Source/WWVegas/WW3D2/coltest.cpp
  • Core/Libraries/Source/WWVegas/WW3D2/hanim.cpp
  • Core/Libraries/Source/WWVegas/WW3D2/htree.cpp
  • Core/Libraries/Source/WWVegas/WW3D2/inttest.h
  • Core/Libraries/Source/WWVegas/WW3D2/metalmap.cpp
  • Core/Libraries/Source/WWVegas/WW3D2/ringobj.cpp
  • Core/Libraries/Source/WWVegas/WW3D2/segline.cpp
  • Core/Libraries/Source/WWVegas/WW3D2/shattersystem.cpp
  • Core/Libraries/Source/WWVegas/WW3D2/streak.cpp
  • Core/Libraries/Source/WWVegas/WW3D2/texproject.cpp
  • Core/Libraries/Source/WWVegas/WW3D2/visrasterizer.cpp
  • Core/Libraries/Source/WWVegas/WWLib/CMakeLists.txt
  • Core/Libraries/Source/WWVegas/WWLib/Point.h
  • Core/Libraries/Source/WWVegas/WWLib/WWDefines.h
  • Core/Libraries/Source/WWVegas/WWLib/always.h
  • Core/Libraries/Source/WWVegas/WWLib/visualc.h
  • Core/Libraries/Source/WWVegas/WWMath/CMakeLists.txt
  • Core/Libraries/Source/WWVegas/WWMath/aabox.h
  • Core/Libraries/Source/WWVegas/WWMath/colmathaabox.cpp
  • Core/Libraries/Source/WWVegas/WWMath/colmathaabox.h
  • Core/Libraries/Source/WWVegas/WWMath/colmathaabtri.cpp
  • Core/Libraries/Source/WWVegas/WWMath/colmathobbobb.cpp
  • Core/Libraries/Source/WWVegas/WWMath/colmathobbox.cpp
  • Core/Libraries/Source/WWVegas/WWMath/colmathobbtri.cpp
  • Core/Libraries/Source/WWVegas/WWMath/colmathsphere.cpp
  • Core/Libraries/Source/WWVegas/WWMath/euler.cpp
  • Core/Libraries/Source/WWVegas/WWMath/lookuptable.h
  • Core/Libraries/Source/WWVegas/WWMath/matrix3.cpp
  • Core/Libraries/Source/WWVegas/WWMath/matrix3.h
  • Core/Libraries/Source/WWVegas/WWMath/matrix3d.cpp
  • Core/Libraries/Source/WWVegas/WWMath/matrix3d.h
  • Core/Libraries/Source/WWVegas/WWMath/matrix4.h
  • Core/Libraries/Source/WWVegas/WWMath/normalcone.h
  • Core/Libraries/Source/WWVegas/WWMath/obbox.cpp
  • Core/Libraries/Source/WWVegas/WWMath/obbox.h
  • Core/Libraries/Source/WWVegas/WWMath/quat.cpp
  • Core/Libraries/Source/WWVegas/WWMath/quat.h
  • Core/Libraries/Source/WWVegas/WWMath/sphere.h
  • Core/Libraries/Source/WWVegas/WWMath/tri.cpp
  • Core/Libraries/Source/WWVegas/WWMath/v3_rnd.cpp
  • Core/Libraries/Source/WWVegas/WWMath/vector2.h
  • Core/Libraries/Source/WWVegas/WWMath/vector3.h
  • Core/Libraries/Source/WWVegas/WWMath/vector4.h
  • Core/Libraries/Source/WWVegas/WWMath/vehiclecurve.cpp
  • Core/Libraries/Source/WWVegas/WWMath/wwmath.cpp
  • Core/Libraries/Source/WWVegas/WWMath/wwmath.h
  • Core/Tools/W3DView/RingSizePropPage.cpp
  • Core/Tools/W3DView/SphereSizePropPage.cpp
  • Generals/Code/GameEngine/Include/GameLogic/PartitionManager.h
  • Generals/Code/GameEngine/Source/Common/Recorder.cpp
  • Generals/Code/GameEngine/Source/Common/System/BuildAssistant.cpp
  • Generals/Code/GameEngine/Source/Common/System/Geometry.cpp
  • Generals/Code/GameEngine/Source/GameClient/Drawable.cpp
  • Generals/Code/GameEngine/Source/GameClient/InGameUI.cpp
  • Generals/Code/GameEngine/Source/GameLogic/AI/AI.cpp
  • Generals/Code/GameEngine/Source/GameLogic/AI/AIGroup.cpp
  • Generals/Code/GameEngine/Source/GameLogic/AI/AIPlayer.cpp
  • Generals/Code/GameEngine/Source/GameLogic/AI/AISkirmishPlayer.cpp
  • Generals/Code/GameEngine/Source/GameLogic/AI/AIStates.cpp
  • Generals/Code/GameEngine/Source/GameLogic/AI/TurretAI.cpp
  • Generals/Code/GameEngine/Source/GameLogic/Object/Behavior/BridgeBehavior.cpp
  • Generals/Code/GameEngine/Source/GameLogic/Object/Behavior/DumbProjectileBehavior.cpp
  • Generals/Code/GameEngine/Source/GameLogic/Object/Behavior/GenerateMinefieldBehavior.cpp
  • Generals/Code/GameEngine/Source/GameLogic/Object/Behavior/MinefieldBehavior.cpp
  • Generals/Code/GameEngine/Source/GameLogic/Object/Behavior/SlowDeathBehavior.cpp
  • Generals/Code/GameEngine/Source/GameLogic/Object/Body/ActiveBody.cpp
  • Generals/Code/GameEngine/Source/GameLogic/Object/Contain/ParachuteContain.cpp
  • Generals/Code/GameEngine/Source/GameLogic/Object/Locomotor.cpp
  • Generals/Code/GameEngine/Source/GameLogic/Object/Object.cpp
  • Generals/Code/GameEngine/Source/GameLogic/Object/ObjectCreationList.cpp
  • Generals/Code/GameEngine/Source/GameLogic/Object/PartitionManager.cpp
  • Generals/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate.cpp
  • Generals/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/ChinookAIUpdate.cpp
  • Generals/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/DeliverPayloadAIUpdate.cpp
  • Generals/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/DozerAIUpdate.cpp
  • Generals/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/JetAIUpdate.cpp
  • Generals/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/MissileAIUpdate.cpp
  • Generals/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/POWTruckAIUpdate.cpp
  • Generals/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/RailroadGuideAIUpdate.cpp
  • Generals/Code/GameEngine/Source/GameLogic/Object/Update/CleanupHazardUpdate.cpp
  • Generals/Code/GameEngine/Source/GameLogic/Object/Update/CommandButtonHuntUpdate.cpp
  • Generals/Code/GameEngine/Source/GameLogic/Object/Update/DockUpdate/SupplyWarehouseDockUpdate.cpp
  • Generals/Code/GameEngine/Source/GameLogic/Object/Update/DynamicShroudClearingRangeUpdate.cpp
  • Generals/Code/GameEngine/Source/GameLogic/Object/Update/FloatUpdate.cpp
  • Generals/Code/GameEngine/Source/GameLogic/Object/Update/NeutronMissileSlowDeathUpdate.cpp
  • Generals/Code/GameEngine/Source/GameLogic/Object/Update/NeutronMissileUpdate.cpp
  • Generals/Code/GameEngine/Source/GameLogic/Object/Update/ParticleUplinkCannonUpdate.cpp
  • Generals/Code/GameEngine/Source/GameLogic/Object/Update/PhysicsUpdate.cpp
  • Generals/Code/GameEngine/Source/GameLogic/Object/Update/PointDefenseLaserUpdate.cpp
  • Generals/Code/GameEngine/Source/GameLogic/Object/Update/SlavedUpdate.cpp
  • Generals/Code/GameEngine/Source/GameLogic/Object/Update/StealthUpdate.cpp
  • Generals/Code/GameEngine/Source/GameLogic/Object/Update/TensileFormationUpdate.cpp
  • Generals/Code/GameEngine/Source/GameLogic/Object/Update/ToppleUpdate.cpp
  • Generals/Code/GameEngine/Source/GameLogic/Object/Weapon.cpp
  • Generals/Code/GameEngine/Source/GameLogic/System/GameLogic.cpp
  • Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/Shadow/W3DProjectedShadow.cpp
  • Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/Shadow/W3DVolumetricShadow.cpp
  • Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DAssetManager.cpp
  • Generals/Code/Libraries/Source/WWVegas/WW3D2/camera.cpp
  • Generals/Code/Libraries/Source/WWVegas/WW3D2/mapper.cpp
  • Generals/Code/Libraries/Source/WWVegas/WW3D2/motchan.cpp
  • Generals/Code/Libraries/Source/WWVegas/WW3D2/part_emt.cpp
  • Generals/Code/Libraries/Source/WWVegas/WW3D2/render2d.cpp
  • Generals/Code/Tools/WorldBuilder/src/GlobalLightOptions.cpp
  • Generals/Data/INI/FXListGeneralsX.ini
  • GeneralsMD/Code/CompatLib/CMakeLists.txt
  • GeneralsMD/Code/CompatLib/Source/d3dx8math.cpp
  • GeneralsMD/Code/GameEngine/Include/GameLogic/PartitionManager.h
  • GeneralsMD/Code/GameEngine/Source/Common/Recorder.cpp
  • GeneralsMD/Code/GameEngine/Source/Common/System/BuildAssistant.cpp
  • GeneralsMD/Code/GameEngine/Source/Common/System/Geometry.cpp
  • GeneralsMD/Code/GameEngine/Source/GameClient/Drawable.cpp
  • GeneralsMD/Code/GameEngine/Source/GameClient/InGameUI.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/AI/AI.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/AI/AIGroup.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/AI/AIPlayer.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/AI/AISkirmishPlayer.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/AI/AIStates.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/AI/TurretAI.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Behavior/BridgeBehavior.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Behavior/DumbProjectileBehavior.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Behavior/GenerateMinefieldBehavior.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Behavior/MinefieldBehavior.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Behavior/SlowDeathBehavior.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Body/ActiveBody.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Contain/ParachuteContain.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Locomotor.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Object.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/ObjectCreationList.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/PartitionManager.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/ChinookAIUpdate.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/DeliverPayloadAIUpdate.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/DozerAIUpdate.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/JetAIUpdate.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/MissileAIUpdate.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/POWTruckAIUpdate.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/RailroadGuideAIUpdate.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/CleanupHazardUpdate.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/CommandButtonHuntUpdate.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/DockUpdate/SupplyWarehouseDockUpdate.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/DynamicShroudClearingRangeUpdate.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/FloatUpdate.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/NeutronMissileSlowDeathUpdate.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/NeutronMissileUpdate.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/ParticleUplinkCannonUpdate.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/PhysicsUpdate.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/PointDefenseLaserUpdate.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/SlavedUpdate.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/SpectreGunshipDeploymentUpdate.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/StealthUpdate.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/TensileFormationUpdate.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/ToppleUpdate.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Weapon.cpp
  • GeneralsMD/Code/GameEngine/Source/GameLogic/System/GameLogic.cpp
  • GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/Shadow/W3DProjectedShadow.cpp
  • GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/Shadow/W3DVolumetricShadow.cpp
  • GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DAssetManager.cpp
  • GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/camera.cpp
  • GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/lightenvironment.cpp
  • GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/linegrp.cpp
  • GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/mapper.cpp
  • GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/motchan.cpp
  • GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/part_emt.cpp
  • GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/render2d.cpp
  • GeneralsMD/Code/Tools/WorldBuilder/src/GlobalLightOptions.cpp
  • GeneralsZH/Data/INI/FXListGeneralsX.ini
  • Tests/Google/Core/CMakeLists.txt
  • Tests/Google/Core/Libraries/WWVegas/WWMath/WWMathCalls.h
  • Tests/Google/Core/Libraries/WWVegas/WWMath/WWMathDumps.h
  • Tests/Google/Core/Libraries/WWVegas/WWMath/WWMathKeys.h
  • Tests/Google/Core/Libraries/WWVegas/WWMath/WWMathTest.cpp
  • Tests/Google/Core/Libraries/WWVegas/WWMath/WWMathTestCase.h
  • cmake/compilers.cmake
  • cmake/config-retail.cmake
  • cmake/gamemath.cmake
  • docs/WORKLOG/2026-10-DIARY.md
  • flatpak/com.fbraz3.GeneralsX.yml
  • flatpak/com.fbraz3.GeneralsXZH.yml
  • scripts/build/linux/bundle-linux-zh.sh
  • scripts/build/linux/bundle-linux.sh
  • scripts/build/macos/bundle-macos-generals.sh
  • scripts/build/macos/bundle-macos-zh.sh

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

- Set gamemath_SHARED_LIBS OFF and GM_ENABLE_INTRINSICS OFF in cmake/gamemath.cmake
- Enable POSITION_INDEPENDENT_CODE on gamemath target
- Add libgm.so fallback copy to flatpak manifests and bundle scripts
…twork drift

- Add resolveUpgradeForProducer in GameLogicDispatch.cpp to dynamically resolve upgrade templates from the producer object's CommandSet when NameKey sequential IDs drift across platforms
- Guard RecorderClass::sawCRCMismatch against null m_crcInfo on aborted replay playback
- Check TheRecorder->playbackFile return status in ReplaySimulation to prevent black screen hang on missing or invalid replay files
- Guard TheControlBar dereference against null in Object::canProduceUpgrade
- Update worklog for 31/10/2026
- Remove 2 non-vanilla Reforged FXList definitions from GeneralsZH/Data/INI/FXListGeneralsX.ini and 34 Zero-Hour-only definitions from Generals/Data/INI/FXListGeneralsX.ini that shifted TheNameKeyGenerator IDs by +2 before TheUpgradeCenter initialized
- Guard FXListStore::parseFXListDefinition when loading FXListGeneralsX.ini so it resolves existing keys without allocating new NameKeys
- Package Data/INI/FXListGeneralsX.ini in Windows CI artifacts and macOS/Linux release bundle scripts
- Revert temporary NameKey workarounds (resolveUpgradeForProducer and syncUpgradeCenterID) while retaining null-pointer crash guards in Recorder, ReplaySimulation, and Object
- Update October 2026 worklog diary
@fbraz3
fbraz3 merged commit cdf0585 into main Nov 2, 2026
12 checks passed
@fbraz3
fbraz3 deleted the feat/backport-upstream-deterministic-math-2670 branch November 2, 2026 19:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant