Skip to content

Libretro Core

DoubleGate edited this page Oct 16, 2026 · 2 revisions

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.

What it supports

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.

Building

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.

Upstream

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.

Clone this wiki locally