CHERT

An NES and Famicom emulator pairing a cycle-stepped 6502 with accurate 2C02/2C07 PPU and 2A03/2A07 APU emulation, validated against the standard blargg and NESdev test-ROM suites. Both NTSC and PAL machines are covered, detected from the ROM header or forced by hand, and .nes images load with either an iNES or a NES 2.0 header.

All five APU channels are synthesised band-limited, and the cartridge expansion chips (Konami VRC6 and VRC7, Namco 163, Sunsoft 5B, and MMC5) are mixed in alongside them, each normalised to its own range so a plain cartridge is never quietened to make room for a chip it does not have. Separate volume controls balance the console against the cartridge.

Chert covers a wide range of mappers, from NROM and MMC1 through MMC3, MMC5, and the Konami, Sunsoft, Jaleco, Irem, Bandai, and Taito boards, with two standard controllers, save states that stay deterministic under run-ahead, and battery-backed cartridge saves.

Available on Windows, Linux, macOS, Android, iOS, and WebAssembly. Chert is plain, portable C11 with no exotic dependencies, so a port to video game consoles is well within reach. Contact us if that is of interest.

Retro City Skyline

Chert in Action

Commercial games running unmodified on Chert, shown to demonstrate compatibility.

Batman: The Video Game running on Chert
Batman: The Video Game © 1989 Sunsoft. Batman © DC Comics
Castlevania III: Dracula's Curse running on Chert
Castlevania III: Dracula's Curse © 1990 Konami
Mega Man 2 running on Chert
Mega Man 2 © 1988 Capcom
Ninja Gaiden II: The Dark Sword of Chaos running on Chert
Ninja Gaiden II: The Dark Sword of Chaos © 1990 Tecmo

Chert Options

Third-Party Software