Decompiling a Nintendo 64 game in 84 days
blog.chrislewis.au184 points by knackers 11 hours ago
184 points by knackers 11 hours ago
I've been absolutely loving the decomp projects that have been coming out lately. Huge props to the writer for this, Snowboard Kids is a real gem.
I'd also encourage people to check out the Legend of Dragoon recomp [1]. It's a real labor of love that has breathed new life into a largely abandoned game. You can play it fully vanilla, or with improved graphics, fixes to cumbersome design choices, bugfixes, etc.
Loving this trend too.
It inspired me to use AI to decompile my favorite games as well, mostly Mega Man Battle Network games from my childhood. I'm not going to make it in 84 days though. I insist on understanding the game and documenting it myself instead of just having the AI do it all for me on autopilot.
As slow as that is, it's already led to some awesome moments. AI built a literal synthesizer that played back music straight out of the ROM. Mapped out all of the music that way. It was incredible.
Have neen reverse engineering my laptop's BIOS as well. AI is fully in charge of that one, and it's nearly done. Hopefully soon I'll have drivers and perhaps even coreboot.
I love this trend as well. More than any other project or trend, it makes me feel optimistic about a future with AI and little or no slop.
I had hoped to someday make retro games for all major 80s and 90s consoles. I started with the Atari 2600 12 years ago[0], and planned to move to other 6502 family systems when I had time. I realized last year that AI could essentially do all of what I considered the hard parts and craft of retro game assembly, which felt like having the rug pulled out from me. Projects like this have really turned that around for me.
New tools just mean old things become easier and new things become the difficult (where I think the fun is), but solvable, frontier. This category of projects inspired me to pick back up an Ultima V decompilation project I started more than 10 years ago[1,2]. I'm looking forward to a world where all of my childhood games are cracked wide open for mods, ports, etc.
[0]: https://github.com/cleak/FlappyBoot [1]: https://github.com/cleak/u5-spec (spec for Ultima V binary) [2]: https://github.com/cleak/u5-engine (Rust port of Ultima V made from the spec; still lots of prose slop)
Any advances in emulators recently? I would love to see Nintendo get into a legal tussle with Big AI. Giant douche can fight turd sandwiches.
Aside from Switch emulators which get C&D by Nintendo due to private key copyright infringement issues, nothing with existing emulators would cause a legal tussle. AI has zero impact on it.
> due to private key copyright infringement issues
None of the Switch emulators Nintendo took down had such issues, they all required supplying your own keys.
Nintendo takes them down anyway because they can, and because they have enough money that no individual can fight them on it. Their takedowns have no real legal standing, and there's no reason why they couldn't do the same for every other emulator, other than them simply not wanting to.
It's pretty amazing what you can do when you embrace LLMs, figure out how to build one high-quality rigorous project with them, and then start working on more projects.
You become a machine with your workflow, once again limited only by your time/energy, tokens, and your discretion on how to spend it.
matching decompilation is a verifiable target. Its hard to create slop that still matches. The same does not hold up for coding with llms normally.
> It's pretty amazing what you can do when you embrace LLMs, figure out how to build one high-quality rigorous project with them, and then start working on more projects.
Indeed. But I think it's fair to say that just embracing LLMs is not enough.
[flagged]
Using AI is cognitive surrender. It's not your code, it's not your work.
When I was in high school, graphing calculators were pretty new. New enough that most teachers had not yet encountered them.
I was a pretty nerdy kid even then, and I saw graphing calculator as 'portable computer' in 1993! So, of course I wanted one.
When our teachers found about them, they banned the use of graphing calculators, some teachers going so far as to only allowing 'four-bangers' (a basic one) for classes lower than Trig (I never got to Calc in high school).
Funny, but your statement reminded me of what one of math teachers used to say: "If you use a graphing calculator, you aren't doing math." It seems really quaint today.
The smart reason graphing calculators are banned is because students are meant to be learning a concept. You don't learn how to graph to pass a test you take a test so you're pressured to learn how to graph.
Same with AI. Having AI generate a for loop doesn't mean you understand the concept of a for loop. You can argue that it's a waste of time to learn about for loops because an AI can write one for you but that's a separate matter.
If I hand you a math problem, and you point your camera at it and write down ChatGPT’s answer, you are definitely not doing math.
"If I hand you a equation to solve, and you type in the numbers, hit enter on your programmatic calculator, and write down Texas Instruments' answer, you are definitely not dong math." <-- would have been my teachers' attitude too.
Throw in "and when the batteries in your calculator die, you'll need to know how to do it by hand!" for good measure. :-)
I jest...
I think the difference with the calculator analogies is a calculator just speeds up calculations you could do yourself (granted some very slowly). I can’t type in “sally has 35 apples, and wants to give an equal number to each of her 7 friends. how many apples does each get?” I have to know to do 35/7. But an ai will do that problem solving for me, with zero understanding on my part.
I took calc at around the same time. The teacher had us learn to sketch function graphs by hand the old fashioned way, by finding the derivative and looking for critical points, etc.
Then he brought the graphing calculators in and had us plot graphs on those, compare them to our hand sketches, and set domain and range on the graph based on the critical points we found. He emphasized that doing the math beforehand let us use the graphing calculator effectively, and without knowing the math the calculator was useless.
Which sounds like the most sensible voices w.r.t. AI. At least for now. Six months ago I would not trust AI for any but rather menial tasks, but frontier models are able to do more and more of what I do every time I turn around. The TI-83 has been a fixed quantity in terms of capability since the 90s, and it never computed derivatives itself.
Actually it is your code and it is your work.
In the same sense that hiring someone overseas to do your remote work job is submitting your code and your work.
Using typewriters is surrender!
Not your handwriting, not your work!
I use AI all the time for coding, but a tool that non-deterministically reaches potentially a different output than I would have produced myself is not analogous to typewriters.
You yourself would be non-deterministic if we could rewind time. So what's the issue here?
Not to mention, LLMs can be made deterministic if that were actually valuable.
Seems like determinism is just the latest excuse to hate.
It’s not exactly determinism, it’s authenticity. If we rewind time, of course the words would be different. It’s not relevant to my argument.
There’s a reason why the top comments of HN blog posts whine about articles that are clearly written by AI. I use AI constantly as a coding agent, but I care deeply about the authenticity of the words I write intended for other human beings to be my own.
> It’s not exactly determinism, it’s authenticity.
I hope you understand, by so glibly switching from "determinism" to "authenticity" you've just provided more evidence that this is just the latest excuse to hate.
But that aside - what happens in a couple years, when LLMs inevitably improve, and their writing is objectively superior to human writing? And people who just want to read well-written material won't care about the authenticity?
I suspect there will be another glib switch. Because the reality here is just that AI is hated. Full stop.
That's a terrible analogy. It's more like using a typewriter where the job is calligraphy.
I use LLMs at work all the time, and it truly does feel like somebody else coding for me, and me reviewing, cleaning up, and asking for changes. It's really not my work, nor is it my code, but I'm still fine bringing it in.
I also don't use LLMs on my personal code done in my free time because I want my brain to still be fully functional in a few years.
I still use LLMs on personal code as well because I can build way more of it and I have way too many open source projects
I think it's pretty telling that the only response techbros have to that is some form of false equivalence, every single time.
If you can't see why your analogy is deeply broken I honestly don't know what to do for you.
It’s not clear to me why people believe determinism has some special property.
When you read the code thats been generated and submit it as a PR it becomes deterministic
You still don't get it.
Think about the act of writing with a pen.
Now think about what a typewriter does in that context.
Now think about what an LLM does in that context.
Can you reason about how those are vastly different tools within the context of writing or communication, so much so that the comparison doesn't actually make any sense?
Hint: it has nothing to do with determinism. It has to do with the nature of the work itself and the role of the person doing it.
As an aside, this whole exchange really is just a perfect encapsulation of the outcome-focused versus process-focused individual.
The outcome-focused person sees words in a document and whether an LLM produced them or a human typed them is a distinction without a difference.
The process-focused person is utterly baffled that anyone could think those are in any way equivalent.
> You still don't get it.
HEH. I just read your comment three times and I definitely don't get it. I think its entire point is to express outrage about not getting it, rather than actually explain it.
Weird, I don't think any of my comments express outrage
Bafflement? Certainly.
Maybe a little sadness at the lack of understanding of, or appreciation for, the creative process? Sure.
Outrage? Nah.