Live data from Hacker News

Resurrecting Crimsonland – Decompiling and preserving a cult 2003 classic game

banteg.xyz

21–30 of 52 posts

Re: Resurrecting Crimsonland – Decompiling and preserving a cult 2003 classic game

#22
post #18
post #12

I 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…

It isn't that hard. I'm currently reverse engineering a old flight simulator game called A-10 Cuba. I had to teach myself X86 Assembly, and understand basic calling convention. Then C++ vtables, struct alignment and struct layout. How-ever you do need this basic level understanding of the core fundamental to help you along when the tools you use IDA, Ghidra that turn the assembly code back into C pseudo code. So ther…

I played A-10 Cuba a ton on an old Pentium 3. Are you doing this in a repo somewhere?

Re: Resurrecting Crimsonland – Decompiling and preserving a cult 2003 classic game

#23
post #18

Earlier quoted context omitted.

It isn't that hard. I'm currently reverse engineering a old flight simulator game called A-10 Cuba. I had to teach myself X86 Assembly, and understand basic calling convention. Then C++ vtables, struct alignment and struct layout. How-ever you do need this basic level understanding of the core fundamental to help you along when the tools you use IDA, Ghidra that turn the assembly code back into C pseudo code. So ther…

I played A-10 Cuba a ton on an old Pentium 3. Are you doing this in a repo somewhere?

The plan is to put everything into a repo on github, this includes documentation on the file format, and also the rewrite of the original code in modern C++ and DirectX or Vulkan. I don't see much point in reverse engineering the old rendering engine - I can do it but I've got everything I need right now that I can just rewrite the game inside the browser.

Re: Resurrecting Crimsonland – Decompiling and preserving a cult 2003 classic game

#24
I've been thinking about this topic and am glad to see it come up: AI is going to be a huge boon for digital preservation & restoration projects like this. I realized this while building this project (a map explorer for Tribes 2): https://exogen.github.io/t2-mapper/

Old games like this have a small (and shrinking) audience of people who care about them. With Tribes 2, for example, there are only ~50 people who actively play on a regular basis. A subset of those people are programmers, and a subset of those have the time & energy to put into a project like t2-mapper, assuming they're even interested. I got a basic version working, but then Claude Code helped decode and convert obsolete Dynamix/Torque3D file formats (improving existing Blender addons that were incomplete), got TorqueScript running in the browser, wrote shaders, and generally helped figure out what the original C++ code was doing.

In the past, you'd need the stars to perfectly align for stuff like this to happen: a passionate super-fan with the time, resources, knowledge, and persistence to see it through. Now, you mostly just need the persistence (and maybe a couple hundred bucks for tokens). I foresee people with niche interests (but not necessarily a programmer's skillset) being able to extend the lifetime (and maybe audience) of their obscure or obsolete software.

Re: Resurrecting Crimsonland – Decompiling and preserving a cult 2003 classic game

#25
I'd be curious to see if there were any discoveries of any cut features left on the cutting room floor still present in the code [0] (aside from the demo teaser code mentioned still being present). I always find software archaelogy fascinating, as we get scraps of unused content or code, and can only guess as to the decisions made that led to it being scrapped, or why certain custom file formats were used, or code was structured a certain way.

[0] I am aware that such a wiki exists exactly for this purpose.

Re: Resurrecting Crimsonland – Decompiling and preserving a cult 2003 classic game

#27

How 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…

But it is more fun and more of a learning experience, I think.

Curious what parts you think can only be learned by hand? Having read the article I think the auto approach covers all the same ground, just at a much faster pace with no down time.

Re: Resurrecting Crimsonland – Decompiling and preserving a cult 2003 classic game

#28
post #5

Earlier quoted context omitted.

Using LLM's in an "agentic loop" is indeed a game changer. Give it a try in a sandbox.

Is the idea that once you isolate a function it decompiles it and then iterates changes until either the recompiled asm matches?

That's one way. I'm not certain that's the way you'd project did it, hard to say without looking at the pipeline. But there are N64 "matching decompilation" projects that do it exactly the way you propose.

Re: Resurrecting Crimsonland – Decompiling and preserving a cult 2003 classic game

#29
post #21

Any recommended learning materials/resources for basic binary reverse engineering? I'm imaging a resource that teaches the common tools/concepts and provides binaries in increasing complexity.

I'd suggest going through one of the relevant reverse engineering courses (all free) in either pwn[.]college or/and OpenSecurityTraining2 .

Re: Resurrecting Crimsonland – Decompiling and preserving a cult 2003 classic game

#30
post #24

I've been thinking about this topic and am glad to see it come up: AI is going to be a huge boon for digital preservation & restoration projects like this. I realized this while building this project (a map explorer for Tribes 2): https://exogen.github.io/t2-mapper/ Old games like this have a small (and shrinking) audience of people who care about them. With Tribes 2, for example, there are only ~50 people who active…

This is great. I'd love to do something similar for Ground Control (2000, https://en.wikipedia.org/wiki/Ground_Control_(video_game)).

Do you have a writeup of how you did it? Both (regular) tooling (radare2? rizin? IDA? ...) and how the LLM did (or did not) use it?

In the little spare time I have, I've been able to reverse engineer the "compressed" file format (ended up being basically a XOR'ed zlib-compressed TAR-like archive), but not much else. I have not used LLMs to help me.

Post reply on HN