Live data from Hacker News

Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly

babyloniantwins.com

121–130 of 148 posts

Re: Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly

#121
I did Moonbase Commander, in JS and HTML canvas. Currently building an AI opponent that doesn't suck as much as in the original.

It's amazing that this is possible. I took quite a bit of steering and was definitely not a one prompt endeavor but having a lot of fun with it.

Re: Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly

#122
It's kind of a fun, albeit also kind of a pointless, thing to do, huh? This week I took a student project game I made with 3 others back in 2010 and made it live again. I'm cheap, I only have the $20 plan for this month (likely to pause again for next month) and used Opus 5, and I'm visibly hamstringing it by running claude code in a firejail and not using yolo mode on permissions. Still, without much effort/oversight, it took the old C game that only ran in windows' cmd.exe terminal (a class constraint -- we still made a side scrolling shoot-em-up rather than a text adventure like many others), wrote the new version in Common Lisp as I asked (somewhat following the style of some other Lisp code I've written), implemented both a simple SDL2 "software" renderer along with an even faster OpenGL renderer, and didn't touch the original assets which were in a quirky binary format with a bug on one level in the C code. And now it runs great on Linux (and Windows, though only briefly tested it, building it with wine). Having its own graphics window lets it run at thousands of FPS when we were struggling to hit 30 back then. Last night on a whim I had it take a crack at porting to Android, and it did that as well. Still using SBCL, just one little C file shim for some things, no Java code was needed. Now I can easily show it to a few people in person. And it was kind of fun to play it again after so many years in an archives folder.

Your game looks cool. It's a full, real game! And while I now think that there's no longer strong "platform convenience" reasons to choose any tech stack if these AIs can just bulldoze their way through difficulties, I'm sure running in Godot still made a lot of things easier for it.

Re: Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly

#123
post #87

It's a completely new world. Random retro games I ported to modern webgl/webgpu in the last few months: - The Adventures of Robin Hood - Opus 4.7/Sonnet https://robin.tooclever.org - Syndicate - Sol/Luna 5.6/Opus ( https://this.os.isfine.org/blog/posts/modern-game-port-syndi... ) - Kaiser 2 - Populous Plus - Sol/Luna 5.6/Opus - Dragon Strike - (Fable 5.1 almost one shot) - War of the Lance - Qwnen-3.7-27B-dense (got…

This is amazing. I'm trying to get a handle on how you're doing this, but I can't seem to find anything specific. e.g., is it a case of prompting "Please recreate Populous for the web"?

This post has the actual prompt used for one of my ports and the stack, and there's more info below it under "further reading".

There's really nothing much to it, all the knowledge needed is in the weights of the model, so regardless of what you want to do, you can ask "if I wanted to do this, what would be the best way / best practices to get there with my machine"

https://georgzoeller.com/blog/posts/what-reverse-engineering...

Re: Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly

#124
post #87

It's a completely new world. Random retro games I ported to modern webgl/webgpu in the last few months: - The Adventures of Robin Hood - Opus 4.7/Sonnet https://robin.tooclever.org - Syndicate - Sol/Luna 5.6/Opus ( https://this.os.isfine.org/blog/posts/modern-game-port-syndi... ) - Kaiser 2 - Populous Plus - Sol/Luna 5.6/Opus - Dragon Strike - (Fable 5.1 almost one shot) - War of the Lance - Qwnen-3.7-27B-dense (got…

wow really nice!!

Re: Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly

#125
post #123

Earlier quoted context omitted.

This is amazing. I'm trying to get a handle on how you're doing this, but I can't seem to find anything specific. e.g., is it a case of prompting "Please recreate Populous for the web"?

This post has the actual prompt used for one of my ports and the stack, and there's more info below it under "further reading". There's really nothing much to it, all the knowledge needed is in the weights of the model, so regardless of what you want to do, you can ask "if I wanted to do this, what would be the best way / best practices to get there with my machine" https://georgzoeller.com/blog/posts/what-reverse-en…

I use a step-by-step approach:

1. For each topic, write a result Markdown file in `spec/`.

2. Identify the file formats.

3. Reverse Engineer and extract all assets, followed by manual review. This works in 90% of the cases.

4. Determine the compression/packing used for the executable. Most binaries used one of roughly five common executable packers.

5. Unpack the executable manually.

6. Use an ancient free IDA-Pro for disassembly, or a modified DOSBox to determine all code/data blocks and the relevant segment-register values for the 8086 architecture. In the second case I use my vibe-coded disassembler.

7. Identify the major functional domains in the disassembly and split the files accordingly.

   ...

Re: Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly

#126
post #87

It's a completely new world. Random retro games I ported to modern webgl/webgpu in the last few months: - The Adventures of Robin Hood - Opus 4.7/Sonnet https://robin.tooclever.org - Syndicate - Sol/Luna 5.6/Opus ( https://this.os.isfine.org/blog/posts/modern-game-port-syndi... ) - Kaiser 2 - Populous Plus - Sol/Luna 5.6/Opus - Dragon Strike - (Fable 5.1 almost one shot) - War of the Lance - Qwnen-3.7-27B-dense (got…

Let me add my elite clone - https://harmless.atomic14.com

Re: Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly

#127
post #110
post #98

Earlier quoted context omitted.

I would like to see all of them :-) One of the most difficult reverse-engineering projects from that era for me was Stunt Car Racer on the C64 (also ported to DOS). It features a highly optimized 8-bit 3D graphics and physics engine. Fable was the first one that was able to generate a complete port of the game. Now I am trying of Flight Simulator 4 and Wing Commander 1. Then maybe Frontier Elite 2. So much fun ....

Strike Commander is in the works. I tried a few months ago and got quite far asset wise but stalled on the flight model, I will probably see how Fable 5.1 does from zero after this weeks limit reset. I imagine it will be able to get quite far.

Strike Commander, a.k.a. the game that required QEMM386 to actually work. I do think it was the last game I got that came with a really nice manual though.

Re: Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly

#128
This was an interesting read, in that it was obvious both that Claude was used in part for the prose but that a human had definitely edited some of the worst claudish out of it (but not enough for me to be able to tell).

Confirmed in that last paragraph. Just interesting to me I can detect gradations of AI speak at this point.

Re: Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly

#129
post #63

Earlier quoted context omitted.

Which game are you planning to do? We all should coordinate so we're not doing the same games repeatedly.

Ah, it's not going to be Amiga. The shortlist has two PC and two C64 games.

Yeah I'm working on a C64 game myself (Below The Root). Are yours a secret?

Re: Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly

#130
post #122

It's kind of a fun, albeit also kind of a pointless, thing to do, huh? This week I took a student project game I made with 3 others back in 2010 and made it live again. I'm cheap, I only have the $20 plan for this month (likely to pause again for next month) and used Opus 5, and I'm visibly hamstringing it by running claude code in a firejail and not using yolo mode on permissions. Still, without much effort/oversigh…

Why pointless?
Post reply on HN