-
Notifications
You must be signed in to change notification settings - Fork 0
Differences from Windows
Emutastic for Linux is a 1:1 port of Emutastic for Windows — same look, same features, same data formats. The same author maintains both. The genuine differences are platform plumbing, listed here; if a page in this wiki doesn't mention a difference, the behavior matches Windows.
| Concern | Windows | Linux |
|---|---|---|
| UI framework | WPF (.NET 8) | Avalonia (.NET 10) |
| Game rendering | Direct3D / Vulkan overlay window | Separate --game-host process; OpenGL with a native Wayland toplevel presenter (X11/SDL fallback) |
| HW-core rendering | Vulkan/GL overlay HWND | GL FBO + never-blocking 4-slot PBO readback ring |
| Audio | WASAPI | SDL3 audio stream (audio-master clock + dynamic rate control) |
| Input | XInput | SDL3 gamepad |
| Core loading |
LoadLibrary (.dll) |
dlopen via .NET NativeLibrary (.so) |
Games running in a separate process is the biggest structural difference: a crashed core can never take the library down, and the library window stays fully responsive during play.
Follows the XDG spec instead of %AppData%:
| Windows | Linux |
|---|---|
%AppData%\Emutastic\config.json |
~/.config/Emutastic/config.json |
| Data folder (chosen at first run) | ~/.local/share/Emutastic/ |
Same two triggers (portable.txt beside the executable, or --portable), same PortableData/ layout. Only the tarball install can be portable; a .deb install lives in root-owned /usr/lib so the marker can't apply.
Same files, same rotation, three deltas:
-
controller-diag.loglives in theLogs/folder with everything else, not next to the executable (the install dir is read-only on a.debinstall). -
vulkan_debug.txtnever appears — the Linux port renders everything through OpenGL. - One extra:
emulator-host.log— games run in a separate host process, which logs there (the library process keepsemulator.log).
Fully interoperable with Windows: one shared repository serves both platforms (battery saves are keyed by ROM hash, so both installs must import the same ROM files). The per-PC repository toggle works the same.
Always the ffmpeg/x264 software path (no Windows.Graphics.Capture on Linux, and hardware video encode is deliberately not used). ffmpeg must be on PATH; the .deb declares it.
The Windows app runs the libretro slang shader pack through librashader (D3D11). librashader publishes no Linux binaries, so the Linux build instead downloads the libretro GLSL pack (shaders_glsl — the same shader library in the format RetroArch's own GL driver uses) and runs it through a built-in GL preset chain. Seven built-in presets (CRT Scanlines, the Game Boy palettes, LCD Grid, Smooth) are always available without the download. A shader choice saved on Windows (slang: prefixed) is ignored on Linux and vice versa — pick per platform.
Downloaded from the Linux libretro buildbot (.so instead of .dll); same core lineup and priorities as Windows. See Libretro Cores.
A few things shipped on Linux ahead of the Windows app:
- In-game challenge/progress indicators for RetroAchievements (primed-challenge badges, measured-progress tracker) rendered in the GL overlay.
- Per-game window size memory — each game's window reopens at its last size.
-
Ppause hotkey in-game — the Windows app pauses only via the overlay button.
Requires the .NET 10 SDK plus a C toolchain for the small vendored native libraries — details in the README.
Console Notes
- Nintendo 64
- Nintendo 3DS
- GameCube
- Sega Saturn
- Dreamcast
- PlayStation
- PlayStation Portable
- TurboGrafx-CD
- Neo Geo
- Arcade
- Vectrex
- Philips CD-i
- Atari Jaguar
Features
- Artwork & Metadata
- Cheats
- Cloud Sync
- Controllers
- Disc-Based Systems
- Disk Swapping
- Portable Mode
- RetroAchievements
- ROM Hacks
- Hardcore Compliance
Technical
Platforms
Legal