Command and Conquer Generals natively ported to macOS, iPhone, iPad using Fable
Summary
A community developer has created a native port of Command & Conquer Generals: Zero Hour for Apple Silicon Macs, iPhones, and iPads, using the GPL source code and a Vulkan-to-Metal translation layer. The port includes touch controls and runs without emulation.
View Cached Full Text
Cached at: 07/04/26, 09:42 PM
ammaarreshi/Generals-Mac-iOS-iPad
Source: https://github.com/ammaarreshi/Generals-Mac-iOS-iPad
Command & Conquer Generals: Zero Hour — macOS, iOS & iPadOS
Zero Hour running natively on Apple Silicon Macs, iPhone, and iPad — campaign, skirmish, and Generals Challenge, with touch controls built for RTS (tap-select, drag-box, long-press deselect, two-finger scroll, pinch zoom). No emulation: this is the real 2003 engine compiled for ARM64, rendering DirectX 8 → DXVK → Vulkan → MoltenVK → Metal.
Built on EA’s GPL v3 source release via fbraz3/GeneralsX
(which did the heavy lifting of the macOS/Linux port — this fork adds the iOS/iPadOS
port and a set of engine fixes). The original GeneralsX README lives on the upstream-main branch.
No game assets are included or distributed. You need your own copy (Steam, ~$5 on sale).
Quick start — macOS
Prerequisites (one time):
# Toolchain
xcode-select --install
brew install cmake ninja meson pkgconf
brew install --cask steamcmd
# vcpkg (full clone — a shallow clone breaks manifest baselines)
git clone https://github.com/microsoft/vcpkg ~/vcpkg && ~/vcpkg/bootstrap-vcpkg.sh
export VCPKG_ROOT=~/vcpkg # add to your shell profile
# LunarG Vulkan SDK (NOT the Homebrew cask) — https://vulkan.lunarg.com/sdk/home
export VULKAN_SDK=$HOME/VulkanSDK/<version>/macOS # add to your shell profile
Clone, build, get assets, play:
git clone https://github.com/ammaarreshi/Generals-Mac-iOS-iPad.git GeneralsX
cd GeneralsX
./scripts/build/macos/build-macos-zh.sh # checks deps, configures, builds
./scripts/build/macos/deploy-macos-zh.sh # creates ~/GeneralsX/GeneralsZH + run.sh
./scripts/get-assets.sh <your_steam_username> # fetches game data you own
cd ~/GeneralsX/GeneralsZH && ./run.sh -win
Quick start — iPhone / iPad
On top of the macOS prerequisites: full Xcode (signed into your Apple ID),
brew install xcodegen, and a (free or paid) Apple Developer team.
cd GeneralsX
git submodule update --init references/fbraz3-dxvk # iOS DXVK is built from this + Patches/dxvk-ios.patch
./scripts/build/ios/fetch-moltenvk.sh # pinned MoltenVK.framework (checksummed)
./scripts/build/ios/stage-fonts.sh # Liberation fonts, renamed as the game expects
cmake --preset ios-vulkan
cmake --build build/ios-vulkan --target z_generals
GX_TEAM_ID=<your-team-id> GX_BUNDLE_ID=com.you.generalszh \
./scripts/build/ios/package-ios-zh.sh --install # assembles, signs, installs
Find your team id in Xcode → Settings → Accounts. Assets ship inside the app
bundle (self-contained install); --dev skips the ~2.7 GB copy for fast code
iteration.
Where things are
| Path | What it is |
|---|---|
docs/port/PORTING_PLAYBOOK.md | The complete engineering log of this port: every failure mode, root cause, fix — start with §8, the bug archaeology: the black minimap, the silent EVA lines, and the chirp |
docs/port/PORTING_PATTERNS.md | Generalized methodology for porting classic Windows games to Apple platforms |
docs/port/RELEASE_CHECKLIST.md | Gate for public release |
scripts/get-assets.sh | Steam asset fetcher (your own copy; app 2732960) |
scripts/build/macos/, scripts/build/ios/ | Build, deploy, packaging pipelines |
ios/ | XcodeGen signing-stub project + ios/config/ (staged Options.ini, dxvk.conf) |
Patches/dxvk-ios.patch | DXVK changes the iOS d3d8/d3d9 dylibs are built from (applied via the local-fork build) |
Known issues
- Long sessions on iPad can be killed by iOS for memory (~3 GB+ resident); the app exits to the home screen with no dialog. Session logs (current + previous) are in the Files app under the game’s folder. Under investigation.
- Backgrounding mid-game can occasionally crash on iOS — the lifecycle pause covers the common paths; a rare race remains. Save often.
License & credits
Engine code GPL v3 (EA’s source release → GeneralsX → this fork). Game assets: not included, not licensed here. Credits: Westwood/EA Pacific (the game), EA (the source release), fbraz3/GeneralsX (the base port), TheSuperHackers/GeneralsGameCode (community mainline), DXVK, MoltenVK, SDL, OpenAL Soft, FFmpeg, Liberation Fonts.
This port was built as a human+AI collaboration: engineering by
Claude Code (Anthropic’s Claude, Fable model),
directed and playtested on real devices by Ammaar Reshi. The engineering log in
docs/port/ is the unedited record of how that worked.
Similar Articles
@eladgil: https://x.com/eladgil/status/2081891832997556449
Ocarina of Time now runs natively on iOS and iPadOS via the Ship of Harkinian decompilation project, marking the first native port to Apple's mobile platforms.
GameToMac
GameToMac leverages GPT-6 Astra AI to make Windows games playable on Apple Silicon Macs with high performance, supporting initial titles and promising broader compatibility soon.
@liyong2077: Zelda: Tears of the Kingdom on an M4 MacBook Air: instant loading and 90 FPS。Now open source! Give it a try — search fo…
MacNativeGames is an open-source project that runs The Legend of Zelda: Tears of the Kingdom natively on Apple silicon Macs, delivering instant loading and ~90 FPS on an M4 MacBook Air by rewriting NVN graphics to Metal 4 and answering Switch services with a small host.
@marc_ibrahim: GameToMac is out. Age of Empires IV on Apple Silicon. High fps, stable. Download: https://gametomac.com More games soon…
GameToMac is a new tool that allows users to play Age of Empires IV on Apple Silicon Macs with high fps and stability, with more Windows games planned for future support.
Half-Life ported to Mac OS 9
Half-Life has been ported to Mac OS 9 by developer doctashay using a fork of the Xash3D FWGS engine, running on PowerPC Macs. The port includes the full game, multiplayer, and expansions Blue Shift and Opposing Force.