nesemu/README.md

1.5 KiB

NES Emulator

This is the repository of a Nintendo Entertainment System (NES) emulator in active development. The emulator is not currently complete but can run and partially display a ROM. Note that the project may support Windows and MacOS, but was only tested on Linux. Here is how to run the project:

  • Change the rom_path at line 26 of main.c
  • Optionally, change gui.debug_enabled to true at line 33 of gui.c to enable debugging
  • Generate the Makefile with CMake: cmake .
  • Build the project with Make: make
  • Run the emulator: ./nes_emulator

Controls

  • P: Pauses the emulation (CPU)
  • Ctrl+P: Pauses the emulation and the PPU rendering
  • O: Go to the next palette in the pattern viewer
  • T: Show tile IDs
    • N: Switch low/high pattern data

Dependencies

  • GCC compiler
  • CMake
  • SDL

Development Roadmap

  • CPU
    • RAM: Done
    • ROM: Done (iNes 1.0 format only)
    • Official instructions: Done
    • Unofficial instructions: In Progress
  • PPU
    • Registers: Done
    • VRAM: Done
    • Background rendering: In Progress
    • Sprite rendering: To Do
  • Input: To Do
  • APU: To Do
  • Mappers:
    • NROM: Done
    • MMC1: To Do
    • UxROM: To Do
    • CNROM: To Do
    • MMC3: To Do
    • MMC5: To Do
    • ...
  • Debug
    • Frame Delay: Done
    • Pattern Table Viewer: Done
    • Nametable Viewer: Done
    • CPU Debugger: To Do
    • Memory Inspector: To Do
    • PPU Debugger: To Do
    • Breakpoints: To Do