Skip to content

fix: resolve beta-13 regressions (strategy center, tree render)#210

Merged
fbraz3 merged 5 commits into
mainfrom
fix/beta13-wwmath-regression
Jul 14, 2026
Merged

fix: resolve beta-13 regressions (strategy center, tree render)#210
fbraz3 merged 5 commits into
mainfrom
fix/beta13-wwmath-regression

Conversation

@fbraz3

@fbraz3 fbraz3 commented Jul 13, 2026

Copy link
Copy Markdown
Owner

Description

This draft PR addresses multiple regressions introduced in Beta-13, primarily focusing on fixing crashes and broken logic introduced by the deterministic math and grid layout changes.

Note: This is currently a draft as we are still investigating the pause mechanism bug.

Fixes #206

Changes

  • SpecialPowerModule Fix: Removed the #if RETAIL_COMPATIBLE_CRC restriction in SpecialPowerModule.cpp, consistently initializing m_availableOnFrame to 0. This fixes the regression where targetless powers (like USA Command Center Spy Satellite and Strategy Center Battle Plans) remained visually enabled but functionally inactive due to an integer overflow during timer recharge.
  • Tree Render Segfault Fix: Corrected W3DTreeBuffer::updateTexture() to properly capture the isLegacyGrid flag output from WorldHeightMap::countTiles and pass it to WorldHeightMap::readTiles. This fixes the EXC_BAD_ACCESS segfault during post-intro scene rendering caused by uninitialized texture tiles on legacy sheets.
  • Log Cleanup: Removed the legacy LogSkinRender debug function in dx8renderer.cpp to prevent unnecessary writes to logs/skin_render.log.

fbraz3 added 3 commits July 13, 2026 13:16
…ressions

- SpecialPowerModule: Universalize m_availableOnFrame initialization to 0 instead of 0xFFFFFFFF when RETAIL_COMPATIBLE_CRC is disabled. This resolves the regression where USA Command Center (Spy Satellite) and Strategy Center (Battle Plans) buttons were visually enabled but non-functional due to infinite frame recharge math upon unpausing.

- W3DTreeBuffer: Fix segfault by properly capturing the isLegacyGrid flag from WorldHeightMap::countTiles and passing it to WorldHeightMap::readTiles.

Fixes #206
Removed the legacy `LogSkinRender` debug function and its call in `dx8renderer.cpp`, which was needlessly writing to `logs/skin_render.log` during gameplay.
Restored `!TheFramePacer->isGameHalted()` check in the `GameEngine::update()` loop for both Generals and Zero Hour. This fixes a regression from TheSuperHackers sync where the game logic and background units continued to tick and animate even when the Esc menu was opened.
@fbraz3 fbraz3 marked this pull request as ready for review July 13, 2026 18:33
Comment thread GeneralsMD/Code/GameEngine/Source/Common/GameEngine.cpp Outdated
fbraz3 added 2 commits July 13, 2026 21:20
Replaces the naive loop check with upstream's 'fa2761324' fix which prevents logic time accumulator buildup while the game is halted.
@fbraz3 fbraz3 merged commit 65c9fc7 into main Jul 14, 2026
8 checks passed
@fbraz3 fbraz3 deleted the fix/beta13-wwmath-regression branch July 14, 2026 02:19
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.

Bugs in Skirmish in Beta 13

2 participants