SNES EMULATOR
prisme_snes
Prisme (prisme_snes) is an open-source Super Nintendo (SNES / Super Famicom) emulator written in Rust. It implements the 65C816 CPU, SPC700 audio, S-DSP, PPU (BG modes 0–7, Mode 7, sprites, windows, color math, hires/interlace), DMA, and cartridge mapping plus four cartridge coprocessors (SuperFX, SA-1, DSP-1, CX4). It includes a native Rust frontend with a

WHY IT MATTERS
Why Prisme exists
Prisme is a from-scratch SNES implementation in Rust intended as both an accuracy-focused emulator core and a self-contained frontend/library. The repository includes technical documentation (French and English), a plain-language walkthrough of the emulator internals, and a JSON agent channel for programmatic control; the project also experiments with an optional 'assistant' feature driven by a locally installed Claude CLI.
BEST FOR
Notable capabilities
Playable rendering and audio for LoROM and HiROM (NTSC and PAL); full 65C816 instruction set; SPC700 audio with S-DSP features (BRR, interpolation, ADSR/GAIN, echo); functioning SuperFX and SA-1 cores and HLE for DSP-1 and CX4; headless modes for PNG/WAV/trace dumps; save states and a game library frontend with metadata lookup.
The people behind prisme_snes
Project & status notes
The repository presents a mature codebase with extensive unit tests (the README reports 758 passing tests split across core and frontend) and a status summary describing implemented subsystems and known gaps. The README describes a Version 1.4.0 feature set and verifies end-to-end gameplay on several commercial SNES cartridges (validation examples listed). The project is hosted on GitHub and distributed under its repository's license; development history, punchlist of accuracy items, and roadmap/ideas are documented in the repo's docs/ folder.
What prisme_snes supports
- LoROM and HiROM SNES cartridges (file types: .sfc, .smc, .zip supported by frontend)
- Cartridge coprocessors: SuperFX (GSU), SA-1, DSP-1 (HLE), CX4 (HLE)
- Platforms: Linux, macOS, Windows (cross-platform Rust frontend using winit + pixels + cpal; macOS has an additional native menu bar integration)
- Headless operation: scripted input, PNG/WAV/trace dumps, save-state export
Download and availability
OFFICIAL DOWNLOADS
Get prisme_snes
Official source and release builds are provided from the project's GitHub repository. The code and releases are available on the project's GitHub page and its Releases section; prebuilt binaries may appear there if the maintainer uploads them. For the canonical source and artifacts, use the repository and the Releases page.
Get prisme_snes ↗DOCUMENTATION
Official documentation
Read the official configuration, compatibility, and troubleshooting material before changing advanced options.
Read official documentation ↗prisme_snes setup guide
Setup note: This setup guide explains how to build and run prisme_snes from source, how to run the frontend and headless modes, and practical notes about controllers, saves, and the optional agent/assistant features. It is based on the project's official README and docs in the repository.
- 1) Get the source: Clone the official GitHub repository (stephanecot/prisme_snes). Use git to obtain the full history and docs directory so you have the project's documentation and 'emulateur-snes-explique.pdf'.
- 2) Install Rust toolchain: Install a recent stable Rust toolchain (rustup). The project builds with Cargo; the README states 'Requires a recent stable Rust toolchain.' Ensure rustc and cargo are on your PATH and up-to-date before building.
- 3) Build the project: From the repository root run: cargo build –release . This builds the workspace. If you only want the frontend binary you can invoke cargo run –release -p prisme — <options> as shown in the README.
- 4) Running the frontend (with a ROM): Run the frontend with a ROM path: cargo run –release -p prisme — path/to/game.sfc . The frontend accepts .sfc, .smc and .zip ROMs. Launching without a ROM opens a native file dialog filtered to supported extensions and starting in roms/ if that folder exists.
- 5) Headless and scripted operation: The emulator supports headless execution and scripted inputs. Example shown in the README: cargo run –release -p prisme — game.sfc –headless –frames 300 –script inputs.txt . Headless mode still requires a ROM path.
- 6) Controls and hotkeys: The README documents keyboard mappings (arrow keys for D-pad, Z/X/A/S for face buttons, Q/W for L/R, Enter/Right-Shift for Start/Select) and emulator hotkeys: P pause, N frame-advance, F5/F9 save/load state, F8 export SPC, F12 screenshot, F11 fullscreen, etc.
- 7) Save files and battery SRAM: The frontend persists cartridge SRAM sidecars (e.g. .srm) as described in the repository. Note: some multi-CPU cartridges (SA-1) keep battery data in the coprocessor's own BW-RAM; the README documents that such data may survive in save states but not be persisted by the front-end's simple cart.sram persistence (see docs/PUNCHLIST.md and frontend/src/save.rs).
- 8) Optional agent and assistant features: Prisme provides an –agent JSON stdin/stdout channel for programmatic control (step, press, screenshot, read/write memory, save/load state, cheats). An optional 'assistant' integration uses a locally installed claude CLI; absence of that tool disables the feature with a reason per the docs. Review docs/ASSISTANT.md before attempting to enable it.
Software reminder: Prisme does not include commercial game ROMs, BIOS, firmware, or keys. You must supply your own legally-obtained ROM files and any third-party tools (e.g., the optional claude CLI) the optional features require.
Sources and further reading
Detailed guides and tutorials
Explore step-by-step guides for prisme_snes as they are published.
Retro Replay Retro Gaming History, Reviews & Emulation
