nesrecomp + FaxanaduRecomp

nesrecomp + FaxanaduRecomp

In my previous article, I Built a PS1 Static Recompiler With No Prior Experience and Claude Code, I documented experimenting with static recompilation using the PlayStation game Tomba! as a test case. That article focuses more on the learning process and the workflow I used to iterate on a PS1 recompiler project.

This time I wanted to try something different using nesrecomp, a tool that converts NES ROMs into C code that can be compiled into a native executable.

For my first target, I chose Faxanadu, a game I had growing up and always enjoyed as one of the earlier RPGs. It also deviates a bit from the typical NES titles people experiment with in re/decompilation. Faxanadu was one of the NES games that used bank switching, which makes it a more challenging first case than simpler games like Super Mario Bros. While daring, I felt it was a worthwhile challenge, knowing that some disassembly notes existed online for Faxanadu – which I hoped would close any roadblocks as I ran into them.

Using nesrecomp, I converted the ROM into C and built a native PC executable. Compared to my PS1 experiments, iteration was much faster largely because the NES architecture is simpler and there’s less overall system complexity to account for.

The project is available here: FaxanaduRecomp

The current build is already quite playable. My plan from here is to treat it more like a normal software project: fix issues as they’re reported and add a few quality-of-life improvements along the way.

If you're interested in the deeper exploration of static recompilation and the process that led into this project, the earlier write-up on the Tomba! experiment covers that in more detail.