An NES emulator written in Rust, featuring cycle-accurate emulation and WebAssembly support.
Pinky is an open-source Nintendo Entertainment System (NES) emulator written entirely in Rust from scratch, based on publicly available documentation. It provides cycle-accurate emulation of the 6502 CPU, PPU, and APU, and can run as a libretro core or in web browsers via WebAssembly. The project focuses on accuracy through comprehensive test suites and supports several common mappers for game compatibility.
Rust developers interested in emulator development, retro gaming enthusiasts, and contributors looking to explore low-level system emulation with modern tooling.
Developers choose Pinky for its combination of Rust's safety and performance, its emphasis on accuracy through unique transistor-level PPU tests, and its versatility as both a libretro core and a web-based emulator.
An NES emulator written in Rust
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Implements accurate-ish cycle-accurate 6502 CPU, PPU, and APU based on public documentation, ensuring high fidelity for supported games like Super Mario Brothers.
Includes an emulator-agnostic test suite with ROMs and a PPU test suite generated from transistor-level simulations, providing robust accuracy validation.
Built entirely in Rust, leveraging its memory safety and performance for a reliable emulation foundation, as emphasized in the project's philosophy.
Can be compiled as a libretro core for RetroArch and to WebAssembly, allowing it to run in browsers or with various frontends, per the README.
Only supports five mappers (NROM, MMC1, UxROM, AxROM, UNROM 512), so many NES games are incompatible, as noted in the README's missing features list.
Lacks savestate support, PAL format emulation, and accurate PPU sprite overflow, which are standard in production emulators and admitted as gaps.
The author explicitly states it's not a production-quality emulator, indicating potential instability or incomplete implementations for broader use.