Skip to content
codingncaffeinePublic

About

WPF/.NET 8 multi-system emulator frontend using libretro cores

Resources

Contributing

Stars

18 stars

Watchers

0 watching

Forks

Repository files navigation

Emutastic

Emutastic

License: GPL v3

A full-featured multi-system emulator frontend for Windows โ€” built with WPF and .NET 8 โ€” that turns your game collection into a clean, console-organized library spanning 37 systems from the 8-bit era through PlayStation 3, with your Windows games and apps on the same shelf. Emulation is handled by libretro cores loaded at runtime; no cores or BIOS files are bundled.

Two ways to play: a full-power desktop library at your monitor, or EmuTV โ€” a controller-only, big-screen mode for the couch.

Also available for Linux and Apple Silicon Mac.

Highlights

  • ๐ŸŽฎ 37 systems โ€” 8-bit classics through PlayStation 3 (PS2 via LRPS2, PS3 via RPCS3)
  • ๐ŸชŸ Windows games and apps โ€” add programs, shortcuts and Steam links to their own Windows category and launch them from the library or EmuTV
  • ๐Ÿ—‚๏ธ Clean, console-organized library with box art and rich metadata (OpenVGDB + ScreenScraper), and a sidebar you can reorder and trim to the consoles you use
  • ๐Ÿ† RetroAchievements โ€” full hardcore-mode compliance, in-game unlock toasts, and per-game stats
  • ๐Ÿ“บ EmuTV โ€” a controller-only, couch-friendly console mode for the living room (renders ES-DE themes)
  • ๐ŸŽจ Deep theming โ€” a visual editor with live preview and 44 color tokens
  • โ˜๏ธ GitHub cloud sync โ€” each PC backs up its battery saves, memory cards and library to its own private repository, with optional encryption
  • ๐Ÿ”ง ROM hacks & HD mods โ€” IPS / BPS / UPS soft-patching on every core (originals untouched), NES HD packs via Mesen, and HD Mode 7 + widescreen SNES via bsnes-hd
  • ๐Ÿ“– In-app game manuals ยท ๐ŸŽฅ gameplay recording ยท ๐Ÿ“ per-game notes
  • ๐ŸŽ›๏ธ Full controller support โ€” analog-as-D-pad, gamepad save states, disk swapping, and per-system cheats

๐Ÿ“บ EmuTV โ€” the living-room mode

EmuTV

EmuTV turns Emutastic into a couch-first console interface โ€” browse your entire library, launch games, and load save states with only a controller, no keyboard or mouse. Think Steam Big Picture or LaunchBox Big Box, built for your TV and living-room setup.

It renders ES-DE themes out of the box โ€” carousels, wheels, grids, box art, and metadata โ€” so your shelf looks exactly how you want it. Same Emutastic underneath; a completely different experience on the couch.

Legal notice: This project is a frontend only. It does not include, distribute, or facilitate the acquisition of any copyrighted software, ROM images, BIOS files, or other proprietary system files. You are solely responsible for ensuring you have the legal right to use any software you load into this application.


Requirements

  • Windows 10/11 x64
  • .NET 8 Desktop Runtime
  • Visual C++ Redistributable 2015โ€“2022 (x64) โ€” required by most libretro cores
  • libretro core .dll files (downloadable in-app โ€” Preferences โ†’ Cores)
  • SDL3.dll (x64) for controller support beyond bare XInput: real device names, choosing which controller each player uses (Preferences โ†’ Controls โ†’ Input Device), and DirectInput / generic-HID pads (Retrolink, ShanWan / Hyperkin adapters, arcade sticks). With it every player reads through SDL3 and an unbound player takes the next free pad; without it only XInput pads work, addressed by slot. (Downloadable in-app โ€” Preferences โ†’ Extras)
  • Optional: ffmpeg.exe for video recording, DAT files for ROM identification (also in Preferences โ†’ Extras)

Windows SmartScreen: Emutastic is not code-signed. Click "More info" then "Run anyway" on first launch.


Supported Systems

