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.
@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.
Windows GOG DOS Games on M-Series Macs
A tutorial explaining how to run Windows-only GOG DOS games on Apple Silicon Macs using DOSBox for Mac, with step-by-step instructions and configuration examples.
@JasonBotterill: Reverse engineered the original Xbox version of Futurama as native MacOS game in C++
Developer Jason Botterill reverse engineered the original Xbox version of Futurama as a native macOS game in C++, sharing the project in response to an OpenAI Developers tweet about GPT-6 Astra.