Skip to main content

Zaparoo Core v2.16.0 released

· 28 min read
wizzo
Lead Developer

Zaparoo Core v2.16.0 is now available. This release adds device profiles, portable device backups, more resilient indexing for large libraries, and physical-disc matching.

Linux and SteamOS gain built-in RetroArch and native emulator launchers, while MiSTer gets more launch options, arcade hardware categories, and better coordination between Frontend, scripts, and ARM apps.

A big thank you to BossRighteous for custom gamelist bundles, Grant McNaught for custom launchables, and Gareth Jones for the /run/ URL fix. Thanks also to Niema Moshiri and Porkchop Express at MiSTer Addons for the GameID work behind physical-disc matching.

The highlights:

  • Device profiles: per-person playtime limits, profile cards, and separate MiSTer saves
  • Device backups: local MiSTer backups with transactional restore safeguards
  • Large-library recovery: lower memory use, resumable indexing, gameplay-aware throttling, and automatic corruption recovery
  • Physical-disc launching: use original game discs to launch matching copies from your indexed library
  • Linux and SteamOS launchers: built-in RetroArch support and experimental native SteamOS emulators
  • MiSTer updates: console-app reliability, arcade hardware categories, custom launchables, and broader core coverage

Download

Before you update

  • Physical discs and MiSTer arcade libraries: Run a media database update after installing v2.16.0 to add disc IDs and arcade hardware classifications.
  • MiSTer Frontend: Core v2.16.0 includes the Core-side part of the fix for launching visible scripts or ARM apps while Frontend is active. The full fix also needs a Zaparoo Frontend update, which is still in development.

Find changes for your setup

Profiles and backups

Device profiles

Applies to: All Core platforms. MiSTer also gets separate saves, save states, and RetroAchievements accounts.

Families and other shared-device setups can now create a profile for each person. Profiles can:

  • Inherit the device's playtime settings or use individual daily and session limits
  • Track usage against the person who launched the game
  • Be required before any media launches, leaving the device parked until someone identifies themselves

Create and manage profiles from the Core terminal UI. Switch from the profile list with an optional PIN, or write a profile card for instant switching. Core remembers the active profile across restarts, while selecting the shared profile returns to the device's existing global settings and data.

Profile cards bypass PINs

Anyone with a profile card can activate that profile. Treat profile cards like keys.

On MiSTer:

  • Each personal profile starts with separate, empty save and save-state directories. Existing saves stay with the shared profile.
  • If you switch profiles while a game is running, Core waits for it to stop before changing the live save data.
  • Save separation is currently limited to MiSTer. Other platforms still support profile switching and individual playtime controls.

MiSTer users running odelot's custom RetroAchievements Main can also keep a separate RetroAchievements account for each profile. First activation copies the currently visible account configuration, which can then be changed independently. The shared profile returns to the original account. These configuration files contain plaintext passwords, so Core intentionally excludes them from backups.

Administration: Admin and member roles protect profile and settings management in the terminal UI. Paired clients can also be approved as admin or member devices. To enforce those client restrictions remotely, enable Require encryption under Settings > Clients. Profiles are designed for shared household and kiosk setups rather than operating-system account security.

Back up settings and saves

Applies to: MiSTer.

MiSTer devices can now create portable backups. Local backups are ZIP files and do not require an online account.

Included: Zaparoo configuration and user data, MiSTer settings, input mappings, saves, save states, and profile-specific save directories.

Not included: ROMs, downloaded cores, scraped artwork, or authentication credentials.

Restore safeguards:

  • Core validates the backup and its contents before changing the device.
  • It creates a local safety backup and rolls back if anything fails.
  • After a successful restore, Core restarts while keeping the destination device's identity, paired clients, encryption setting, and Zaparoo Online link.

During gameplay: Backup work yields to games. Most launches throttle backup collection, while storage-sensitive CD cores pause it until the game stops.

Library and metadata

Large-library indexing and recovery

Applies to: All Core platforms. Linux also runs indexing workers with low CPU and I/O priority.

