Skip to content

caseif/cNES

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cNES

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.

Features

  • Support for popular mappers (NROM, MMC1, UNROM, CNROM, MMC3, AxROM)
  • Cycle-accurate CPU and PPU emulation
  • Low-level emulation of PPU hardware latches/registers

Limitations

  • 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)

Planned Features

  • APU support
  • More mapper implementations
  • Color masking support

Non-goals

  • User-friendliness
    • 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.

Why?

Mostly for educational purposes, and also for fun.

Special Thanks

  • 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

License

cNES is published under the MIT License. Use of its code and any provided assets is permitted per the terms of the license.

About

Cycle-accurate NES emulator written in C.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published