72 comments

[ 3.1 ms ] story [ 79.6 ms ] thread
EA released the Generals source under GPL v3, the GeneralsX project got it running on macOS/Linux, and I've taken it the rest of the way: native iOS and iPadOS builds of Zero Hour, plus Apple Silicon macOS.

What works (all verified on a real iPad and iPhone):

Campaign, Skirmish, and Generals Challenge: full missions, objectives, cutscenes, saves All audio: music, unit voices, EVA announcements, Challenge taunts, briefing FMVs Touch controls built for RTS: tap select, drag a selection box, long-press deselect, two-finger camera pan, pinch zoom Self-contained install: game data ships inside the app bundle It's the real engine: unmodified game logic compiled for ARM64, rendering DirectX 8 → DXVK → Vulkan → MoltenVK → Metal. Not emulation, not streaming.

No game assets are included or distributed. You need your own copy (Steam sells Zero Hour) and a script pulls the data from your own account. Code is GPL v3.

Repo, with a full engineering log of every bug and fix (the black-minimap one is a 2003 texture-format fallback that ate the alpha channel; worth a read if you like archaeology): https://github.com/ammaarreshi/Generals-Mac-iOS-iPad/blob/ma...

Building: macOS is about four commands; iPhone/iPad needs Xcode and a free Apple developer account since you sideload your own build. Known issues (long-session memory on iPad, a rare backgrounding crash) are documented in the README.

Credit: fbraz3/GeneralsX did the heavy macOS/Linux lifting, TheSuperHackers keep the community codebase alive, and EA did a genuinely good thing releasing the source. The engine fixes I found are heading upstream so every platform benefits.

(And of course, not affiliated with or endorsed by EA, and sorry China had to deal with all of those particle cannons in that demo video)

> rendering DirectX 8 → DXVK → Vulkan → MoltenVK → Metal

Another great case study in why native Vulkan drivers would be a boon for Apple's mobile computing. That's quite the render pipeline...

If this would be an actual LLM-generated port, it should have been trivial to replace this Jenga tower with a direct D3D8 to Metal shim (or replace the D3D8 renderer alltogether with a Metal renderer).

Also native Vulkan support on macOS would only have removed one step in that render pipeline. Besides, I bet if Apple would offer a native Vulkan API, it wouldn't look much different than Khronos' solutions (MoltenVK or KosmicKrisp), e.g. Apple's solution would almost certainly be a shim on top of Metal, just like their GL/GLES or D3D12 implementations.

I wanna know if these techniques would be useful for Emperor: Battle for Dune (2001). It's the first 3D RTS by Westwood Studios, predating C&C Generals by just a couple years. It's popularity was hampered by intellectual property disputes and a introduction of a new faction that diverged from the book series lore. The gameplay, soundtrack, and campaign missions were awesome.
Emperor was a great game. My only real complaint was the five sub-factions seemed to be imbalanced. I’d like to revisit to see if the was missing something.
I remember that game! Cinematics! and some units had dune realistic shields so when hit with laser, both attacker and defender died. I don't think i've finished it, ending had some worm timer mission i couldn't get to in time.
someone do it for debian, omg. i use debian family, it has been years, i haven't played this gem
> 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).
This is an actual dream come true
When someone ported pylint to rust this place was full of ‘who will maintain this’ and met with blank stares when the answer was ‘what do you mean’ or ‘it’ll maintain itself’.

Good job. It was inevitable, but still someone had to, please excuse me, say the words.

Is there any hope for Red Alert 2?
no way fable did this. It would have stopped after the words "command and conquer" and nerfed you to opus (while also landing you on some nsa watch list)
I’ve been using it to use Ghidra to do reverse engineering for modding Zelda: Tears of the Kingdom. Pre-ban it would flag immediately, post-ban it _rarely_ flagged anything and when it did I realized I could just make a memory telling it to convert reverse engineering speech into game development speech, not mentioning pointers, memory, addresses and decompiling. Then the flags mostly went away.

You can sidestep flags by just compacting and then changing the model back at any rate.

> (tap-select, drag-box, long-press deselect, two-finger scroll, pinch zoom)

This is another "AI-ism" I noticed, mostly in coding agents - they seem to be very fond of making up new "compound nouns" (and occasionally verbs) to sum up relatively complex and specific concepts into single noun phrases. I wasn't sure if it's to save tokens or if the AI uses this to get a concise "identifier" for a concept that it can refer back to later, but I found it very noticeable.

I find the resulting sentences hard to read, though it does get better if you're aware of that tendency and make a conscious effort to parse the noun phrases. But I guess since it's just intermediate output from coding agents and not text for essays or blog posts, it's fine.

ive had opus try movin Merlin's revenge up from director/shockwave.

the result: http://jhedin.github.io/merlin-s-revenge/

reasonably it works quite close to the lingo, but this is way difficult, and not just from being rusty. steve had most things triggered on the animation frame, which opus hasnt quite figured out by looking at the code and pulling stuff out of the .dir

i do remember that playing at double scale was a lot harder in general, but theres a really clear cooldown missing between attackes

I just noticed a Flatpak folder in the repo. Does MacOS Support Flatpak somehow??
IMHO, this is an actual good use of what sounds like a person guiding a model to do a mass conversion. Although, I wish the porting docs were a little wordsmithed by a human, the AI generated text style is grating.

The stakes are low, it’s mostly for fun and you can iterate on it. Compare this with Bun which was just like, “hey we converted everything to Bun to Rust from Zig, of course it works, what could possibly go wrong, I’ll totally write up a blogpost (that still doesn’t exist) explaining what we did, you can put this into your production environment soon!”

Tiberian Sun next.
Very cool.

One big caveat with iPad and mobile, though, is battery usage. I strongly suspect that power consumption is the reason that a number of games made it to Mac, but not iPad.

How is it done "using Fable" when the first commit was Feb last year??
Does it actually play identically or is there going to be weird bugs all over the place?

Seems like an impossible ask to verify if you don't have an immense test suite that covers everything.

The parent of the parent project has ground truth replays, which get compared to new PRs. The game uses lockstep networking, so this is required to prevent desyncs.
(comment deleted)
I tell folks there's a chance GTA6 will be ported to PC before it's officially released to PC.
In the old days this would have required a proper team...
> In the old days this would have required a proper team...

Fable contributed 19 commits; that's well within a solo effort.

No, it would have required one person and maybe 2 or 3 evenings.

Check the commit history what the project actually added on top of the already existing Linux+macOS port which it forked from. It's a handful commits and comes down to a few dozen to a few hundred lines of actual code changs.

I wonder if this will work on my iPad 3, maybe with some Swift... 3 backport code?
Title is click bait.

This started back in February and looking at commits, Fable did only a small part of the latest commits. 19 commits out of 2000:

https://github.com/ammaarreshi/Generals-Mac-iOS-iPad/commits...

And maybe it wasn't even Fable, they might have downgraded to Opus.

This is the kind of frequent misinformation that makes me skeptical of Anthropic LLM claims. Whenever I compare them to GPT 5.5 on my web dev workflows, they seem to trade blows, even Fable, which I started testing since it was re-enabled.

Also I bet any decent LLM could have done such port. Think GLM 5.2 or similar which would probably work better because it doesn't constantly try to guess if I'm a terrorist trying to hack goverments or develop some biological weapon.

People just don't have the resources to compare LLMs and imply whatever they used is the best thing ever and unlocked some new workflow.

I have seen little improvement since Opus 4.6.

Finally, I can play Zero Hour everywhere