Media indexing has been reworked to handle very large libraries without loading the existing media database into memory:

  • Core processes one system at a time and keeps completed systems available for search and browsing while the update continues.
  • Interrupted indexes keep their completed work and resume on startup.
  • If an index repeatedly stalls at the same system, Core pauses it, keeps the cached library browsable, and adds an Inbox warning with recovery steps.
  • Large browse requests can show a populated folder with an unknown count instead of failing while Core repairs stale cache data in the background.

During gameplay: Most systems use a light indexing and metadata-scraping throttle, optical systems use a heavier one, and 3DO, CD-i, Jaguar CD, and Saturn pause background media work completely.

Database recovery: Core can now recover automatically when it detects corruption in the rebuildable media database. It verifies the replacement, starts a full index, and preserves favorites, history, token mappings, and saved launcher overrides in the separate user database. An Inbox message reminds you to scrape artwork and metadata again.

After three failed recovery attempts in one Core session, Core stops and suggests checking free space or replacing the storage device instead of repeatedly rebuilding.

Apps can also list every system supported by the platform before its emulator or runtime is installed, allowing those systems to be selected for indexing while setup is still in progress.

Smarter artwork caching

Applies to: All Core platforms.

Core now keeps resized artwork caches separate for each system:

  • A selective media update or metadata scrape only clears thumbnails for systems whose images changed.
  • Metadata-only and no-change scrape results leave existing thumbnails alone.
  • Interrupted scrapes invalidate only known affected systems when safe, falling back to a full refresh when the scope is uncertain.
  • Atomic thumbnail replacement and automatic cleanup remove abandoned temporary files and older cache formats.

Image requests can now use 32px and 64px resize tiers alongside existing larger sizes. These small WebP images give clients a lightweight placeholder that is faster to decode on devices such as MiSTer while full-size cover art loads in the background.

Custom gamelist bundles

Applies to: Setups using gamelist.xml metadata and artwork.

Thanks to BossRighteous, Core can now import per-system gamelist.xml bundles stored separately from ROM folders. This keeps a curated metadata and artwork library in a separate location while leaving game storage unchanged.

Set scraper.gamelist_xml.custom_path to the bundle directory, with one subfolder for each system ID.

  • Custom gamelists enrich games already in the media database and use their own directory for artwork and other assets.
  • Regular gamelists beside ROMs still take priority.
  • Missing bundle images can fall back to EmulationStation-style media/ folders in the bundle or ROM roots.

Launchers and platform support

Epilogue Operator cartridge readers

Applies to: MiSTer.

Core now supports Epilogue Operator cartridge readers. Install the Operator package, connect a GB Operator, SN Operator, or 64 Operator, then insert a cartridge to launch the matching core. No manual reader configuration is needed.

Launch indexed games from physical discs

Applies to: Setups with a connected Linux optical drive. MiSTer also gains automatic optical-drive detection.

After updating: Run a media database update so Core can add game IDs to supported disc images.

Core can now identify supported physical game discs and launch the matching disc image from your indexed media library. It does not run the game directly from the disc: the disc acts as a physical trigger for the copy already stored on your device.

A big thank you to Niema Moshiri for creating GameID, and to Porkchop Express at MiSTer Addons for showing me how they use it to generate stable IDs from physical game discs.

Supported systems and disc image formats

Matching supports Nintendo GameCube, Sega CD/Mega CD, Neo Geo CD, PlayStation, PlayStation 2, PSP, and Sega Saturn.

Supported indexed images use .chd, .cue, .gcm, or .iso. Compressed .cso, .gcz, and .rvz images are not supported for disc matching.

Matching behavior:

  • Core launches the indexed file when exactly one match is found.
  • Existing token mappings still take priority.
  • Core does not guess when a disc matches zero or multiple indexed files.
  • Disc identification remains stable while a disc is inserted, avoiding unnecessary repeat scans and tolerating temporary read failures.

MiSTer can automatically detect optical drives exposed as /dev/sr0, /dev/sr1, and similar Linux device paths. Manual reader configuration remains available when detection is unavailable.

RetroArch on Linux and SteamOS

Applies to: Generic Linux and SteamOS.

