A SNES emulator written in Rust
Many games are already playable, but some graphics and sounds are faulty. Comparatively functioning games are e.g. Donkey Kong Country, Wolfenstein 3D, F-Zero, Super Mario World, Super Mario Kart, The Legend of Zelda, Super Street Fighter II.
In the default configuration, controller port 1 is connected to a standard controller and port 2 is left unconnected. These keyboard keys will drive controller 1:
| Keyboard key on QWERTY | Controller key |
|---|---|
| W | ↑ |
| A | ← |
| S | ↓ |
| D | → |
| Q | L |
| E | R |
| Left Alt | Start |
| Right Alt | Select |
| J | A |
| K | B |
| L | X |
| ; * | Y |
| 0-9 | Store Save State 0-9 |
| Shift + 0-9 | Load Save State 0-9 |
* the button right of L
You can configure rsnes with a TOML configuration file.
You can provide this file by using the option --config <PATH> or by placing
it into one of these paths:
$HOME/.config/rsnes/config.toml$HOME/.config/rsnes.toml/etc/rsnes.toml
See emulator/example.toml for
documentation.
This repository is a workspace consisting of two crates
rsnes- the SNES backend library (located in/rsnes/)rsnes-emulator- a sample frontend implementation usingwinitandwgpu(located in/emulator/)
rsnes API is neither tested nor documented (well)
rsnes-emulator is only tested on Linux/X11
This is a set of features to be implemented in the future (sorted by priority)
- Mode 7 support
- Sprite support
- Color math
- S-DSP echo effect support
- S-DSP noise effect support
- PPU Mosaic effect
- Save game to files
- SA-1 support
- Real gamepad input support for
rsnes-emulator(see winit#944, maybe use unstable fork or branch?) - Improved documentation
- Tests
- 65816 processor instruction tests
- SPC-700 processor instruction tests
- Audio tests
- Video output tests
- configurable UI
- configurable key bindings
- emulator running also on WASM
- DSP
coprocessor support
- DSP-1, DSP-1A, DSP-1B
- DSP-2, DSP-3, DSP-4 (low priority)
- ST010, ST011 (very low priority)
- GSU coprocessor support
(also known as Super FX)
- GSU1
- GSU2
- Complete the 65816 instruction set
- Complete the SPC700 instruction set
- Complete the NEC μPD77C25 instruction set
- Complete the GSU instruction set
- Multitap (MP5) controller support
- SNES Mouse support
- SNES Super Scope support
- Save States
- Capcom CX4 coprocessor support (this processor is only used in Mega Man X2 and Mega Man X3)
- SPC7110 data decompression chip
Contributions of any kind (bug reports, feature requests, pull requests, …) are very welcome.
