emu_nes

An NES emulator for learning how the 6502 and similar computers of the era worked
Log | Files | Refs | README | LICENSE

README.md (1247B)


      1 # emu_nes
      2 A Nintendo Entertainment System (NES) emulator written for the purpose of
      3 understanding how the NES and similar 8-bit computers of that era worked.
      4 
      5 The NES used a variant of the MOS 6502 8-bit microcontroller called a
      6 Ricoh 2A03 that contained the 6502 without the BCD mode for arithmetic,
      7 an audio signal generator (APU), controlling the gamepads, and for DMA.
      8 ([Source: NESdev](https://www.nesdev.org/wiki/DMA))
      9 
     10 A major goal for the emulator is finishing the software implementation
     11 in C and later implement this in hardware with either an FPGA or another
     12 CPU like a RISC-V. Later, I want to generalize the 2A03 simulator into
     13 a full 6502 for use with a Commodore 64 and Apple II.
     14 
     15 Makes heavy use of the [NESdev wiki](https://www.nesdev.org/wiki).
     16 
     17 ## Current State
     18 - [x] CPU (Ricoh 2A03, variant of MOS 6502)
     19 - [ ] PPU (Graphics)
     20 - [ ] APU (Audio)
     21 
     22 Currently, running the emulator with nestest.nes results in incorrect
     23 results in the memory space of the APU registers. This is due to the
     24 APU not being implemented yet.
     25 
     26 Also, the only ROM mapper that is implemented is Mapper 0 to
     27 run the test ROM, but it also supports many other ROMs listed
     28 [here](https://nesdir.github.io/mapper0.html) such as Donkey Kong and
     29 Super Mario Bros.