37 systems across 11 manufacturers (click to expand)
System Tag Core (priority order) BIOS
NES NES nestopia โ†’ quicknes โ†’ fceumm No
Famicom Disk System FDS nestopia disksys.rom
SNES SNES snes9x โ†’ bsnes โ†’ bsnes-hd beta No
Nintendo 64 N64 parallel_n64 โ†’ mupen64plus_next No
GameCube GameCube dolphin No
Game Boy GB mgba โ†’ gambatte โ†’ sameboy No
Game Boy Color GBC mgba โ†’ gambatte โ†’ sameboy No
Game Boy Advance GBA mgba Optional
Nintendo 3DS 3DS azahar No
Nintendo DS NDS desmume โ†’ melonds No
Virtual Boy VirtualBoy mednafen_vb No
Genesis / Mega Drive Genesis genesis_plus_gx โ†’ picodrive No
Sega CD / Mega CD SegaCD genesis_plus_gx bios_CD_U.bin (USA), bios_CD_E.bin (EU), bios_CD_J.bin (JP)
Sega 32X Sega32X picodrive No
Sega Saturn Saturn mednafen_saturn โ†’ kronos โ†’ yabause Kronos: kronos/saturn_bios.bin. Beetle: sega_101.bin / mpr-17933.bin (JP), mpr-17941.bin (USA/EU)
Master System SMS genesis_plus_gx โ†’ picodrive No
Game Gear GameGear genesis_plus_gx No
SG-1000 SG1000 genesis_plus_gx No
Dreamcast Dreamcast flycast No
PlayStation PS1 mednafen_psx_hw โ†’ mednafen_psx USA: scph5501.bin / scph1001.bin / scph7001.bin, EU: scph5502.bin, JP: scph5500.bin
PlayStation 2 PS2 pcsx2 (LRPS2) Region dump, any filename (e.g. SCPH-39001.bin)
PlayStation 3 PS3 RPCS3 (installed via Cores / Extras) System firmware (PS3UPDAT.PUP), user-provided
PSP PSP ppsspp No
TurboGrafx-16 TG16 mednafen_pce โ†’ mednafen_pce_fast No
TurboGrafx-CD TGCD mednafen_pce โ†’ mednafen_pce_fast Any of syscard3.pce / syscard2.pce / syscard1.pce
Neo Geo Pocket NGP mednafen_ngp No
Neo Geo Pocket Color NGPC mednafen_ngp No
Neo Geo NeoGeo geolith neogeo.zip + aes.zip
Neo Geo CD NeoCD geolith neogeo.zip + aes.zip + neocdz.zip
Arcade Arcade fbneo + mame2003-plus No
Atari 2600 Atari2600 stella No
Atari 7800 Atari7800 prosystem No
Atari Jaguar Jaguar virtualjaguar No
ColecoVision ColecoVision gearcoleco โ†’ bluemsx No
Vectrex Vectrex vecx No
3DO 3DO opera Any of panafz10.bin (Panasonic) / panafz1j.bin (JP) / goldstar.bin (GoldStar)
Philips CD-i CDi same_cdi No

Alongside them, Windows (tag Windows) holds your own PC games and apps. They run as the programs they are โ€” no core, no BIOS.

For per-system BIOS filenames and placement, known-broken arcade hardware, the Saturn BIOS naming nuance, and Neo Geo / Neo Geo CD specifics, see the Wiki.


ROM Import

Drag and drop ROMs onto the library or use Import ROMs. The app detects the console from file extension, cleans the title, and hashes the ROM. For ambiguous formats (.chd, .iso, .cue, .bin), a SHA1 lookup against DAT files is attempted first โ€” if no match, a console picker is shown.

Multi-disc games (Final Fantasy VII, Metal Gear Solid, etc.) are auto-bundled into a single library entry โ€” drop a folder containing the disc files (.cue/.bin or .chd) and Emutastic writes an .m3u playlist alongside them so the game shows up once, not three times. Hand-authored .m3u files in the folder are honored as-is.

Important: Download DAT files in Preferences โ†’ Cores / Extras before importing. Without them, disc images and some cartridge ROMs may be assigned to the wrong system during import.

Windows games and apps โ€” drop a program (.exe), a shortcut (.lnk), a Steam or Epic link (.url) or a batch file onto the library, from any view, and it's added under Windows. With Windows selected you can also drop a folder: a game's install folder adds that game, a folder of game folders (such as steamapps\common) adds one entry per game, and a folder of shortcuts adds its shortcuts โ€” installers, uninstallers, crash reporters and updaters are left out. Apps are never copied; each entry opens the program where it's installed, so shortcuts keep their arguments. Every app gets its own icon as a cover straight away, Steam links get Steam's cover and details, and ScreenScraper or SteamGridDB (when set up) can fill in the rest. Launches and play time are recorded like any other game.


