Skip to content

Getting Started

DoubleGate edited this page Jul 8, 2026 · 1 revision

Getting Started

RustySNES is a cycle-accurate Super Nintendo Entertainment System / Super Famicom emulator written in pure Rust. It's available as a native desktop app for Windows, macOS, and Linux; a WebAssembly build also exists but is currently a bootstrap scaffold, not yet a playable in-browser demo (see Roadmap).

Quick Start (Desktop)

Downloading the app

Pre-compiled binaries for Windows, macOS, and Linux are attached to each tagged release. If you'd rather build from source, see Building-from-Source.

First launch

RustySNES opens as an always-on egui shell — a persistent menu bar and status bar, even before a ROM is loaded.

  1. Load a ROM: go to FileOpen ROM. Select your .sfc/.smc file (.fig/.swc copier-header dumps are also detected and stripped). .zip-archived ROMs load transparently too.
  2. Play: the game starts immediately once loaded.
  3. Save/Load state and Rewind: the Emulation menu has Save State / Load State (a single quick-save slot) and Rewind. Rewind is disabled by default (config.rewind.capacity: 0) until you enable it in your config file.
  4. Reset / Power Cycle / Pause: also in the Emulation menu.

Default controls (Player 1)

SNES button Key
D-pad Arrow keys
A X
B Z
X S
Y A
L Q
R W
Select Right Shift
Start Enter

Player 2's keyboard defaults are not yet configured (a TODO in input.rs).

Gamepads

USB gamepads auto-bind to Player 1 via gilrs.

Supported formats

.sfc / .smc (LoROM, HiROM, ExHiROM, and ExLoROM header auto-detection), plus .fig/.swc copier-header dumps (the header is detected and stripped automatically). .zip archives containing one of these are also accepted — the emulator extracts the first recognized entry.

You must provide your own ROMs, legally obtained from your own cartridges or from homebrew developers. Commercial Nintendo ROMs are never provided or committed to this repository.

Some coprocessor-carrying carts (the DSP-1 family, CX4) additionally need a user-supplied firmware dump (e.g. dsp1.rom) to function — the emulator will prompt for this rather than silently degrading accuracy (see Architecture-Decision-Records, ADR 0003).

Clone this wiki locally