2024-07-10 22:34:14 -04:00
|
|
|
# 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```
|
|
|
|
|
2024-08-06 17:30:57 -04:00
|
|
|
## Controls
|
2024-08-20 20:43:42 -04:00
|
|
|
- `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
|
2024-08-06 17:30:57 -04:00
|
|
|
|
2024-07-10 22:34:14 -04:00
|
|
|
## 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
|
2024-09-01 15:54:41 -04:00
|
|
|
- Background rendering: Done
|
2024-07-10 22:34:14 -04:00
|
|
|
- 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
|
2024-07-25 22:08:08 -04:00
|
|
|
- Nametable Viewer: Done
|
2024-07-10 22:34:14 -04:00
|
|
|
- CPU Debugger: To Do
|
|
|
|
- Memory Inspector: To Do
|
|
|
|
- PPU Debugger: To Do
|
|
|
|
- Breakpoints: To Do
|