Core now includes built-in RetroArch launchers. They map supported systems to default RetroArch cores and scan ROMs from ES-DE-style system folders, removing the need to create a custom launcher for each core.

  • Dependency checks: Core verifies that the RetroArch Flatpak and required core are installed. Apps can report an unavailable launcher and explain what is missing instead of attempting a failed automatic launch.
  • Core overrides: Set a launcher's load_path default to choose a different RetroArch core.
  • Controls: Save state, load state, menu, pause, reset, fast forward, rewind, and stop are supported through a separate network-command overlay. Core does not change your primary RetroArch configuration.
  • SteamOS integration: These launchers work with EmuDeck's RetroArch systems while standalone EmuDeck emulators remain supported. RetroArch launches also receive Gaming Mode focus handling.
  • Process tracking: Active-media state clears when the launched emulator exits, while stale events from an older process cannot clear a newer launch.

Native emulators on SteamOS

Applies to: SteamOS. Gaming Mode handling also improves across Bazzite and ChimeraOS.

Status: Experimental.

SteamOS can now launch games through native emulator integrations without requiring EmuDeck or RetroDECK. Core checks whether each Flatpak or executable is installed before selecting it, so missing runtimes can be reported instead of producing a failed launch.

Supported native emulators

Xenia Canary, Ryubing, shadPS4, PCSX2, Cemu, Azahar, Vita3K, RPCS3, DuckStation, PPSSPP, Dolphin, melonDS, ScummVM, Supermodel, xemu, and PrimeHack.

Launcher selection: A new launchers.preference setting chooses an ordered fallback across launcher groups. SteamOS users can prefer Native, EmuDeck, or RetroDECK. Explicit token launchers, saved per-game overrides, and system defaults continue to take priority. When several launchers scan the same system, Core merges duplicate paths while preserving the best available display metadata.

Native RetroArch: Zaparoo-owned low-latency profiles enable network controls, tune video and audio latency, and disable features that conflict with the profile. Your primary RetroArch configuration remains unchanged.

Gaming Mode: Core carries the active session environment into launched apps, finds Flatpak windows more reliably, restores the previous gamescope focus after exit, and stops the active launcher when returning to the menu. Steam tracking also ignores stale process events from older launches so they cannot clear or stop a newer game.

More reliable MiSTer console apps

Applies to: MiSTer.

Core now coordinates MiSTer console ownership between Zaparoo Frontend widgets, visible scripts, video playback, ScummVM, and other ARM apps. This fixes Core-side conflicts where starting media from Zaparoo App while Frontend was active could briefly interrupt the display, then reload Frontend instead of showing the media.

  • Console launchers wait for earlier processes and their child processes to stop before taking over the display.
  • Core restores the console and Frontend after a launcher exits, crashes, or is forcibly stopped.
  • ScummVM receives a graceful exit before Core falls back to terminating it.
  • Newer compatible MiSTer Main builds can explicitly hand console ownership to Core. Stock and older builds continue using the existing fallback behavior.
Frontend update still in development

Core v2.16.0 includes the Core-side part of this fix. A future Frontend update is still needed before conflicts with visible scripts and ARM apps are fully resolved.

Rendering controls:

  • render_scale supports 25%, 33%, 50%, or 100% of the current output dimensions.
  • render_resolution accepts an exact WIDTHxHEIGHT framebuffer size.

These settings do not change the physical display output mode. Existing defaults remain unchanged: video uses one-third dimensions and ScummVM uses 640×480.

MiSTer arcade games by hardware

Applies to: MiSTer.

After updating: Run a media database update to add the new classifications.

MiSTer arcade games can now appear under their specific hardware family as well as the general Arcade library. Unclassified titles and the complete collection remain available under Arcade as before.

Recognized arcade hardware families

Core uses MiSTer's Arcade Database to classify CPS1, CPS2, CPS3, Irem M72 and M92, Jaleco Mega System 1, Namco System 1, IGS PGM, Sega ST-V, Sega System 16 and 18, and Taito F2 games.

You can browse, search, or launch a random game from one arcade platform. Core checks the requested hardware system first and only falls back to the general Arcade pool when that system has no matching result, rather than mixing both pools together.

Neo Geo games are also indexed under both NeoGeo and NeoGeoMVS. MVS entries keep the normal games folder but use an independent MiSTer set name, allowing separate core configuration.

Custom launchables

Applies to: All Core platforms. MiSTer also supports ROM-less FPGA cores and built-in Other-core overrides.

