Go to file
william d1ddcb1b0f Add palette colors the main emulator view 2024-08-13 17:32:54 -04:00
.idea PPU 2024-05-10 14:03:08 -04:00
cpu PPU rewrite 2024-06-21 13:47:28 -04:00
debugger Move states to global variables 2024-05-06 20:23:44 -04:00
gui Add palette colors the main emulator view 2024-08-13 17:32:54 -04:00
include Add palette colors the main emulator view 2024-08-13 17:32:54 -04:00
libs/log.c Fix build system 2024-04-30 12:28:43 -04:00
mappers Fix memory mapping 2024-05-23 23:52:04 -04:00
ppu Add palette colors the main emulator view 2024-08-13 17:32:54 -04:00
rom Fix memory mapping 2024-05-23 23:52:04 -04:00
utils Support for multiple windows (debugging) 2024-05-17 11:40:02 -04:00
.gitignore Move states to global variables 2024-05-06 20:23:44 -04:00
CMakeLists.txt Move debugging to compiler flag 2024-07-25 21:22:00 -04:00
README.md Add palette switch to the debug pattern view. 2024-08-06 17:30:57 -04:00
main.c Add palette switch to the debug pattern view. 2024-08-06 17:30:57 -04:00
nintendo-nes-font.ttf Efficient rendering 2024-06-16 19:22:40 -04:00
system.c Nametable view palette 2024-08-03 21:51:31 -04:00

README.md

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
  • o: Go to the next palette in the pattern viewer

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