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 usingwinit
andwgpu
(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.