As an active reverse engineer, I'm really curious how you used agetic AI for this! Did you just have them going through the code and labeling stuff? Or were they also responsible for writing the reimplementation? This overview is super interesting, I would love to see details about the pipeline itself.
Resurrecting Crimsonland – Decompiling and preserving a cult 2003 classic game
11–20 of 52 posts
Re: Resurrecting Crimsonland – Decompiling and preserving a cult 2003 classic game
#12I found the software at a thrift store in 2009, when I was eighteen, and I was immediately impressed. This was actually very intuitive, easy-to-use animation software that was very powerful, years before FutureSplash/Flash was released.
There's not a ton of info available on the internet now, but I have been trying to remedy that a bit [2] by uploading the manual. I reached out to Disney to ask if I could potentially buy and release the source code off of them, and they politely told me "no". I reached out to the creators in the credits on LinkedIn to see if there there was any way I could look at the code or if they could at least answer some questions, and they never got back to me.
I think the only way we're going to get the source code to The Animation Studio will be if I learn how to use Ghidra (or something similar) and decompile it myself.
[1] https://en.wikipedia.org/wiki/The_Animation_Studio
[2] https://archive.org/details/disney_beginner_guide_2/disney_b...
Re: Resurrecting Crimsonland – Decompiling and preserving a cult 2003 classic game
#13There used to be a Linux version but apparently it hasn't been updated to be added to or even compiled on modern Linux kernels and distros.
Someone I know tried to resurrect it a few years back but now I'm wondering if couldn't use OpenCode etc to get it up and running again.
(I did find a recent-ish clone [1] so may start with that)
Re: Resurrecting Crimsonland – Decompiling and preserving a cult 2003 classic game
#14I really need to start familiarizing with these new tools, I'm only using LLMs in interactive, “question and answer”, mode and it feels like using a typewriter when everyone is switching to computer word processors. Thanks for sharing, it's a really interesting writeup and project!
Using LLM's in an "agentic loop" is indeed a game changer. Give it a try in a sandbox.
Re: Resurrecting Crimsonland – Decompiling and preserving a cult 2003 classic game
#15I'm a big fan of the old Macintosh game Bolo [0] There used to be a Linux version but apparently it hasn't been updated to be added to or even compiled on modern Linux kernels and distros. Someone I know tried to resurrect it a few years back but now I'm wondering if couldn't use OpenCode etc to get it up and running again. (I did find a recent-ish clone [1] so may start with that) 0 - https://en.wikipedia.org/wiki/B…
Re: Resurrecting Crimsonland – Decompiling and preserving a cult 2003 classic game
#16Reversing this by hand seems like it would have taken orders of magnitude longer…
Re: Resurrecting Crimsonland – Decompiling and preserving a cult 2003 classic game
#17Re: Resurrecting Crimsonland – Decompiling and preserving a cult 2003 classic game
#18I don't know anything about reverse engineering, but I have wanted to reverse engineer/decompile the Disney Animation Studio [1] for DOS for years. I found the software at a thrift store in 2009, when I was eighteen, and I was immediately impressed. This was actually very intuitive, easy-to-use animation software that was very powerful, years before FutureSplash/Flash was released. There's not a ton of info available…
So there is a big hurdle to get over in the initial stages but you soon find out that a lot higher code structure/scaffold isn't wiped out by the compiler. For example, the generated assembly code very closely mirrors the C/C++ function boundaries. This enables you to infer the over-all original code structure/layout basically from the call chain, and then you can manually step through and figure out what the original programmer was trying to achieve - abet the order of execution does get messed up by the compiler but it isn't that bad.
In my project with A-10 Cuba, I was successful in reverse engineering its file format, the over-all module layout, engine and rendering engine during my three weeks break. I still have some time to work out the AI logic, and mission design but one builds on another. What do I mean one builds on another? Well when you first start you have no types, not structs. So the first days you think you're making absolutly no progress because you're trying to calculate pointer offsets and structs layouts in IDA. I highly recommend Google Gemini or Claude code to do this heavy lifting because you can get away with a lot by asking it (for this IDA Pseudocode, infer what the struct layout is and tell me what it is doing?).
The first stage of getting those first struct layout is painstaking, then you soon can branch off one strut, or struct pointer to another. This feeds back like a feed-back loop - because programmers are lazy. And you soon have a large part of the struct/code-flow layout figured out.
You then take the structs/code-flow, and pesudo code and then do a re-write in a modern C/C++ compiler until you have a working version.
Re: Resurrecting Crimsonland – Decompiling and preserving a cult 2003 classic game
#19As an active reverse engineer, I'm really curious how you used agetic AI for this! Did you just have them going through the code and labeling stuff? Or were they also responsible for writing the reimplementation? This overview is super interesting, I would love to see details about the pipeline itself.
There are many ghidra plugin, like GhidrAssist, you can use to connect to a LLM. They will automatically put a name on each function and variable. It is far from perfect but it is way faster than doing it by hand in my experience.
Re: Resurrecting Crimsonland – Decompiling and preserving a cult 2003 classic game
#20How much did this cost with the AI usage ? What plans did you have ? Reversing this by hand seems like it would have taken orders of magnitude longer…