A curated list of tools, libraries, documentation, and projects for Nintendo Entertainment System / Famicom homebrew development.
The NES (Famicom) is a 6502-based console from 1983 with a thriving homebrew scene. This list collects the assemblers, C toolchains, emulators, debuggers, graphics and audio tools, hardware references, tutorials, test ROMs, example projects, and communities you need to build for real NES hardware.
See also: Awesome SNESdev.
- Getting Started & References
- Tutorials & Guides
- Assemblers & Toolchains
- C & High-Level Toolchains & Libraries
- Emulators & Debuggers
- Testing & Test ROMs
- Graphics Tools
- Audio & Music Tools
- Mappers & Hardware Docs
- Example & Open-Source Games
- Flashcarts & Hardware
- Communities
- AI & ML on the NES
- Contributing
- NESdev Wiki - The canonical reference wiki for NES/Famicom hardware, PPU/APU, and 6502 programming.
- Famicom Party: Making NES Games in Assembly - Free online (CC-licensed) book that teaches NES 6502 assembly from scratch.
- Nerdy Nights - BunnyBoy's classic nine-lesson NES homebrew tutorial series, preserved as an online mirror.
- Nerdy Nights ca65 Translation - The Nerdy Nights lessons ported from NESASM to the ca65 assembler.
- dustmop.io NES Graphics series - A multi-part written deep dive on NES CHR, nametables, palettes, and attributes.
- cc65 / ca65 - Freeware 6502 C compiler suite whose
ca65macro assembler is the de-facto standard for NES assembly. - asm6f - Maintained fork of loopy's ASM6, a single-pass 6502 assembler popular for NES projects.
- NESASM - The classic NESASM 3.1 assembler (Magic Kit lineage); functional but no longer actively developed.
- nesdoug - Doug Fraker's "NES Programming with cc65" tutorial site and library, the standard C-on-NES learning path.
- neslib - Shiru's NES C library (graphics, input, sound), a maintained fork used with cc65.
- NESFab - A dedicated high-level programming language and compiler that targets the NES.
- pyNES - Write NES games in a subset of Python that compiles to 6502.
- nes-starter-kit - Beginner-oriented C/cc65 toolkit and guide for building an NES adventure game.
- NES-ca65-example - A minimal, well-commented NES starter using ca65, from a respected NESdev author.
- Mesen2 - Accurate multi-system emulator (NES/SNES/GB and more) with a strong debugger; the repository is archived but it remains the reference debugging tool.
- Mesen (original) - The original C#/C++ NES/Famicom Mesen with a full debugger; superseded by Mesen2 but still a canonical reference (archived).
- FCEUX - Long-standing NES emulator with a debugger, hex editor, and Lua scripting.
- puNES - Qt-based cross-platform NES/Famicom emulator and NSF player with a debugger.
- Nintendulator - Accuracy-focused Windows NES emulator with debugging, long used as a homebrew reference.
- ares - Accuracy- and preservation-focused multi-system emulator with an actively developed NES core.
- 8bitworkshop - Web-based IDE with in-browser assembling, C compiling, and emulation for the NES and other 8-bit systems.
- nes-test-roms - Large collection of NES emulator/hardware test ROMs, including blargg's CPU/PPU/APU tests.
- nes-audio-tests - Test ROMs and NSFs for the NES/Famicom APU and expansion audio.
- 6502/65C02 functional tests - Klaus Dormann's exhaustive opcode test suite, the standard 6502 core validation.
- annotatecc65 - Source-level debugging for NES ROMs written in C with cc65.
- NEXXT - FrankenGraphics' actively maintained successor to Shiru's NES Screen Tool for CHR, nametable, and metatile editing.
- M1TE2 - nesdoug's NES tile and metatile editor.
- makechr - Generates NES CHR, nametable, palette, attributes, and sprite lists from pixel-art images.
- FamiStudio - Modern NES music editor that exports to NSF/ROM and imports FamiTracker files.
- FamiTracker - The classic 2A03 / expansion-chip NES tracker (last release 0.4.6, 2015).
- FamiTone5 - Lightweight NES sound engine and driver for use in homebrew ROMs.
- Pently - Scalable, actively maintained NES music and sound-effects engine.
- GGSound - Lightweight NES sound engine used in Gradual Games' releases.
- NESdev Wiki: Mapper reference - Comprehensive documentation of NES cartridge mappers and iNES / NES 2.0 mapper numbers.
- visual6502 - Transistor-level, in-browser simulation of the actual 6502 die.
- perfect6502 - A fast C simulation of the original NMOS 6502 netlist.
- Nova the Squirrel - Complete open-source NES platformer written in ca65.
- Nova the Squirrel 2 - Sequel platformer, another full open-source NES codebase.
- 240p Test Suite Mini - Artemio's 240p test suite ported to the NES, a well-documented real ROM project.
- nrom-template - Minimal NROM project skeleton for ca65, a common starting scaffold.
- EverDrive N8 PRO (Krikzz) - Official product page for the standard NES/Famicom SD flashcart for running homebrew on real hardware.
- NESdev Forums - The primary community forum for NES/Famicom (and SNES) development.
- NESdev Discord - Active real-time chat companion to the NESdev forums (covers NES and SNES).
- elya-nes - A ternary transformer LLM running on the NES 1.79 MHz 6502 with exact cycle counts, verified token-exact against a host reference.
Contributions are welcome. Please read the contributing guidelines first, then open a pull request.
To the extent possible under law, the contributors have waived all copyright and related or neighboring rights to this work.
