Emulating An NES APU on an ESP32 (2018)

I’ve already forgotten how the weird NES APU registers work!


Cartridge Library for Arduino


Zero-Component Nostalgia

I took the chore upon myself to emulate the quirky Ricoh 2A03 APU from the Nintendo Entertainment System on an ESP32, playing analog audio channels over delta sigma modulation with nothing but a speaker and some wires.

The resulting Cartridge Arduino Library can read .VGM files stored as uint8_t arrays in memory, which describe the timing of changes to the registers of an APU. Included is a Python script for converting .vgz files to C arrays.