f18ad715fb | ||
---|---|---|
.idea | ||
cpu | ||
debugger | ||
gui | ||
include | ||
libs/log.c | ||
mappers | ||
ppu | ||
rom | ||
.gitignore | ||
CMakeLists.txt | ||
README.md | ||
main.c | ||
nintendo-nes-font.ttf | ||
system.c |
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 ofmain.c
- Optionally, change
gui.debug_enabled
totrue
at line 33 ofgui.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 renderingO
: Go to the next palette in the pattern viewerT
: Show tile IDsN
: 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