Utils
What we build to read the cartridges, released as open-source libraries — each with a page to try it in the browser.
- The NES sound chip@xromdev/apu
The 2A03 APU in TypeScript: register writes in, samples out. Turn the chip on and flip its bits by hand — every control here is a bit of a real register.
Source on GitHub → - NSF player@xromdev/nsf
NES music from NSF files: the game’s own driver on an emulated 6502, writing into the APU. Drop a file in and watch every channel and every register write.
Source on GitHub → - The NES’s 6502@xromdev/cpu6502
The CPU in TypeScript: all 256 opcodes, cycle-counted. Write a little assembly and step through it — registers, flags, stack and memory as each instruction changes them.
Source on GitHub → - Piano roll@xromdev/pianoroll
Notes falling onto a piano keyboard, Synthesia-style — canvas blocks, CSS keys, no framework in the frame loop. Drop any NSF and watch its music.
Source on GitHub → - Drum roll@xromdev/drumroll
The noise channel as a drum kit: sixteen rates read as kick, snare, hats and toms, each piece moving its own way when struck. On the same core as the piano roll.
Source on GitHub → - Notation@xromdev/notation
Notes in ticks read as a score: note values, ties, the driver’s triplets, key spelling, the grand staff, drums and dynamics. No DOM — change the metre or the key and watch the same ticks written again.
Source on GitHub →