Features

Click to expand the full feature list
EmuTV โ€” Big-Screen Couch Mode

A controller-only, 10-foot front end for the TV. Open it from the library with the L3 + R3 + L2 + R2 chord (the same chord quits a running game back to EmuTV). Browse your consoles and games, launch with a button, and pull up save states with Start โ€” no keyboard or mouse needed.

EmuTV renders themes built for EmulationStation Desktop Edition (ES-DE): drop an ES-DE theme into your EmuTV themes folder, or download one from the built-in theme browser (press Y), which pulls from the official ES-DE themes list. Carousels (including wheel layouts), grids, text lists, game metadata, rating stars, favorite/completed badges, and WebP artwork all render per the ES-DE spec.

ES-DE is a large, evolving spec โ€” not every theme is fully supported yet, so some may render with missing or imperfect elements. The bundled EmuTV Default theme always works as a known-good fallback. Rebind EmuTV's controls and review every controller combo in Preferences โ†’ EmuTV.

Themes

Four built-in themes: Dark (default), Light, OLED Black, Midnight Blue. Full visual editor with 44 color tokens and live preview. Set custom background images with zoom, pan, and tile controls. Export/import themes as .emutheme files.

Artwork & Metadata

Box art, titles, developers, genres, and descriptions are filled in automatically โ€” no account required. By default Emutastic matches your games against OpenVGDB, a built-in local database, and pulls box art from the libretro thumbnail server. (Only the OpenVGDB match is offline; the artwork itself still downloads over the internet.)

Sign in to ScreenScraper in Preferences โ†’ Snaps to promote it to the primary source โ€” community-edited, region-aware metadata with fuller coverage, plus 3D box art and downloadable game manuals. OpenVGDB stays on as the backup that fills anything ScreenScraper misses.

Controllers

Controllers are read through SDL3 during gameplay (XInput is the fallback when SDL3.dll is absent). Xbox, DualSense/DualShock, and hundreds of other controllers are identified by product name; generic USB adapters and arcade sticks SDL has no profile for are read positionally and can be mapped like any other pad. Choose which controller each player uses in Preferences โ†’ Controls โ†’ Input Device โ€” the choice is saved per system, follows the controller across unplug/replug, and two identical pads are listed as the name and the name "(2)". A player with no choice takes the next controller no one else has claimed, and a controller dropping out mid-game frees only that player's slot; the others keep theirs. Button mappings are configurable per system and player in the same panel. (Emutastic.exe --selftest-input runs a headless check of this routing over SDL3 virtual joysticks; the report lands in Logs\input-selftest.log.)

Left analog stick works as movement input on every old console with a digital joystick or D-pad โ€” push the stick on the NES, SNES, Genesis, Game Boy line, Saturn, Neo Geo, Atari, ColecoVision, TurboGrafx, arcade games, and more, and your character moves. Diagonals are honored (pushing NE registers as up + right simultaneously). The D-pad still works exactly as before โ€” use whichever you prefer.

Save and load states from the gamepad โ€” hold L3 then press R2 to save, or L2 to load your latest state, in any game (no overlay needed). A quick on-screen toast confirms each action, and the buttons are configurable per console in Preferences โ†’ Controls.

RetroAchievements

Earn achievements while playing via RetroAchievements. Enable in Preferences โ†’ Achievements with your RA username and password; paste your Web API Key (from retroachievements.org โ†’ Settings) in the same place to unlock per-game stats on the detail card.

The detail card for any game you've launched with achievements enabled shows:

  • An achievement progress bar with X / Y unlocked ยท Z pts, gold-tinted when you've mastered the set
  • Coming up โ€” three suggested achievement badges. If you've made in-game progress in your last session, these are the ones you're closest to ("73% ยท 3 of 5"); otherwise they're picked from the community's fastest-typical unlocks for the game
  • Typical run caption: beat ~Xh ยท master ~Yh based on community medians
  • Hardcore mode aware โ€” all numbers and "Coming up" picks reflect hardcore unlocks when Hardcore is on

In-game, achievements appear as toast notifications when you unlock them.

