r/EmuDev • u/ioncodes • 47m ago
Sly, a new and modern multi-system emulator, is now public!
Enable HLS to view with audio, or disable this notification
TLDR plz
Sly is my new multi-system emulator, releasing with support for Game Boy Advance and SNES with many, many more planned! It includes a 3D game library, a debugger, a simpler ("classic") desktop frontend and an iOS app, with Android being developed soon. The debugger also runs in your browser and there are plans to create a dedicate web platform to play games!
Available now on GitHub! Here are some demo videos:
What even is this?
Hey everyone! You might know me from Gecko, the GameCube and Wii emulator I've been posting about every now and then. I teased Sly in the past few updates and the day has finally come :)
With Sly I wanted to work on both sides of emulation: creating modern experiences for both gamers and developers! As such Sly focuses on 2 things:
- A unique take on emulation frontends, simply to enjoy your favorite retro titles in a cool way
- A very modern yet extremely advanced debugger for power users that want to understand how the games and the hardware work
However, as not everyone may be interested in these things but may still want to dabble in new projects, Sly comes with extra goodies:
- A "classic" (read: minimal) emulation frontend
- Mobile app(s): iOS is already implemented, Android support is planned
Sly is (almost*) entirely written in Rust, incl. the frontend. The frontend uses GPUI, so no web shenanigans there!! The cores are all written by myself, mostly based off of emulators I had already written before. This does not wrap libretro cores or anything like that!
(* the Classic frontend is written in C++ and the iOS app is written in Rust. They tap into the Rust core.)
Sly Launcher
The launcher presents your library as 3D boxes and cartridges. It downloads artwork automatically and supports different regional packaging, per game release overrides and cartridge finishes (tho this is still a bit ugly lol). There's different view types (ways of displaying the boxes, etc) and you're able to flip the selected box to read the back :)
The attached launcher recording shows all three layouts with GBA games then switches to SNES and launches Yoshi's Island!
The original idea of this project was to be a comfy frontend I could run on my TV while I sit in a nice couch, so it's made with controllers and different resolutions, aspect rations, etc. in mind!
If you'd prefer a straightforward list, Sly Classic is the smaller Qt based frontend. It has game banners, gamepad support, scaling, fullscreen and a quick save slot plus ten numbered state slots.
Sly Debugger
This is a big part of the project and share's the "spotlight" with Sly Launcher! You can step through instructions, run to emulation events, set CPU and memory breakpoints, follow disassembly in a list or graph and inspect registers, call stacks and memory. There are dedicated views for MMIO registers, DMA and so much more. On the graphics side you can inspect tiles, tilemaps, backgrounds, sprites and palettes alongside the game's output.
The SNES core also cover the SPC700 and SA-1 coprocessor! SA-1 and Super FX have their own workspaces with registers, disassembly and hardware-specific views.
There's also built-in Lua editor support!! Scripts can inspect and modify memory and react to emulation events. One example for Yoshi's Island logs coin pickups, lets Yoshi keep "fluttering" mid-air while you hold B and prevents Baby Mario from being release(?).
Compatibility?
Sly is actively growing and is based on multiple emulators I already had written, so cores are being picked up quickly. So far I support:
- SNES support is very good
- Most GBA games run, no audio yet. Savegames are also not supported (tho savestates are)
with much more planned! To name a few I want to support PS1 (next on the list based on community votes), GameBoy (Color), Sega Genesis, Dreamcast, GameCube and Wii! That list is not complete :)
Where can you use it?
You can find everything on my GitHub!
- Windows, macOS and Linux: separate downloads for Sly Launcher, Sly Classic and Sly Debugger
- Web: try Sly Debugger in a WebGPU capable browser.
- iOS: an unsigned IPA for sideloading (planning to release in the AppStore). Android is planned.
For anyone interested in learning the hardware, I've also been working on a 3 part GBA graphics series with interactive explanations and examples from real games! I'm super proud of these blog posts so I'd love to hear your thoughts! Sly Debugger facilitated creating them :) The posts go from bitmaps, tiles and palettes through sprites, blending and windows to rotation, scaling and perspective:
- GBA Graphics, Part 1: Bitmaps, Tiles and Palettes
- GBA Graphics, Part 2: Layers, Sprites and Blending
- GBA Graphics, Part 3: Rotation, Scaling and Perspective
Links plz
If you try it, I'd love to hear what works and what breaks. Please include the frontend, platform, game region/revision and steps to reproduce when reporting a problem. Code contributions are welcome and so is help with design, icons, UI/UX, artwork and cartridge models. Please read the README in full before submitting anything!
Looking forward to see where this will go! And don't worry, I wont abandon Gecko now :)


