# 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