.gitignore | ||
apu.c | ||
apu.h | ||
cpu.c | ||
cpu.h | ||
LICENSE | ||
Makefile | ||
nestest.log | ||
nestest.nes | ||
opcodes.h | ||
ppu.c | ||
ppu.h | ||
README.md | ||
rom.c | ||
rom.h | ||
shell.nix |
emu_nes
A Nintendo Entertainment System (NES) emulator written for the purpose of understanding how the NES and similar 8-bit computers of that era worked.
The NES used a variant of the MOS 6502 8-bit microcontroller called a Ricoh 2A03 that contained the 6502 without the BCD mode for arithmetic, an audio signal generator (APU), controlling the gamepads, and for DMA. (Source: NESdev)
A major goal for the emulator is finishing the software implementation in C and later implement this in hardware with either an FPGA or another CPU like a RISC-V. Later, I want to generalize the 2A03 simulator into a full 6502 for use with a Commodore 64 and Apple II.
Makes heavy use of the NESdev wiki.
Current State
- CPU (Ricoh 2A03, variant of MOS 6502)
- PPU (Graphics)
- APU (Audio)
Currently, running the emulator with nestest.nes results in incorrect results in the memory space of the APU registers. This is due to the APU not being implemented yet.
Also, the only ROM mapper that is implemented is Mapper 0 to run the test ROM, but it also supports many other ROMs listed here such as Donkey Kong and Super Mario Bros.