IF YOU ARE LAZY JUST PLAY IT HERE
nes-emu is a lightweight NES emulator focused on simplicity, accuracy, and portability.
The project is written entirely in pure C with no unnecessary abstractions or bloated dependencies.
Main goals:
- Accurate emulation
- Clean codebase
- Fast execution
- Portable architecture
- Web support
- Pure C implementation
- Lightweight and minimal
- Web version support
- Cycle-accurate PPU
- Cycle-accurate APU
- Correct NES color palette
- Support for important mappers
- Portable codebase
- No external engine dependency
- Focused on accuracy and readability
| Component | Status |
|---|---|
| CPU | Complete |
| PPU | In Progress |
| APU | In Progress |
| Controller Input | Complete |
| Mapper Support | In Progress |
| Web Build | Working |
| Audio Sync | In Progress |
| Save States | Planned |
| Debugger | Planned |
| Mapper | Status |
|---|---|
| NROM | Supported |
| MMC1 | In Progress |
| UxROM | In Progress |
| CNROM | In Progress |
| MMC3 | In Progress |
| AxROM | Planned |
Run:
nes-emu rom.nesThe emulator aims to stay:
- Simple
- Readable
- Fast
- Accurate
- Minimal
No unnecessary frameworks. No bloated architecture. Just a clean emulator written in C.
- Add more mappers
- Improve APU accuracy
- Improve PPU accuracy
- Add save states
- Improve timing accuracy
- Improve web frontend
Pull requests, issues, and suggestions are welcome.
Workflow:
fork -> code -> commit -> pull request
- NESDev Wiki
- NES hardware documentation



