Skip to content
drpetersonfernandes edited this page Aug 6, 2026 · 1 revision

12 — Data Formats

Every persistence format used by Simple Launcher and where it lives. Related: 05 — Configuration · 07 — Core Services

Format map

Format Files Written/read by
XML (LINQ-to-XML) settings.xml, system.xml, emulator *.ini-adjacent XML (Ares settings.bml, Cemu settings.xml) SettingsManagerService, SystemConfigurationWriterService, EmulatorXmlHelpers, inject services
MessagePack favorites.dat, playhistory.dat, history.dat, mame.dat, RetroAchievements.dat, all_ra_games.dat FavoritesManager, PlayHistoryManager, RomHistoryLoader, MameManagerService, RetroAchievementsManager
SQLite Amazon Games DB (read-only), Stella stella.sqlite3 (settings upserts) ScanAmazonGames (Microsoft.Data.Sqlite), StellaConfigurationService (SourceGear.sqlite3)
JSON appsettings.json (config), LauncherInstalled.dat/manifests (Epic), GOG .info, Humble config.json, itch .itch.toml-adjacent, Mesen settings.json, BizHawk config.ini (JSON), API payloads app config, scanners, MesenConfigurationService, RetroAchievementsEmulatorConfiguratorService, JsonSerializer
YAML RPCS3 config.yml RPCS3ConfigurationService (YamlDotNet round-trip)
TOML Xenia xenia[-canary].config.toml, Yumir Ymir.toml XeniaConfigurationService, YumirConfigurationService (Tomlyn)
Plain text parameters.md, WhatsNew.md, .extraction_in_progress marker, version.txt, batch files help/update/extraction/updater
INI most emulator configs (retroarch.cfg, PCSX2.ini, Dolphin.ini, settings.ini…) InjectEmulatorConfig\* + RA configurator INI helpers

MessagePack data files

File Content Class
favorites.dat favorite games (system + filename) FavoritesManager (Services\Favorites\, app)
playhistory.dat play sessions: date, play count, total seconds PlayHistoryManager (Services\PlayHistory\, app)
history.dat ROM history database (HistoryData/EntryData/ItemData/SoftwareData) RomHistoryLoader (Core)
mame.dat MAME machines + software-list descriptions MameManagerService (Core)
RetroAchievements.dat RA game info, achievements, progress RetroAchievementsManager (Core)
all_ra_games.dat full RA game database (built by Tools\RetroAchievements.DataFetcher) RA fetcher tool

history.xml → history.dat migration (RomHistoryLoader): the loader prefers history.dat (faster, smaller); if absent it falls back to history.xml (legacy). Tools\XmlToBinaryConverter performs the conversion.

BoolConverter (Core Models\BoolConverter.cs) handles APIs that return booleans as numbers (0/1).

settings.xml details

  • LINQ-to-XML, root <Application>; atomic save via temp file + File.Move with 3 retries + exponential backoff; portable → LocalAppData fallback (SettingsManagerService.SaveAsync, :565-685).
  • Emulator settings blocks (EmulatorSettings\ ×21) are serialized as child elements; RA credentials are DPAPI-encrypted (Base64) before writing (:717-719).

system.xml details

  • SystemConfigs root; entries alphabetically sorted (ordinal-ignore-case); UTF-8, 2-space indent; XDeclaration ensured; retry ×3 with 500 ms backoff; temp file + File.Move; empty or corrupt root replaced with a fresh <SystemConfigs/>. See 05 — Configuration.

Emulator config files (injected)

Emulator File Parser
Ares settings.bml XML
Azahar / DuckStation / Flycast / RetroArch / Redream / Dolphin / Blastem / Supermodel / Sega Model 2 / Raine / Mednafen / Daphne *.ini/*.cfg custom INI readers/writers (sections, insert/append)
PCSX2 PCSX2.ini INI with [Achievements] etc.
RPCS3 config.yml YamlDotNet (round-trip preserves structure)
Xenia / Yumir *.toml Tomlyn
Mesen settings.json System.Text.Json.Nodes
Stella stella.sqlite3 SQLite upserts (sample DB copied when missing)
BizHawk (RA) config.ini (JSON) JsonNode

Missing files are restored from samples\{Emulator}\{file} (copied from the app's samples\ folder).

Related docs

Clone this wiki locally