upvote
If you think this port is related to tour point; The source code for Command and Conquer generals (and other C&C games) was released a while back. This port uses that source code. So this port is not based on reverse engineering. The port even states someone else (manually) already did the hard work of porting it to macOS and Linux (so not an LLM):

> 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

reply
Then the title is incorrect. Generals has been on the macOS App Store for years.
reply
> Then the title is incorrect. Generals has been on the macOS App Store for years.

Neither the HN submission or GitHub repository says it's first or novel though? Just that it's (another) port of it?

reply
The HN title makes it sound like Fable did the port from the original code base to macOS and iOS, but this is very wrong (the project's readme does a much better job). It's merely enhanching an existing macOS version to also run on iOS, which tbh is very trivial and not at all impressive for any LLM.

The actually important work (of making the original code release portable and then create Linux and macOS ports) had already been done in https://github.com/fbraz3/GeneralsX. There is really not much to see here.

reply
> > It's merely enhanching an existing macOS version to also run on iOS, which tbh is very trivial and not at all impressive for any LLM.

It's so crazy to remember sitting in front of W3Schools after school trying to learn PHP to create a website, and hear people today saying it isn't very impressive a fucking machine can automatically translate/port code from one platform to another, even a machine doing that with PHP3 > PHP4 code back then would have been cool but nope, "not at all impressive" just because things improved so much, so quickly, everyone got quickly used to the status quo.

I agree with you in general though, the title does make it sound like more was done than what was done in actuality, as it was just a iOS port. Still, I'd wager it seems interesting enough, given it's on the front page right now.

reply
> Still, I'd wager it seems interesting enough, given it's on the front page right now.

It's a good example of AI psychosis I guess, people reading things into a headline which they want to be true, no matter what reality says ;)

When you look at the commit history, the actual changes come down to a few dozen lines of code, all of them absolutely trivial, and most of those code changes seem to be cherry-picked bugfixes from the original project.

reply
> It's a good example of AI psychosis at work ;)

More like "wisdom of the crowds" (for better or worse) unless you're trying to argue that everyone who upvotes/downvotes on HN suffers from AI psychosis ;)

reply
> everyone who upvotes/downvotes

You can’t downvote articles, so a relatively small amount of enthusiastic people slamming upvote will do it.

reply
The AI bros industry needs to keep the impression that employees can be replaced with something more cheap since otherwise where will all the money come from that is burned right now?
reply
HN titles are not the best.

Have you ported a desktop title to mobile? It is NOT trivial. This is the next step in a continuing chain of work that builds upon the next and next person's work, but this is not a trivial step. If it was so trivial, why hadn't it already been done?

The jump to Apple Silicon is net-new work, and they aren't trying to pretend they did more than they did.

> This fork — the iOS/iPadOS port (arm64-ios cross-build, DXVK-on-iOS, touch controls, app lifecycle, packaging) and engine fixes, offered upstream

They are even asking you to support the original creators on Steam, so they are getting a cut. No one is stealing assets. I would love to see more of this sort of work being done out in the wild, not discouraging it. Were previous steps harder? Absolutely. Doesn't that invalidate this step? No.

reply
I added several quality-of-life features / UX improvements to a very old game, “Deadlock: Planetary Conquest”[0]

I had no idea how to do any of this. I let GPT-5.5 download Ghidra + MCP connectors, start the project, and do all the work. I gave it my vision and gave it iterative user testing feedback.

Now I have a MUCH more playable UX.

O: https://store.steampowered.com/app/328440/Deadlock_Planetary...

reply
Are your changes available to download?
reply
I loved that game. You may me excited to know that there was a song from the developers on the CD: https://www.youtube.com/watch?v=RuV4Oe9n5T0
reply
We are also going to get shovelware without end.

1983 will seem like nothing by comparison.

reply
10 years is far too pessimistic for this being a routine task, I think 2 years max. As you mentioned, you can already do this today by just giving GPT 5.5/Opus 4.8 an IDA/Ghidra tooling (a CLI or MCP, I have a custom CLI for it). You can start with the LLM going from the string anchors and renaming functions/globals, then when you have enough functions, the LLM can start working on typing - IDA has a very powerful typing API for HexRays-decompiled code, you can even type locals and it all persists in a DB.

My custom IDA CLI is just a simple thing on top of IDA Python's integration + ida-domain + some higher-level helpers, and works as a daemon with workers, so a stale/bad request doesn't corrupt an IDA DB (an issue I had when I was using idasql).

A bit offtopic, but: do you have any links to your efforts? I'm curious to see what other people do in this area.

reply
Have you published your IDA CLI anywhere? I'd be interested to see what that looks like
reply
Not yet, unfortunately, but I might in the future. To be honest, it's nothing unique. I got inspired by https://github.com/allthingsida/idasql which I initially used, but it had a lot of bugs, a big codebase size, and IDA's C++ API is really easy to misuse and corrupt a DB, so I had GPT 5.4/5.5 make a new one for itself based on IDA's Python SDK, which is official and doesn't need weird SQL hacks.

Then recently I found https://github.com/bkerler/ida_rpc which seems to be ~60% the same thing as the one I have, the only big difference is that I do not give any special commands to LLMs, they just have to write Python in scripts/inline heredocs to interact with IDA. This lets them do a lot more interesting things since they get a full programming language.

This is an example of how LLMs work with idagent (`ida` is implicitly imported, ida.types, ida.comments is helper's own wrappers): https://paste.debian.net/hidden/cf46a122

More interesting example that was used to let the LLM/me track the rename progress for the initial function renames + gaps (code-looking like bytes that weren't inside of functions, IDA's autoanalysis missed some real functions). Although the game turned out to be small enough with only ~1500 real game functions that needed renames, which was done in ~10 hours of agent time total I think (I didn't parallelize with multiple agents). https://paste.debian.net/hidden/bf458b3a

To be honest, you can probably have an agent vibecode a similar MVP tool to the one I have in about an hour-two :)

reply
The mild alarm for me is that this won't be limited to just games.

I've spent almost 30 years building applications for the web. I've been switching my attention to different models of distribution in part because I see a desire for people to not be paying monthly seat subscriptions, but also because it can simplify my own operations - I want to move to a solo indie dev model, and giving you an executable you run means you look after "operations", and I don't. Desktop applications in particular have the potential for you to integrate them with your agent workflows.

But if I put effort into building some secret sauce into an application, and there is then a risk that by distributing it, it gets reverse engineered and then rebuilt by competitors, malicious actors, whoever, there is now the same economic risk to software distribution as there is to DRM-free media distribution. As a result, I might just not do it.

Now, some people will argue software wants to be free - build on the F/LOSS economic model, this becomes less of an issue - but there isn't really a viable F/LOSS economic model for most developers.

Per seat monthly subscriptions with remote access seems like the way we need to be, then...

reply
One area I think is really going to get slaughtered by LLMs are marketplace plugins. Those monthly fee plugins people release for things like Jira, Shopify, Salesforce, etc. There's a subset of those that don't have some backend that's hard to replicate, and asking an LLM to reverse engineer and make your own plugin is trivial.
reply
I can see it both ways. Paying 5 bucks for an add-on that's reputable and not having to think about it again may be preferable to shipping your own. It's not evident to me that one-shot-esque LLM programs will ever work as expected, since they're limited by the amount you have to specify, and then maintain as new issues arise. It's the type of work that a lot of people will be unwilling to put in.

That said, I also think that public reviews will start getting recalibrated by the users themselves. People will start noticing that programs are unreliable or lack features which are seemingly simple to implement with an LLM. The quality of an app may very well depend on how hard it is to replicate, otherwise, why not ship your own?

reply
> asking an LLM to reverse engineer and make your own plugin is trivial.

If you already have engineers on staff, a few tens (or even hundreds) of dollars per month per plugin is likely a rounding error budget-wise. If you don't have your own engineers, you're probably not going to be able to produce something as good (reliable, well thought out, etc) as a commercial offering.

I had the same gut reaction as you, but the reality is much more subtle. We work with several clients who are bought into at least one of these ecosystems, and there's no way the math ever works out in favor of building an in-house solution.

reply
The games industry will push us even harder toward streaming everything.
reply
Would you please explain more your Ghidra+LLM workflow? What you are doing and how does the LLM help you? Thanks!
reply
Not the person you asked but I frequently use Claude (Opus primarily) to reverse engineer embedded hardware. It uses a mix of Ghidra, Radare2, and just the arm-none-* tools. I can’t say I have a particular workflow though, I just say “we’re reverse engineering foo.bin. It’s the firmware for a servomotor. We talk to the servo over RS485 and it seems that if I send it command X it will sometimes silently reject the command. Can you dig into the data reception and command parsing layers to see if there’s an explanation. Let’s keep notes in @20260704-reverse-engineer-foo-motor.qmd”

It works great just like that.

reply
> Let’s keep notes in @20260704-reverse-engineer-foo-motor.qmd

Curious - why like this? I usually tell it to write down the analysis once all is clear, so I'm wondering if your approach is better.

reply
Often it ends up being multi-session for this particular kind of work. We’ll get to a point where I have to go actually test some stuff out with hardware to provide some answers back, or in the case of this servo in particular… I end up having different questions a few days later.

These notes files do end up being more of a “how we got here” messy journal and less of a real report but they’re full of useful breadcrumbs that make it quick to pick things back up in a fresh context. Having it write a summary report on a topic based on the raw notes works out pretty good.

Another useful thing with these (not RE) is that sometimes I end up starting to debug a problem and I (or Claude) realize that it might be related to a different problem and being able to then cross-reference between the two raw notes files while pulling that thread seems to work well.

Whether or not it’s the “right” approach, I overall tend to treat sessions/context as ephemeral and need some kind of more solid WIP artifact. I do work in an industry that tends to trigger safeguards (unmanned/autonomous agricultural aviation) as well, and have occasionally gotten Claude to a point where I can’t get a session to continue but Codex will pick it up and finish.

reply
I hope we get Skyblivion soon
reply
Completely unrelated but I find it amusing in a good way that Oblivion is recognized more favorably now. I never understood the disregard for it (horse armor nonsense aside), as it has a very compelling, unique atmosphere and a not so terrible storyline/writing.
reply
All Bethesda’s game generally suck without mods to a bigger or lesser extent. So it takes a while for a community of enthusiasts to appear but something like Oblivion or Skyrim were a much better experience 5-10 years after release than initially.

Of course then you have Starfield which is so unimaginable uninspiring that nothing can really be done to save it..

reply
To me, the level scaling just completely annihilates the game. Why even have a leveling system if practically everything just stays leveled with you?
reply
Exactly what I was going to say. Oblivion was the first Elder Scrolls game that had level scaling. It's just extremely lazy design that ruins any sense of progress/immersion. In Oblivion/Skyrim there are plenty of mods that remove the scaling, and end up with worlds that are vastly more interesting and immersive. I highly recommend Requiem.
reply
I hate hate hate level scaling. I believe they also introduced it to WoW, which ruins the power fantasy of going back to a lower level area and kicking butt, or the fear of venturing in a higher level area and hauling ass out of there. I agree, lazy game design.
reply
I agree, I don't like it either. But... how would they then implement a world where you can wander everywhere? What it brings to the table is that you can wander across the world and not become terribly outmatched as soon as you wander "too soon" to an area.

My gaming preference is to go to an area as per game design, so the fact that I would be outmatched does not bother me and would prefer it that way. I do, however, understand why the game designers chose level scaling for what they wanted to achieve.

reply
As you note, being constrained in where you can go at level 1 is not a bad thing in itself, but it is a trade-off. Yes, as much as I personally don't mind it, I see how some players/designers might find such a limitation unfit for their game or not working for their playstyle.

You can still work around this without resorting to level scaling. You can give players an exploration option that avoids fighting, but sacrifices something else (ie., you can explore as a ghost, but can't take any loot with you). You can give low-level players some kind of newbie buff that will keep them alive (but won't allow them to win). You could make the perception of the world level dependent. You could also just scale locations or regions once, so that if a player reaches it at a low level, it'll become easier, and if you get there at a high level, it'll become the de facto endgame area. You could also just not implement leveling at all: The Bard's Tale (remake) was a bit like this.

Leveling up is not fun if it doesn't have an impact on how your character interacts with the world. If you're going to use level scaling to make leveling a no-op, it's often better to just go the action-adventure route and not pretend the game is an RPG. Seriously: what's the point of pumping my Strength stat if Villager A always has enough vitality to offset any gains on my part? It's especially grating if it's the same village and the same villager, revisited 40 hours later, and it still takes 3/4 of your health in a hit.

I don't think naive level scaling (Oblivion/Skyrim-style) is the right solution for "let the player go anywhere they want from the start". It's certainly a solution, but not a good one. A more nuanced mix of story justification, natural movement limitations (distance, special skills needed to get somewhere), level/area design (make areas with harder enemies less likely to be visited first), some non-combat exploration options, etc. all seem like a better way of letting the player experience open-world freedom without taking away the RPG progression "from zero to hero" from them.

I played a lot of Might and Magic VII back in the day (a few years before Morrowind IIRC). It was a huge world and you could go anywhere after getting off the tutorial island. Some endgame areas were gated behind lengthy quests, some areas were inaccessible without reaching them "the hard way" for the first time, others were impossible to reach without special skills or items, and there were skills/spells (invisibility, fly) that allowed safe passage through high-level areas if needed. Taken as a whole, it gave you a lot of options in terms of where to go at any given time, protected you to some extent from getting insta-killed because you made a wrong turn, but didn't make exploration trivial or level progression pointless. When you give players freedom, you should also allow them to commit suicide by charging at a horde of dragons while underleveled and underprepared. Trying to make the whole world immediately accessible is the kind of handholding that is actually limiting in the long run, and takes away an important part of the RPG experience. I don't think there are many CRPGs outside of TES that use level scaling - personally, I only experienced one in Wizardry 8, and it was way less absurd than Oblivion (areas had level ranges - you won't get an endgame area mob to be level 1 if you happen to reach it at that level yourself, and Villager A in starting area won't ever get to level 20 if you revisit it later).

So, between some limited/partial scaling and all the other design choices you could make, using Oblivion-like level scaling to "make the world accessible" is just bad, lazy design to me.

reply
I hate level scaling in games with passion. An argument in favor I heard is that it's supposed to make it easier for the player to go anywhere from the start. Maybe, but coming from classic CRPGs and some TRPG background, I just can't bring myself to understand that impulse: you see a world-ending dragon god destroying a castle, and you think it's a good idea to chase it to its lair... at level 1?? With a plank in hand and with a shirt as your armor??? It's absurd!

Then there's the "level up by doing" mechanic, which is a mixed bag. It can be done well, but in Oblivion, it only resulted in putting a book on the spacebar. Voila, my character literally jumps around and looks utterly idiotic, but Acrobatics levels rise.

Being unable to just go fight a dragon at level 1, and then progressing to routinely curbstomping dragons (Baldur's Gate 2 - solo Sorcerer run is my favorite example: "I see, you're resistant to magic. Let me introduce you to the Magic Sequencer with Lower Resistance x4. Time stop. Horrid wilting. Wish rest. Oh, I didn't need to, you're dead already.") by the end. It's not the only selling point of RPGs, and it can sometimes be omitted entirely (e.g., Disco Elysium). But if there is a classic leveling system, I expect it to work, from zero to hero. It's not as fun if the numbers going up don't translate into real changes in how your character interacts with the world.

reply
I think Oblivion's reception was mostly in relation to how people felt about Morrowind. Oblivion simplified a lot of what Morrowind did, which drew some ire. Atmospherically, though, people weren't happy that they moved from Morrowind's much more unique fantasy setting, full of massive fungi and swamp-striding bugs and weird demigods, and moved to a much more generic looking medieval countryside. That said, I also appreciate the game's reassessment, because I think some of the factions quest lines are among the best in the series.
reply
Your take is very interesting, but please do not forget that pirating games is a crime.
reply
Reverse engineering and pirating are not the same thing (although the former may certainly be used as a means to achieve the latter). As long as you aren't distributing the game, distributing code that legitimate owners of the game can use to run their game on more platforms is not a crime.
reply
In systems engineering this was proven in court when you have one engineer writing specs and another implementing the "samish" system from those specs, but I'm not sure that would relate to any of the art assets made by the original authors of a game. I'd imagine any art, narrative writing or sound would still be considered IP, and without those things you don't have much of a game.

I suspect it won't stop people, and that it won't be much of an issue in a lot of cases. I wouldn't want to be the one to test it in any sort of court though. Not even on the other side of things, where it'll become even more of a nightmare to protect your indie IP on any form of platform which doesn't heavily regulate things.

reply
>distributing code

The code is also copyrighted and owning a license for a game does not make you safe from being sued for pirating that game or its code. It's fine in this case only because the engine was open sourced.

reply
> The code is also copyrighted and owning a license for a game does not make you safe from being sued for pirating that game or its code. It's fine in this case only because the engine was open sourced.

Nothing makes you safe from getting sued.

See also: [1]. You could also reverse engineer in a solid jurisdiction.

I ran C&C Generals in Wine on Linux back in the days. More stable than Windows XP.

[1] https://en.wikipedia.org/wiki/Clean-room_design

reply
You may run afoul of DCMA rules around circumventing copy protection measures, and you are most likely going to be violating the EULA on any recent games. But you aren't necessarily violating any copyrights - several high-profile cases in the US have been fought about this, such as Sony vs Connectix, and its generally fallen on the side of reverse-engineering for interoperability being within the bounds of fair use

(as always, IANAL)

reply
Computer Associates International, Inc. v. Altai, Inc. establishes the Abstraction-Filtration-Comparison test for determining if a program is infringing on another program. Reverse engineered code of a nontrivial portion of the original program will have substantial similarity to the original program and will fail this test.

Interoperability falls under what gets filtered out in the filtration step of the test.

reply
I don't think the "it's piracy to use the code generated by an LLM because it closely resembles the code the LLM was trained on" argument has been fought in court yet.
reply
Depends on the jurisdiction? However usually it is a civil matter not an actual crime..
reply