Skip to content

Zero Hour engine — macOS (Apple Silicon) engine-v0.1.7

Choose a tag to compare

@github-actions github-actions released this 06 Jul 17:36

Native macOS arm64 build of the Command & Conquer: Generals — Zero Hour engine.

Fixed — player house-color (team colours) on macOS

Units, captured flags and unit-type icons rendered a flat grey instead of the owning player's colour (the colour you assign to yourself / the AI in the setup screen).

  • Cause: player house-color recoloring was disabled by default on the macOS port, because re-enabling it produced black units. The real culprit was one level deeper: the recolored-texture upload path DX8Wrapper::_Create_DX8_Texture(surface)D3DXLoadSurfaceFromSurface was a silent no-op E_FAIL stub in the DX8→Metal shim — the recolored (team-coloured) pixels never reached the GPU, so the texture came back blank.
  • Fix: implemented D3DXLoadSurfaceFromSurface for real (surface→surface blit + pixel-format conversion through BGRA8 + nearest-neighbour scaling), verified the HOUSECOLOR vertex-material path is correct on-device, and turned player house-color back ON by default.

No graphics / effects / quality removed — this only adds the missing team colouring. Verified on-device: units, captured flags and unit-type icons take the player's side colour; clean at 120 fps; no black silhouettes.

Added

  • MTL_STUB_LOG=1 — makes every not-really-implemented DX8/D3DX shim stub announce itself when it's hit (throttled), so a silent no-op stub can't quietly break rendering again (this is the class of bug that caused the grey house-color above).
  • GEN_NO_HOUSECOLOR=1 — opt-out to revert to the old no-team-colour behaviour (A/B safety).

The GeneralsZH Launcher downloads this engine automatically. You must own a legitimate copy of Zero Hour — EA game data is not included. Apple Silicon (M-series) only. Checksums in SHA256SUMS.