Go to file
william f18ad715fb SDL menu in top of main window 2024-09-01 15:54:41 -04:00
.idea SDL menu in top of main window 2024-09-01 15:54:41 -04:00
cpu More debug tools and finally fix rendering! 2024-08-20 20:43:42 -04:00
debugger SDL menu in top of main window 2024-09-01 15:54:41 -04:00
gui SDL menu in top of main window 2024-09-01 15:54:41 -04:00
include More debug tools and finally fix rendering! 2024-08-20 20:43:42 -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 More debug tools and finally fix rendering! 2024-08-20 20:43:42 -04:00
rom Fix memory mapping 2024-05-23 23:52:04 -04:00
.gitignore More debug tools and finally fix rendering! 2024-08-20 20:43:42 -04:00
CMakeLists.txt SDL menu in top of main window 2024-09-01 15:54:41 -04:00
README.md SDL menu in top of main window 2024-09-01 15:54:41 -04:00
main.c SDL menu in top of main window 2024-09-01 15:54:41 -04:00
nintendo-nes-font.ttf Efficient rendering 2024-06-16 19:22:40 -04:00
system.c More debug tools and finally fix rendering! 2024-08-20 20:43:42 -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 (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: Done
    • 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