go-nes is a focused, well-tested Go library that implements the core internals of an NES emulator. It intentionally excludes GUI and real hardware I/O (display/windowing, real controllers, audio output). The goal is to provide a clean, reusable emulator core you can embed into your own frontend, educational tooling, or testing harness.
- Accurate 6502 CPU emulation with support for all official opcodes and addressing modes.
nes
: High-level NES struct that ties together CPU, PPU, APU, and memory.cpu
: Implements the 6502 CPU with all instructions, addressing modes, and status flags.ppu
: Handles the NES Picture Processing Unit (PPU) for graphics rendering.apu
: Manages the NES Audio Processing Unit (APU) for sound generation.memory
: Emulates the NES memory map, including RAM, ROM, and I/O registers.rom
: Loads and parses NES ROM files in iNES format.mapper
: Supports various NES cartridge mappers for memory banking.- more components to be added...
This project is licensed under the MIT License - see the LICENSE file for details.