Repository navigation
Libretro Core
Specification: docs/libretro/architecture.md, implementation_specifics.md and advanced_features.md. Crate: crates/rustynes-libretro.
rustynes-libretro packages the RustyNES core for RetroArch and other libretro frontends. It is a thin wrapper: the emulation is the same no_std core as every other platform, and the wrapper uses std only for the host side. The README lists the core as published by the libretro buildbot.
The specification documents each feature; among them are memory maps for RetroAchievements and RetroArch cheats, deterministic serialization for save states and RetroArch's rollback netplay, the Famicom Disk System with disk control, Vs. System boards including two-screen DualSystem presentation, four controller ports with the Four Score and the Zapper, and native Game Genie cheats.
The crate Makefile builds the rustynes_libretro shared library (.so, .dylib or .dll) for the host platform, plus a static library for platforms whose RetroArch links cores statically. The core is built to unwind on a panic so that a fault can be contained at the core boundary instead of aborting RetroArch.
The libretro buildbot builds the core from the repository's .gitlab-ci.yml, whose Rust toolchain must match rust-toolchain.toml; a CI job fails if they differ.
RetroArch identifies the core through a .info file maintained in libretro-super, and its user documentation lives in libretro's docs repository. The procedure for updating both is docs/libretro/UPSTREAM_SYNC.md. WALKTHROUGH.md is a historical record of the first implementation, not the current specification.
RustyNES is a cycle-accurate NES emulator written in Rust, licensed GPL-3.0-or-later. It is a derivative work of GPL-licensed emulators; see provenance and NOTICE. This wiki is a summary; the repository's docs/ are authoritative. | GitHub Repository | Web Demo