-
Notifications
You must be signed in to change notification settings - Fork 57
Retro Games
Moonfin can browse and play retro game libraries from your server, right inside the app, with gamepad support and save states that sync across devices. This page covers the client side. The games themselves, their cores, box art, and BIOS files are hosted by the Moonbase server plugin, so that has to be set up first.
- The Moonbase server plugin installed on your Jellyfin or Emby server. Without it, no game libraries appear in Moonfin.
-
A game library on the server. Moonfin shows any library the plugin reports as a game library. If you have not flagged one, it also auto-detects a Mixed Content library whose name contains
game,rom, oremulat. Put your ROMs there, organized by system. - A core for each system you want to play (see Cores below).
Once the plugin and a library are in place, game libraries show up automatically on the Home screen and in navigation, marked with a gamepad icon.
- Open a game library, pick a system, then pick a game.
- The detail screen shows box art, metadata (genre, year, players, developer, region), and pills for whether a BIOS and a saved state are present.
- Press Play to start fresh, Continue to resume from your last save state, or Restart.
During play, hold Start + Select (or the equivalent on your input device) to open the in-game menu: Resume, Save state, Load state, Restart, Fast-forward, per-core Emulator settings, and Exit. Save states and core options are written back to the server when you change them and when you exit, so they follow you to your other devices.
| Platform | Browse library | Play games |
|---|---|---|
| Android / Android TV | Yes | Yes |
| Windows, macOS, Linux | Yes | Yes |
| iOS | Yes | Yes |
| Apple TV (tvOS) | Yes | Yes |
| Web | Yes | No |
| Tizen (Samsung TV) | Yes | No |
On web and Samsung TV you can browse a game library but not launch a game.
Moonfin has two emulator backends and picks the right one per system automatically:
- Native libretro (default) renders directly in the app for the best performance. Controlled by the Use native emulator toggle in Settings > Playback.
- EmulatorJS runs the game in an embedded web player, served by the Moonbase plugin, for systems the native backend does not cover on your platform.
- Android, Windows, and Linux download cores on demand. Open Settings > Playback > Emulator Cores and download the systems you want.
- iOS and Apple TV ship with a fixed set of six bundled cores and cannot download more, because the App Store forbids downloading executable code.
Input works across every play-capable platform:
- Hardware gamepads (Android, desktop, and browser Gamepad API)
- Keyboard, mapped to a RetroPad layout
- An on-screen touch pad on phones and tablets
- The Siri remote on Apple TV
- Save states are stored on the server per user and sync between your devices.
- BIOS files are served by the server per game where a system needs one.
- ROMs can be downloaded for offline access from the same screens used for other media. Manage them under the downloaded games list in Settings.
- Web and Samsung TV can browse but not play.
- iOS and Apple TV are limited to the six bundled cores.
- N64, PSP, and Nintendo DS need just-in-time compilation, which is only available on Android and desktop.
.zip and .7z ROM archives both work: the Moonbase server plugin unpacks them and sends the client the raw ROM, so no archive handling happens on your device.