Thanks to work from Grant McNaught, custom launchers can now create virtual systems that appear in browse and search without needing a media file.

  • Selecting a virtual entry runs its configured command, exposing tools, apps, or other launch-only entries through the same interface used for games and media.
  • MiSTer users can add ROM-less FPGA cores that are not included in Core's built-in _Other list.
  • Custom MiSTer entries can override the name, category, or path of a built-in Other core while preserving its existing identity, App visibility, naming, and artwork settings.
  • Launchable identities remain stable across restarts and devices when the configured backend and ID stay the same.
  • Entries can be grouped under Other, Console, Computer, Handheld, or Arcade.
  • Core ignores unsafe paths, malformed entries, duplicate IDs, and incompatible field combinations.

More MiSTer launch coverage

Applies to: MiSTer. System matching also expands across Batocera and LaunchBox.

New media and launcher support includes:

  • PICO-8, OpenBOR, and MegaVGMDrive media: .p8 and .p8.png carts, .pak games, and .vgm music
  • Companion-installed RBF detection under _Custom Cores/Cores, with the default OpenBOR launcher supporting either the 4086 or 7533 core
  • Dedicated Apple IIGS and Apple Lisa media launchers, plus Intellivision homebrew games distributed as .rom files
  • Browsable launchables for installed MiSTer Quake, Sonic Mania, and Tamagotchi cores
  • Paprium and the Load GB/GBC Cartridge shortcut when their standard MGL files are installed

System matching now has distinct classifications across Batocera and LaunchBox for systems including PocketStation, Sega Pico, Commodore CDTV, Commodore Plus/4, Apple IIGS, Super Cassette Vision, Uzebox, and Pinball.

Other changes

Zaparoo Online support

Core v2.16.0 adds support for new Zaparoo Online features that we'll cover in a separate announcement. Optional play history sync is off by default and available without Warp, syncing sessions when games launch, during play, and at completion. Cloud backup snapshots are available to Warp members.

MiSTer

  • Fixed: Games launched manually from the MiSTer menu are tracked again, including recent entries stored on SD or USB. This restores accurate active-game state and play history for those launches.
  • Fixed: Native audio playback now remains smooth while Core is busy or playing scan feedback sounds, avoiding crackles and dropouts on low-power hardware.
  • Fixed: Neo Geo indexing now handles root-level, nested, and symlinked ROM-set folders, with safer romsets.xml fallback handling and clearer diagnostics.
  • Fixed: Core detection now refreshes after .rbf files are added, removed, replaced, or changed through symlinks. Standardized unstable-nightly filenames work as fallbacks for systems such as 3DO, while regular cores keep priority.
  • Fixed: AmigaVision and Amiga 500 virtual entries now route through the installed AmigaVision MGL instead of failing with No RBF found!.
  • New: RetroAchievements launchers now cover Atari 7800, Famicom Disk System, Game Gear, Neo Geo CD, Saturn, and TurboGrafx-16 CD, including correct paths for systems that share another core. All MiSTer RetroAchievements launchers can be preferred with one RetroAchievements group setting.

Windows

Core, API, and terminal UI

  • Improved: Relative paths on external drive tokens can launch games stored on the drive without depending on its mount point. Add ?system= to identify top-level files or formats shared by several systems.
  • New: API clients can query their pairing status, role, and effective profile and settings capabilities.
  • Fixed: Reloading Core no longer duplicates entries from mapping files.
  • Fixed: Reloading Core now preserves credentials already in memory if auth.toml is malformed or unreadable.
  • Fixed: Absolute-folder launch.random commands no longer time out after large libraries are indexed, including organized MiSTer arcade folders, and still respect tag filters.
  • Fixed: Thanks to Gareth Jones, /run/ URLs now handle media paths containing encoded spaces or parentheses.
  • Improved: The terminal UI's media search loads beyond the first 100 results automatically while keeping the current selection in place.
  • Improved: Reload Core is now available under Advanced settings. The -reload command also refreshes settings, mappings, launchers, MiSTer RBF files, and Batocera system configuration.
  • Maintenance: Updated project dependencies and GitHub Actions.

As always, feedback and bug reports are welcome on our Discord or GitHub.

Enjoying this release? Three ways to support Zaparoo's development.