2024-08-21 13:31:29 -04:00
|
|
|
# emu_nes
|
2024-05-20 09:21:56 -04:00
|
|
|
A Nintendo Entertainment System (NES) emulator written for the purpose of
|
|
|
|
understanding how the NES and similar 8-bit computers of that era worked.
|
|
|
|
|
2024-08-21 17:46:30 -04:00
|
|
|
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](https://www.nesdev.org/wiki/DMA))
|
|
|
|
|
|
|
|
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](https://www.nesdev.org/wiki).
|
2024-08-21 13:31:29 -04:00
|
|
|
|
|
|
|
## Current State
|
2024-08-21 17:46:30 -04:00
|
|
|
- [x] CPU (Ricoh 2A03, variant of MOS 6502)
|
2024-08-21 13:31:29 -04:00
|
|
|
- [ ] 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](https://nesdir.github.io/mapper0.html) such as Donkey Kong and
|
|
|
|
Super Mario Bros.
|