cNES is a cycle-accurate NES emulator written in C.
cNES's CPU emulation is handled by its sister project, c6502.
cNES is partially derived from the now-defunct jNES.
- Support for popular mappers (NROM, MMC1, UNROM, CNROM, MMC3, AxROM)
- Cycle-accurate CPU and PPU emulation
- Low-level emulation of PPU hardware latches/registers
- No APU support
- PPU timings are juuust a little bit off
- No support for color masking
- Certain games are broken in one way or another (see compatibility list)
- APU support
- More mapper implementations
- Color masking support
- This project is a technical challenge for myself, and as such a user-friendly interface is not one of its goals. This is not to say that it will never exist, just that it's not a priority.
- Save states
- Again, I'm interested in adding such a feature, but it's definitely not a priority.
Mostly for educational purposes, and also for fun.
- The NesDev forums and wiki, which have been an invaluable resource in building this project
- blargg, whose tests have helped immensely with getting details (both large and small) locked down
- Everyone responsible for the documents listed on the resources page
cNES is published under the MIT License. Use of its code and any provided assets is permitted per the terms of the license.