Niblet ←

trace recorded 18 october 2026 - time to read: 3 min

Recompilation Part 1 - What does it mean to be 'native'?

code AI gba development recompilation decompilation

Recompilation Part 1 - What does it mean to be 'native'?

If you happen to have been living under a rock, you may not have realised that there's an increasing number of AI assisted recompilations of console games being created to run on modern PC hardware. It seems like nothing at all is safe, though, from recreations of the Adobe suite to PS4 & Xbox and everything before and beyond.  

I was reading /r/decomps on reddit and there's a bit of pushback from people about sloppy 'just enough' ports and I wanted to understand what 'just enough' looked like vs 'polished and complete'. 

With that in mind, I decided that I'd try getting ChatGPT's Codex to create a native Windows executable of a favourite game of my youth, KuruKuru Kururin for Game Boy Advance. I can't remember where I got this game but the main reason I bought it was because it was a Japanese import and it looked like it'd be playable without knowing any of the language.

It's a fun game, I never completed it, but I felt like it'd be a good candidate for this investigation into decompilation because it seems fairly simple in its construction.

Anyway, I uploaded my 'recently purchased & totally legally ripped' ROM of the European version to Codex and asked it to use the 'Reverse Engineer Anything' (REA) skill to decompile the ROM and create a Windows executable from it. 

It didn't work. REA complained that it's an unsupported binary format (so much for 'anything') but GPT did kindly suggest a 'Windows executable with a native launcher and an embedded GBA emulator'. I suggested that an emulator may be able to help with such a recompilation and after a bit of back and forth GPT decided to use the 'GBARecomp' project from github which it duly downloaded and soon provided an executable.

As you'll notice, it's requiring not only a totally legally ripped Kurukuru Kururin ROM but also a totally legally ripped GBA BIOS. I plugged those in and clicked play. 

And there it was, my first ever recompilation and I hadn't touched any code. I was pretty impressed to be honest, whilst AI hadn't had a great deal to do with it at this point, Codex had successfully identified GBARecomp, downloaded it, executed it against my ROM file and then built the resulting source into an actual executable that I was immediately able to play with my XBox controller. 

The feeling of joy didn't last very long, though - I'd had to provide a BIOS file so we weren't simply extracting the content from the ROM and playing it natively. 

So what is really happening? It's a recompilation, sure, but how is this better than emulation? I looked into it a bit and found that GBARecomp is relying on a GBA runtime to simulate the rest of the GBA hardware - the code itself is now x86 instead of GBA's ARM but we are still providing simulations of the GBA screen, memory, etc. We've stopped emulating the CPU but we're still effectively emulating much of the surrounding GBA hardware.

That's a complaint that I've seen many times on /r/decomps and it prompts the question that this blog series will attempt to answer - What does it mean to be 'native'?

I'll be documenting my attempt to go from a Game Boy Advance ROM to something I can honestly call a 'native windows port' and in the process, end up with something far beyond that. We're not there yet but by the time we finish this series, I hope we will be. 

comments

0 comments

no comments yet.