2A03
Writing for it now

The tool the scene actually uses

FamiTracker and its 0CC fork write directly for the hardware register map — which is why what you hear in the editor is what the cartridge plays.

Screenshot of Furnace Tracker software showing pattern editor, orders, instruments, and volume macro panels
FIG. 1A tracker pattern editor. Channels are columns, notes and effects are hex, and the output is register writes.Photo: Furnace Tracker Screenshot · Wikimedia Commons

The column interface that comes from another era

Tracker software descends from the Amiga scene of the late 1980s, where a program called Ultimate Soundtracker, built by Karsten Obarski in 1987, laid down the column-per-channel layout that still defines the form: each channel runs as a vertical strip of rows, time moves downward, and the composer fills cells with note data, instrument numbers and effect commands. The format migrated to DOS, to Windows and eventually to NES-specific tools that replaced waveform samples with hardware register writes. FamiTracker, developed by jsr — a pseudonym for Swedish programmer Johan Alfredsson — is the descendent of that lineage applied specifically to the Ricoh 2A03. Its first public release appeared in 2005, and it remained the dominant NES composition environment for more than a decade of active development.

What distinguishes FamiTracker from a general-purpose audio workstation is not its interface but its internal model. Rather than rendering audio and then asking whether it sounds approximately like the chip, it maintains a software representation of the 2A03's register state and drives that model in real time. The NSF file it exports is not a recording; it is executable code that a real console or the emulator's CPU core will run, which means the editor's preview and the hardware's output are the same thing by construction, not by approximation.

What the register map actually constrains

The 2A03 exposes its five channels through a set of memory-mapped registers. Each pulse channel's duty cycle is set by two bits; the volume envelope, sweep unit and period are separate register fields. The triangle channel has no volume register at all — only a linear counter controlling its gate. The noise channel selects from a small table of periods and flips between the LFSR's two feedback modes. The DPCM channel reads delta-encoded samples from ROM and updates a 7-bit output level one step at a time. FamiTracker surfaces all of this as cells and effect columns rather than waveform displays. An effect code like Qxx or Rxx triggers a hardware portamento by writing to the sweep unit's register directly; Vxx switches duty cycle mid-note. These are not approximations of hardware behaviour — they are the same register operations a 1980s Famicom game would have performed.

Screenshot of WinHex disk editor showing a hex dump, file directory pane, and Disk Tools menu open
FIG. 2A hex editor. An NSF carries the player routine alongside its data, so the file is executed rather than decoded.Photo: WinHex hexadecimal editor · Wikimedia Commons

That fidelity creates real compositional constraints that any DAW would silently paper over. The triangle channel has no volume control, so any note entered at any velocity plays at the same loudness; the only way to manage its dynamics is to gate it with its length counter or linear counter, which the effect column can address. The pulse channels share a common base clock with the triangle, and period values below a certain threshold produce frequencies too high to be musical, a hardware limit that appears in FamiTracker's piano roll as a dead zone at the top of the register. Composers working in the tool learn these edges not from a manual but from the sound going wrong.

The 2A03 exposes its five channels through a set of memory-mapped registers.

0CC-FamiTracker and what a fork adds

Around 2014, developer HertzDevil released 0CC-FamiTracker, a fork that extended the original while maintaining compatibility with its file format. The name refers to 0CC — a tracker effect convention — repurposed as a branding shorthand. The headline addition is groove sequences: rather than a fixed tick-per-row tempo, a groove defines a repeating pattern of tick lengths, so a single pattern can accommodate swing and syncopation at the row level without the composer splitting notes across multiple rows. For idioms that depend on uneven subdivision — the kind of rhythmic shuffle that NES composers often approximated by hand-editing note lengths — this is a practical improvement rather than a cosmetic one.

0CC also expanded support for expansion audio, the additional channels that Konami's VRC6, Sunsoft's 5B and Namco's 163 added via circuitry inside the cartridge. FamiTracker had already modelled several expansion chips, but 0CC deepened the implementation and, crucially, allowed multiple expansion chips to be active simultaneously in the same project — a configuration that no commercial cartridge ever shipped but that the underlying hardware registers could theoretically support. For composers interested in the outer edge of what the documented register space allows, that capability matters; for anyone writing for real hardware deployment, the single-expansion configurations remain the practical ones.

Both tools share a design philosophy inherited from the tracker tradition: patterns are blocks of row data that can be reused across the song, and the arrangement layer simply sequences those pattern slots. This means the NSF export inherits a natural structure — the player routine loops through pattern addresses, which is efficient on a 6502 and keeps cartridge footprint low. The format's economy is not accidental; it descends from the same constraints that shaped NES music during the console's commercial life.

A CRT glowing in an otherwise dark room, close
FIG. 3Balance decisions were made against sets like these — one small speaker in a wooden cabinet, mono, across a living room.Photo: Uday Veeru / Pexels

Why hardware accuracy matters to the scene

Emulation accuracy is a recurring argument in the NES community, but for FamiTracker users it has a concrete practical dimension: many composers want to hear their work on actual hardware, whether through an Everdrive cartridge loaded onto a real Famicom or NES, or through the NSF-player cartridges that allow the format to run on original silicon. When the composition tool's internal model is faithful to the register map, the transition from software preview to hardware playback carries no surprises. Timing, pitch, envelope shape and noise colouration all arrive as expected. When the model is approximate — when an older tool rendered audio that only sounded chiplike — hardware deployment exposed every divergence.

This is also why the community treats NES-accurate emulator cores as a prerequisite for FamiTracker use rather than an optional luxury. Mesen and FCEUX, both mature open-source NES emulators, are the common preview backends. The non-linear behaviour of the 2A03's mixer — the way pulse channels and the triangle channel sum through an analogue circuit rather than a simple digital add — is part of what those cores reproduce and what the listener hears even in the editor. A composer tuning two pulse channels against each other is hearing the same non-linearity that Koji Kondo and Hirokazu Tanaka worked inside, transmitted through a software model rigorous enough to match the silicon.

A Canon MSX computer keyboard with an exposed cartridge circuit board, beside a Sony Trinitron monitor

The other long-term consequence of hardware fidelity is archival. An NSF file produced in FamiTracker in 2007 will play correctly on a 2A03 in 2040, because the chip has not changed and the file targets the chip directly. There is no proprietary audio engine to decay, no plugin to deprecate, no sample library to lose. The format's durability is a side effect of its directness: it contains instructions for a specific, documented piece of silicon whose behaviour is fully specified. That is a narrower artistic target than a full workstation environment offers — and, for the composers who have chosen it, exactly the point.