Tools

Things I wrote because the projects needed them.

a816

My 65c816 assembler for Super Famicom work: linker, memory pools, typed layouts, source-level debug info, editor tooling. It grew up alongside Final Fantasy IV.

Documentation · Source on GitHub

katsuji

活字, movable type. My variable-width font tooling for a816 projects: it turns a PNG font into the file the VWF runtime reads, finds kerning pairs, wraps text by pixel width, and pre-renders static strings into tiles. It grew out of Final Fantasy IV's build scripts; FF4's five fonts still come out byte for byte the same.

Source on GitHub

Kintsuki

Reverse-engineering tooling around the ares SNES core: Python bindings, memory and PPU inspection, tracing, profiling, and automated tests. It's what I do most of the reverse engineering with: finding the routine that draws text, tracing who writes where, dumping VRAM and tilemaps, profiling hot code, and keeping labels as I go. I also write integration tests with it: boot the patched game, drive it to a scene, and check what ends up on screen and in memory.

The docs aren't public yet.