Zero Hour engine — macOS (Apple Silicon) engine-v0.1.7
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)→D3DXLoadSurfaceFromSurfacewas a silent no-opE_FAILstub in the DX8→Metal shim — the recolored (team-coloured) pixels never reached the GPU, so the texture came back blank. - Fix: implemented
D3DXLoadSurfaceFromSurfacefor real (surface→surface blit + pixel-format conversion through BGRA8 + nearest-neighbour scaling), verified theHOUSECOLORvertex-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.