Hardcore mode โ€” Emutastic enforces every RetroAchievements hardcore-mode rule (save-state loading blocked, cheats blocked including the cores' own cheat options, disc swaps verified by rcheevos, no rewind/slow-motion/frame-advance features, unique User-Agent, persistent on-screen indicator). Server-side hardcore credit requires RA's formal approval, which a frontend can apply for after six months of public availability; Emutastic's application was submitted in October 2026 and is awaiting review. See the Hardcore Compliance wiki page for a line-by-line audit of every requirement on RA's checklist, with code cross-references.

About & Updates

Preferences โ†’ About shows the current version, build date, and credits. On open, it checks GitHub for the latest release โ€” if a newer version is available, you can download and install it in-app. The update is staged in a temp folder and applied by a small companion updater (Emutastic.Updater.exe) that replaces the running binary while the app restarts. No telemetry.

  • Core Options โ€” Per-core settings (internal resolution, graphics plugins, etc.) in Preferences โ†’ Core Options
  • Play Time Tracking โ€” The game detail card shows your total accumulated play time per game, recorded each session
  • Sidebar Layout โ€” Choose which consoles the sidebar lists and in what order in Preferences โ†’ Library: hide a console or a whole manufacturer, move consoles within their group or move a group with its consoles, and optionally hide consoles with no games. Changes apply immediately, hidden consoles' games stay under All Games, and Restore Default Layout puts everything back
Cloud Sync

Back up each PC's battery saves, memory cards and library database to a private GitHub repository. The library database carries your game metadata, ratings, favorites, play time, and per-game notes, so a restore brings all of that back. Sign in with one click in Preferences โ†’ Backups โ€” a private emutastic-saves-<pc-name> repo is created automatically under your account. Every PC keeps its own repository, so a new or reinstalled PC can never overwrite another PC's saves, and signing in again on a reinstalled PC with the same name restores its backup. Battery saves and memory cards upload on game close โ€” or also every 15 minutes during play, if you choose โ€” and Manual only leaves every transfer to Sync Now, which backs up everything that changed and restores anything missing, with its progress in the status bar. HD texture packs, BIOS and console system files, shader caches and save states stay out of the backup.

Optional AES-256-GCM encryption with a user-chosen passphrase โ€” saves are encrypted before they leave your machine. Your saves repo is a normal private GitHub repo you can browse anytime. See the Cloud Sync wiki page for details on encryption, storage limits, and troubleshooting.

Disk Swapping (FDS, PS1, Saturn, Sega CD)

Press L3 + Start in-game to flip between discs/sides on systems that need it. Rebindable to any two-button chord (controller or keyboard) in Preferences โ†’ Controls โ†’ Disk Swap. The status bar shows the new disc number on each swap.

Multi-disc games are auto-bundled at import time โ€” see the ROM Import section. See the wiki page for per-console specifics and troubleshooting.

Game Notes

Keep free-form notes on any game โ€” passwords, where you left off, strategies โ€” in a floating editor with line numbers, find, and word-wrap/monospace toggles. Open notes from the library right-click menu, a game's detail card, or the in-game overlay. Notes autosave as you type and ride your Cloud Sync backup across PCs. The window can be pinned on top and rolled up to its title bar โ€” handy beside a running game on a single monitor.

Game Manuals

Download a game's original PDF manual and read it in a built-in viewer โ€” zoom, search, page thumbnails โ€” that reopens on your last-read page. Pull it up in-game from the overlay without closing your game. Manuals are sourced from ScreenScraper (requires a ScreenScraper login); coverage is best for popular console titles.

Cheats

Per-game cheats from the in-game cog menu or the library detail card's โ‹ฏ menu. Game Genie / GameShark / raw codes depending on system. See Cheats in the wiki for code formats per system, storage paths, and the list of cores where cheats aren't supported.

ROM Hacks

Apply an IPS, BPS, or UPS patch to a base game right from the library (right-click โ†’ Apply ROM Hack) โ€” you can pick the patch file or its downloaded zip directly. The patched game becomes its own library entry โ€” with its own saves โ€” while your original ROM is left untouched. Patches work on every core (cores that load by file path get an automatically staged patched copy), and BPS/UPS patches are checksum-verified against your ROM, so a mismatched or wrong-region copy is caught before it loads. Available on cartridge systems (SNES, GBA, Game Boy / Game Boy Color, NES, Genesis, Nintendo 64, and more). NES also supports Mesen HD packs โ€” install from the same right-click menu and switch mods from the game card's โ€ฆ menu.

See ROM Hacks in the wiki for the full system list, supported patch formats, how patched ROMs are scraped, and tips on matching a patch to the right base ROM.


Wiki

Per-system configuration, known issues, teardown fixes, and technical details are documented in the Wiki.


Building

Requires Visual Studio 2022+ with .NET desktop development workload.

git clone <repo>
cd Emutastic
dotnet build .\Emutastic.sln -c Release

Credits

Libretro Cores

Emulation is handled by libretro cores maintained by their upstream authors. Emutastic bundles none of them โ€” the in-app core manager downloads from the libretro build servers on demand. Please support these projects directly.

Core Upstream author(s)
Azahar Azahar team (successor to Citra / Lime3DS)
Beetle PSX / Saturn / PCE / VB / NGP Mednafen team (Ryphecha)
blueMSX blueMSX team (Daniel Vik and contributors)
bsnes byuu / near and contributors
bsnes-hd beta (SNES HD Mode 7 / widescreen) DerKoun and contributors
DeSmuME DeSmuME team
Dolphin Dolphin team
FBNeo (FinalBurn Neo) FBNeo team
MAME 2003-Plus MAME team / libretro contributors
FCEUmm FCEUmm team
Flycast flyinghead and contributors
Gambatte Sindre Aamรฅs (sinamas)
Gearcoleco Ignacio Sรกnchez (drhelius)
Genesis Plus GX Eke-Eke
Geolith R. Danbrook (rdanbrook)
Kronos Kronos team
LRPS2 PCSX2 team / libretro maintenance
melonDS Arisotura
mGBA Vicki Pfau (endrift)
Mesen (NES HD packs) Sour and contributors
Mupen64Plus-Next libretro team
Nestopia UE Nestopia UE team
Opera libretro team (3DO)
ParaLLEl-N64 libretro team (Themaister and contributors)
Picodrive notaz
PPSSPP Henrik Rydgรฅrd and contributors
ProSystem Greg Stanton (upstream) / libretro maintenance
QuickNES Shay Green (blargg)
RPCS3 (PlayStation 3, experimental โ€” standalone emulator, fetched on demand from its own builds and run as a separate process) RPCS3 team
SAME CDi CDi community (MAME derivative)
Snes9x Snes9x team
Stella Stella team
VecX Valavan Manohararajah (upstream) / libretro maintenance
Virtual Jaguar Virtual Jaguar team
Yabause Yabause team

Libraries

Library Purpose License
rcheevos RetroAchievements client MIT
libchdr CHD format reader (CHD-based achievement hashing) BSD 3-Clause
libwebp (dwebp) Google's WebP decoder โ€” renders WebP art in EmuTV themes BSD 3-Clause

Full license texts in NOTICES.txt.

Shaders & Bezels

Optional downloadable extras (Preferences โ†’ Cores/Extras). Emutastic bundles none of these โ€” the in-app downloader fetches them from the sources below on demand.

Project Purpose License
librashader Runtime that renders slang shader presets MPL-2.0 (runtime) / MIT (headers)
libretro slang-shaders Community multi-pass shader preset collection Various (per shader)
The Bezel Project Arcade & Neo Geo bezel artwork Community artwork

EmuTV Themes

EmuTV renders themes built for EmulationStation Desktop Edition (ES-DE), and the in-app theme browser downloads from the official ES-DE themes list. Themes are created by their respective authors under their own licenses โ€” please support them on their project pages. Emutastic is not affiliated with or endorsed by ES-DE.

Controller Illustrations

Artwork from OpenEmuControllerArt (BSD 3-Clause). Not affiliated with or endorsed by OpenEmu.

Artist Controllers
David McLeod (@Mucx) 32X, FDS, GB, GBA, Game Gear, SMS, NES, Sega CD, Genesis, SNES
Ricky Romero (@RickyRomero) Atari 2600/5200, N64, NDS, Odysseyยฒ, PS1, PSP, Saturn, SG-1000, Vectrex, Virtual Boy
Craig Erskine (@qrayg) GameCube, Neo Geo Pocket, PC Engine / TG16
Salvo Zummo / David Everly / Kate Schroeder Atari 7800, 3DO, ColecoVision

Emutastic's clean, library-first design was inspired by OpenEmu, the superb multi-system emulator for macOS โ€” the project that started it all. Not affiliated with or endorsed by OpenEmu.


License

GNU General Public License v3.0

About

WPF/.NET 8 multi-system emulator frontend using libretro cores

Resources

Contributing

Stars

18 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages