Files
libretro/platforms/_registry.yml
T
Abdessamad Derraz 1b9ea86e1b feat: draw site images from data, host them
scripts/sitediagrams.py writes the explainer, install flow, verification modes, MinUI card, pipeline and data layer diagrams as inline SVG from the registry, the platform files, the install manifests and the pipeline step list. A page asks for one with an image comment, which the decoration pass resolves. The two mermaid diagrams of the architecture page are replaced, so no page loads mermaid from unpkg.

Platform logos and system icons are copied once by fetch_site_images.py with their source and owner recorded, and the build rewrites the remote links to the copies. validate_site refuses an image from another host. Three registry logos named a personal avatar instead of the project's (RomM, ROCKNIX, MiSTer FPGA) and MyMinUI's was a GitHub identicon, now dropped.

One 1200x630 sharing card per section, a 404 page with search and the two entry pages, and a list of screenshots that need a real device.
2026-10-22 11:45:47 +02:00

1003 lines
37 KiB
YAML

# Shared by every platform below: same files, same destinations.
_standalone_copies: &standalone_copies
# Switch emulators (keys)
- file: prod.keys
targets:
linux:
- $HOME/.local/share/yuzu/keys
- $HOME/.local/share/eden/keys
- $HOME/.local/share/citron/keys
- $HOME/.local/share/suyu/keys
- $HOME/.var/app/dev.eden_emu.eden/data/eden/keys
- $HOME/.config/Ryujinx/system
- $HOME/.var/app/io.github.ryubing.Ryujinx/config/Ryujinx/system
windows:
- '%APPDATA%\yuzu\keys'
- '%APPDATA%\eden\keys'
- '%APPDATA%\citron\keys'
- '%APPDATA%\suyu\keys'
- '%APPDATA%\Ryujinx\system'
darwin:
- $HOME/Library/Application Support/yuzu/keys
- $HOME/Library/Application Support/Ryujinx/system
- file: title.keys
targets:
linux:
- $HOME/.local/share/yuzu/keys
- $HOME/.local/share/eden/keys
- $HOME/.local/share/citron/keys
- $HOME/.local/share/suyu/keys
- $HOME/.var/app/dev.eden_emu.eden/data/eden/keys
windows:
- '%APPDATA%\yuzu\keys'
- '%APPDATA%\eden\keys'
- '%APPDATA%\citron\keys'
- '%APPDATA%\suyu\keys'
darwin:
- $HOME/Library/Application Support/yuzu/keys
# 3DS emulators
- file: Citra/sysdata/aes_keys.txt
targets:
linux:
- $HOME/.local/share/azahar-emu/sysdata
- $HOME/.var/app/org.azahar_emu.Azahar/data/azahar-emu/sysdata
windows:
- '%APPDATA%\Azahar\sysdata'
# common_paths.h:36,61 (azahar 987f1840).
darwin:
- $HOME/Library/Application Support/Azahar/sysdata
- file: Citra/sysdata/boot9.bin
targets:
linux:
- $HOME/.local/share/azahar-emu/sysdata
- $HOME/.var/app/org.azahar_emu.Azahar/data/azahar-emu/sysdata
windows:
- '%APPDATA%\Azahar\sysdata'
# common_paths.h:36,61 (azahar 987f1840).
darwin:
- $HOME/Library/Application Support/Azahar/sysdata
# DuckStation (PS1)
- pattern: 'scph*.bin'
targets:
linux:
- $HOME/.local/share/duckstation/bios
- $HOME/.var/app/org.duckstation.DuckStation/config/duckstation/bios
windows:
- '%LOCALAPPDATA%\DuckStation\bios'
- '%USERPROFILE%\Documents\DuckStation\bios'
darwin:
- $HOME/Library/Application Support/DuckStation/bios
# PCSX2 (PS2)
- pattern: 'ps2-*.bin'
emulator: pcsx2
targets:
linux:
- $HOME/.config/PCSX2/bios
- $HOME/.var/app/net.pcsx2.PCSX2/config/PCSX2/bios
windows:
- '%USERPROFILE%\Documents\PCSX2\bios'
darwin:
- $HOME/Library/Application Support/PCSX2/bios
# RPCS3 (PS3) - needs menu install
- note: 'PS3 firmware (PS3UPDAT.PUP) found. Install via RPCS3 > File > Install Firmware.'
detect:
linux:
- $HOME/.config/rpcs3
- $HOME/.var/app/net.rpcs3.RPCS3/config/rpcs3
windows:
- '%APPDATA%\rpcs3'
# Dolphin (GameCube)
- file: GC/USA/IPL.bin
emulator: dolphin
targets:
linux:
- $HOME/.local/share/dolphin-emu/GC/USA
- $HOME/.var/app/org.DolphinEmu.dolphin-emu/data/dolphin-emu/GC/USA
windows:
- '%APPDATA%\Dolphin Emulator\GC\USA'
darwin:
- $HOME/Library/Application Support/Dolphin/GC/USA
- file: GC/EUR/IPL.bin
emulator: dolphin
targets:
linux:
- $HOME/.local/share/dolphin-emu/GC/EUR
- $HOME/.var/app/org.DolphinEmu.dolphin-emu/data/dolphin-emu/GC/EUR
windows:
- '%APPDATA%\Dolphin Emulator\GC\EUR'
darwin:
- $HOME/Library/Application Support/Dolphin/GC/EUR
- file: GC/JAP/IPL.bin
emulator: dolphin
targets:
linux:
- $HOME/.local/share/dolphin-emu/GC/JAP
- $HOME/.var/app/org.DolphinEmu.dolphin-emu/data/dolphin-emu/GC/JAP
windows:
- '%APPDATA%\Dolphin Emulator\GC\JAP'
darwin:
- $HOME/Library/Application Support/Dolphin/GC/JAP
- file: dsp_rom.bin
emulator: dolphin
targets:
linux:
- $HOME/.local/share/dolphin-emu
- $HOME/.var/app/org.DolphinEmu.dolphin-emu/data/dolphin-emu
windows:
- '%APPDATA%\Dolphin Emulator'
darwin:
- $HOME/Library/Application Support/Dolphin
- file: dsp_coef.bin
emulator: dolphin
targets:
linux:
- $HOME/.local/share/dolphin-emu
- $HOME/.var/app/org.DolphinEmu.dolphin-emu/data/dolphin-emu
windows:
- '%APPDATA%\Dolphin Emulator'
darwin:
- $HOME/Library/Application Support/Dolphin
# PPSSPP
- file: PPSSPP/ppge_atlas.zim
targets:
linux:
- $HOME/.config/ppsspp/PSP/SYSTEM
- $HOME/.var/app/org.ppsspp.PPSSPP/config/ppsspp/PSP/SYSTEM
windows:
- '%USERPROFILE%\Documents\PPSSPP\PSP\SYSTEM'
darwin:
- $HOME/Library/Application Support/PPSSPP/PSP/SYSTEM
# Flycast (Dreamcast)
- file: dc/dc_boot.bin
targets:
linux:
- $HOME/.local/share/flycast/data
- $HOME/.var/app/org.flycast.Flycast/data/flycast
windows:
- '%APPDATA%\flycast\data'
# shell/apple/emulator-osx/emulator-osx/osx-main.mm:83-101 (flycast 6bb0fc3e).
darwin:
- $HOME/Library/Application Support/Flycast/data
# <home>/data/ (shell/android-studio/flycast/src/main/jni/src/Android.cpp:
# 143-159, flycast a9bd1c74), writable from Termux up to Android 10.
android:
- $EXTERNAL_STORAGE/Android/data/com.flycast.emulator/files/data
- file: dc/dc_nvmem.bin
targets:
linux:
- $HOME/.local/share/flycast/data
- $HOME/.var/app/org.flycast.Flycast/data/flycast
windows:
- '%APPDATA%\flycast\data'
# shell/apple/emulator-osx/emulator-osx/osx-main.mm:83-101 (flycast 6bb0fc3e).
darwin:
- $HOME/Library/Application Support/Flycast/data
# <home>/data/ (shell/android-studio/flycast/src/main/jni/src/Android.cpp:
# 143-159, flycast a9bd1c74), writable from Termux up to Android 10.
android:
- $EXTERNAL_STORAGE/Android/data/com.flycast.emulator/files/data
platforms:
retroarch:
config: retroarch.yml
status: active
extract_to: system/
logo: https://raw.githubusercontent.com/libretro/RetroArch/master/media/retroarch-vector_invader-only.svg
scraper: libretro
source_url: https://raw.githubusercontent.com/libretro/libretro-database/master/dat/System.dat
source_format: clrmamepro_dat
hash_type: sha1
verification_mode: existence
base_destination: system
case_insensitive_fs: true
schedule: weekly
cores: all_libretro
target_scraper: retroarch_targets
target_source: https://buildbot.libretro.com/nightly/
install:
detect:
- os: linux
method: config_file
config: $HOME/.var/app/org.libretro.RetroArch/config/retroarch/retroarch.cfg
parse_key: system_directory
- os: linux
method: config_file
config: $HOME/snap/retroarch/current/.config/retroarch/retroarch.cfg
parse_key: system_directory
- os: linux
method: config_file
config: $HOME/.config/retroarch/retroarch.cfg
parse_key: system_directory
# configuration.c reads <Application Support>/RetroArch/config, and a value
# left at default is ~/Documents/RetroArch/system (platform_darwin.m).
# Older builds kept the file one level up.
- os: darwin
method: config_file
config: $HOME/Library/Application Support/RetroArch/config/retroarch.cfg
parse_key: system_directory
bios_path: $HOME/Documents/RetroArch/system
- os: darwin
method: config_file
config: $HOME/Library/Application Support/RetroArch/retroarch.cfg
parse_key: system_directory
bios_path: $HOME/Documents/RetroArch/system
# Beside retroarch.exe first, then %APPDATA%; default <exe folder>\system.
# The folders its installers, Steam and ES-DE put it in.
- os: windows
method: config_file
config: 'C:\RetroArch-Win64\retroarch.cfg'
parse_key: system_directory
- os: windows
method: config_file
config: 'C:\RetroArch\retroarch.cfg'
parse_key: system_directory
- os: windows
method: config_file
config: '%ProgramFiles%\RetroArch-Win64\retroarch.cfg'
parse_key: system_directory
- os: windows
method: config_file
config: '%ProgramFiles%\RetroArch\retroarch.cfg'
parse_key: system_directory
- os: windows
method: config_file
config: '%ProgramFiles%\ES-DE\Emulators\RetroArch-Win64\retroarch.cfg'
parse_key: system_directory
- os: windows
method: config_file
config: '%ProgramFiles%\ES-DE\Emulators\RetroArch\retroarch.cfg'
parse_key: system_directory
- os: windows
method: config_file
config: '%ProgramFiles(x86)%\RetroArch-Win64\retroarch.cfg'
parse_key: system_directory
- os: windows
method: config_file
config: '%ProgramFiles(x86)%\RetroArch\retroarch.cfg'
parse_key: system_directory
- os: windows
method: config_file
config: '%ProgramFiles(x86)%\ES-DE\Emulators\RetroArch-Win64\retroarch.cfg'
parse_key: system_directory
- os: windows
method: config_file
config: '%ProgramFiles(x86)%\ES-DE\Emulators\RetroArch\retroarch.cfg'
parse_key: system_directory
- os: windows
method: config_file
config: '%APPDATA%\RetroArch\retroarch.cfg'
parse_key: system_directory
- os: windows
method: config_file
config: '%ProgramFiles(x86)%\Steam\steamapps\common\RetroArch\retroarch.cfg'
parse_key: system_directory
- os: windows
method: config_file
config: '%ProgramFiles%\Steam\steamapps\common\RetroArch\retroarch.cfg'
parse_key: system_directory
# Handheld systems that run RetroArch as their frontend, each found by
# what its own build writes. A system built on another (derives_from)
# matches both and is the one meant.
# muOS: MustardOS/internal f41f4a89: retroarch.sh:8-20, bind.sh:4,116-150,
# retroarch.default.cfg:2806,3151. /mnt/mmc/MUOS is the older layout.
- os: linux
name: muOS
method: file_exists
file: /opt/muos
bios_path: /run/muos/storage/bios
config: [/opt/muos/share/info/config/retroarch.cfg, /opt/muos/share/emulator/retroarch/retroarch.default.cfg]
- os: linux
name: muOS
method: file_exists
file: /mnt/mmc/MUOS
bios_path: /mnt/mmc/MUOS/bios
# JELOS: JustEnoughLinuxOS/distribution 7b2e116c scripts/image:118-120,
# options:17, runemu.sh:37, RK3566/retroarch.cfg:716.
- os: linux
name: JELOS
method: os_release
match: [OS_NAME=JELOS]
bios_path: /storage/roms/bios
config: [/storage/.config/retroarch/retroarch.cfg]
home: /storage
# KOLOS: AnonLinuxOS/KOLOS 7daf5950: OS_NAME=JELOS kept, jelos-ready.service
# ("KOLOS system ready script") installed by scripts/install:100-102.
- os: linux
name: KOLOS
method: file_exists
file: /usr/lib/systemd/system/jelos-ready.service
bios_path: /storage/roms/bios
config: [/storage/.config/retroarch/retroarch.cfg]
home: /storage
derives_from: JELOS
# UnofficialOS: RetroGFX/UnofficialOS 22635796 scripts/image:119-120, options:17,
# packages/unofficialos/sources/scripts/runemu.sh:37.
- os: linux
name: UnofficialOS
method: os_release
match: [OS_NAME=UnofficialOS]
bios_path: /storage/roms/bios
config: [/storage/.config/retroarch/retroarch.cfg]
home: /storage
# ArchR: archr-linux/Arch-R dbd45d45 scripts/image:164-177, options:17,
# factoryreset:9-10, RK3326/retroarch.cfg:718.
- os: linux
name: ArchR
method: os_release
match: [OS_NAME=ArchR]
bios_path: /storage/roms/bios
config: [/storage/.config/retroarch/retroarch.cfg]
home: /storage
# ArkOS: christianhaitian/arkos dedf4278 Update-RGB10.sh:76 (splash title).
# Both configs move to /roms2 with "Switch to SD2 for Roms" (darkos
# daecf488, scripts/Switch to SD2 for Roms.sh:91-92).
- os: linux
name: ArkOS
method: file_exists
file: [/home/ark, /opt/system]
bios_path: /roms/bios
config: [/home/ark/.config/retroarch/retroarch.cfg, /home/ark/.config/retroarch32/retroarch.cfg]
- os: linux
name: ArkOS
method: file_matches
file: /usr/share/plymouth/themes/text.plymouth
pattern: '^title=\s*ArkOS\b'
bios_path: /roms/bios
config: [/home/ark/.config/retroarch/retroarch.cfg, /home/ark/.config/retroarch32/retroarch.cfg]
# dArkOS: christianhaitian/darkos daecf488 finishing_touches.sh:359-361,
# retroarch.cfg.rgb10:3043. The dArkOSRE, dArkOSen and ArkOS4Clone overlays
# keep the title.
- os: linux
name: dArkOS
method: file_matches
file: /usr/share/plymouth/themes/text.plymouth
pattern: '^title=\s*dArkOS'
bios_path: /roms/bios
config: [/home/ark/.config/retroarch/retroarch.cfg, /home/ark/.config/retroarch32/retroarch.cfg]
derives_from: ArkOS
# RetroOZ: RetroOZ 0.60 image: splash title, /opt/.retrooz/version,
# retroarch32/retroarch.cfg:3046. /etc/retrooz_version is the file PortMaster
# reads (PortMaster-GUI ccea6b74, PortMaster/device_info.txt:95).
- os: linux
name: RetroOZ
method: file_matches
file: /usr/share/plymouth/themes/text.plymouth
pattern: '^title=\s*RetroOZ'
bios_path: /roms/bios
config: [/home/odroid/.config/retroarch/retroarch.cfg, /home/odroid/.config/retroarch32/retroarch.cfg]
- os: linux
name: RetroOZ
method: file_exists
file: /opt/.retrooz
bios_path: /roms/bios
config: [/home/odroid/.config/retroarch/retroarch.cfg, /home/odroid/.config/retroarch32/retroarch.cfg]
- os: linux
name: RetroOZ
method: file_exists
file: /etc/retrooz_version
bios_path: /roms/bios
config: [/home/odroid/.config/retroarch/retroarch.cfg, /home/odroid/.config/retroarch32/retroarch.cfg]
# spruceOS: spruceOS 824b1aae spruce/scripts/helperFunctions.sh:157-165,
# RetroArch/platform/retroarch-Brick.cfg.bak:3279.
- os: linux
name: spruceOS
method: file_exists
file: /mnt/SDCARD/spruce
bios_path: /mnt/SDCARD/BIOS
config: ['/mnt/SDCARD/Saves/ra-configs/retroarch-*.cfg']
derives_from: TrimUI
# CrossMix-OS: cizia64/CrossMix-OS 206d612f System/usr/trimui/scripts/
# update_common.sh:20, patch_ra_cfg.sh:5, RetroArch/retroarch.cfg:3202.
- os: linux
name: CrossMix-OS
method: file_exists
file: /mnt/SDCARD/System/usr/trimui/crossmix-version.txt
bios_path: /mnt/SDCARD/BIOS
config: [/mnt/SDCARD/RetroArch/retroarch.cfg]
derives_from: TrimUI
# Onion: OnionUI/Onion 07505ea5 Makefile:75-76,
# .tmp_update/script/patch_ra_cfg.sh:6, retroarch.cfg:3009.
- os: linux
name: Onion
method: file_exists
file: /mnt/SDCARD/.tmp_update/onionVersion/version.txt
bios_path: /mnt/SDCARD/BIOS
config: [/mnt/SDCARD/RetroArch/.retroarch/retroarch.cfg]
# Allium: goweiwen/Allium ee0dda97 crates/common/src/constants.rs:19-34,
# launch_without_savestate_auto_load.sh:2-7. Its RetroArch patch makes
# $ROOT/BIOS the default system folder.
- os: linux
name: Allium
method: file_exists
file: /mnt/SDCARD/.allium
bios_path: /mnt/SDCARD/BIOS
config: [/mnt/SDCARD/RetroArch/.retroarch/retroarch.cfg]
# Koriki: Rparadise-Team/Koriki 8513071c src/systemInfo/main.c:106,
# .tmp_update/runtime.sh:271, RetroArch/.retroarch/retroarch.cfg:3191.
- os: linux
name: Koriki
method: file_exists
file: /mnt/SDCARD/Koriki/version.txt
bios_path: /mnt/SDCARD/BIOS
config: [/mnt/SDCARD/RetroArch/.retroarch/retroarch.cfg]
# MiyooCFW: MiyooCFW buildroot d5912eeb board/miyoo/rootfs/etc/main:4 (HOME),
# package/miyoo/miyoo-ctl/miyoo-ctl.mk:12. DINGUX RetroArch defaults to
# $HOME/.retroarch/system.
- os: linux
name: MiyooCFW
method: file_exists
file: [/etc/main, /usr/bin/miyooctl]
bios_path: /mnt/.retroarch/system
config: [/mnt/.retroarch/retroarch.cfg]
home: /mnt
# plumOS: game-de-it/plumOS-pixel2_v2 dec872c0 rootfs/pixel2/etc/os-release:2,
# sbin/init:29, plumos-retroarch-launch:342. Other plumOS builds append a
# folder of their own at launch (plumOS-MF 0095017c,
# plumos-retroarch-launch:15): found, not installed to.
- os: linux
name: plumOS
method: file_exists
file: /mnt/plumos-user
bios_path: /mnt/plumos-user/bios
- os: linux
name: plumOS
method: os_release
match: [ID=plumos]
# TrimUI: the stock firmware publishes no source naming its BIOS folder.
# /usr/trimui is where PortMaster finds its libraries
# (trimui/launch_hooks.txt:37). Found so that what runs on it is told
# apart, never installed to.
- os: linux
name: TrimUI
method: file_exists
file: /usr/trimui
installs: false
# MinUI: MinUI dbf89435 workspace/all/common/defines.h:14-16, minarch.c:2942.
# One Bios/<tag>/ folder per core, not written by the installer.
- os: linux
name: MinUI
method: file_exists
file: /mnt/SDCARD/.system/res
installs: false
derives_from: TrimUI
- os: linux
name: MinUI
method: file_exists
file: /mnt/sdcard/.system/res
installs: false
derives_from: TrimUI
# Anbernic stock firmware: the stock Linux of Anbernic devices.
- os: linux
name: 'Anbernic stock firmware'
method: file_exists
file: /mnt/vendor/bin/dmenu.bin
bios_path: /mnt/mmc/bios
standalone_copies: *standalone_copies
batocera:
config: batocera.yml
status: active
extract_to: /userdata/bios/
logo: https://raw.githubusercontent.com/batocera-linux/batocera-emulationstation/master/resources/splash_batocera.svg
scraper: batocera
source_url: https://raw.githubusercontent.com/batocera-linux/batocera.linux/master/package/batocera/core/batocera-scripts/scripts/batocera-systems
source_format: python_dict
hash_type: md5
schedule: weekly
target_scraper: batocera_targets
target_source: https://github.com/batocera-linux/batocera.linux
install:
detect:
# batocera.linux 38845725, package/batocera/core/batocera-system/
# batocera-system.mk:21-22 writes batocera.arch and batocera.version.
- os: linux
name: Batocera
method: file_exists
file: /usr/share/batocera/batocera.version
bios_path: /userdata/bios
standalone_copies: *standalone_copies
recalbox:
config: recalbox.yml
status: active
extract_to: /recalbox/share/bios/
logo: https://raw.githubusercontent.com/homarr-labs/dashboard-icons/main/svg/recalbox.svg
scraper: recalbox
source_url: https://gitlab.com/recalbox/recalbox/-/raw/master/board/recalbox/fsoverlay/recalbox/share_init/system/.emulationstation/es_bios.xml
source_format: xml
hash_type: md5
# Bios.cpp:64-68 hashes a .zip with Zip::Md5Composite, never its bytes
zip_digest: composite
schedule: monthly
target_scraper: recalbox_targets
target_source: https://gitlab.com/recalbox/recalbox/-/tree/master/configs
install:
detect:
- os: linux
name: Recalbox
method: file_exists
file: /recalbox/recalbox.version
bios_path: /recalbox/share/bios
- os: linux
name: Recalbox
method: file_exists
file: /usr/bin/recalbox-settings
bios_path: /recalbox/share/bios
standalone_copies: *standalone_copies
retrobat:
config: retrobat.yml
status: active
extract_to: bios/
logo: https://raw.githubusercontent.com/RetroBat-Official/retrobat/main/system/resources/retrobat_logo_notext.png
scraper: retrobat
source_url: https://raw.githubusercontent.com/RetroBat-Official/emulatorlauncher/master/batocera-systems/Resources/batocera-systems.json
source_format: json
hash_type: md5
# Windows: names differing only by case land on one file.
case_insensitive_fs: true
schedule: weekly
target_scraper: null
target_source: null
install:
detect:
# RetroBat.exe writes its own folder there on every start, wherever it
# was installed (retrobat-executable 702da66a,
# RetroBat/RetroBat/Program.cs:57 and 99, RegistryTools.cs:15-50).
- os: windows
method: registry
key: 'HKCU\SOFTWARE\RetroBat'
value: LatestKnownInstallPath
bios_subdir: bios
# installer.iss: DefaultDirName=C:\RetroBat, the first place to look.
- os: windows
method: path_exists
path: 'C:\RetroBat\bios'
- os: windows
method: path_exists
path: '%USERPROFILE%\RetroBat\bios'
standalone_copies: *standalone_copies
emudeck:
config: emudeck.yml
status: active
extract_to: ~/Emulation/bios/
logo: https://raw.githubusercontent.com/dragoonDorise/EmuDeck/main/icons/EmuDeck.png
scraper: emudeck
source_url: https://raw.githubusercontent.com/dragoonDorise/EmuDeck/main/functions/checkBIOS.sh
source_wiki: https://raw.githubusercontent.com/EmuDeck/emudeck.github.io/main/docs/tables/
source_format: bash_script+csv
hash_type: md5
# Windows: names differing only by case land on one file.
case_insensitive_fs: true
schedule: weekly
target_scraper: emudeck_targets
target_source: https://github.com/dragoonDorise/EmuDeck
install:
detect:
- os: linux
method: config_file
config: $HOME/.config/EmuDeck/settings.sh
parse_key: emulationPath
bios_subdir: bios
- os: linux
method: path_exists
path: $HOME/Emulation/bios
# functions/all.sh:3-4,24 and vars.sh:2 (EmuDeck dddb3022): the macOS
# build reads the same settings.sh, emulationPath=~/Emulation by
# default (settings.sh:79).
- os: darwin
method: config_file
config: $HOME/.config/EmuDeck/settings.sh
parse_key: emulationPath
bios_subdir: bios
- os: darwin
method: path_exists
path: $HOME/Emulation/bios
# functions/all.ps1:4-14 (emudeck-we 037460ef): the APPDATA settings,
# else the profile ones, and C:\Emulation when neither names a folder.
- os: windows
method: config_file
config: '%APPDATA%\EmuDeck\settings.ps1'
parse_key: $emulationPath
bios_subdir: bios
- os: windows
method: config_file
config: '%USERPROFILE%\EmuDeck\settings.ps1'
parse_key: $emulationPath
bios_subdir: bios
standalone_copies: *standalone_copies
lakka:
config: lakka.yml
status: active
extract_to: /storage/system/
logo: https://raw.githubusercontent.com/libretro/retroarch-assets/master/src/xmb/flatui/lakka.svg
scraper: libretro
inherits_from: retroarch
cores: all_libretro
# Lakka is a Linux distribution: two names that differ by case are two
# files there, not the one RetroArch's Windows and macOS builds see.
case_insensitive_fs: false
schedule: weekly
# Lakka builds its cores per device image: libretro_cores/package.mk
# excludes cores by PROJECT, DEVICE and OpenGL ES.
target_scraper: lakka_targets
target_source: https://github.com/libretro/Lakka-LibreELEC/blob/master/packages/lakka/libretro_cores/package.mk
install:
detect:
- os: linux
name: Lakka
method: os_release
match: [ID=lakka]
bios_path: /storage/system
retrodeck:
config: retrodeck.yml
status: active
extract_to: ~/retrodeck/
logo: https://raw.githubusercontent.com/RetroDECK/RetroDECK/main/res/icon.svg
scraper: retrodeck
source_url: https://github.com/RetroDECK/components
source_format: github_component_manifests
hash_type: md5
schedule: monthly
contributed_by:
- username: monster-penguin
contribution: platform support
pr: 36
target_scraper: null
target_source: null
install:
detect:
# retrodeck.json since the cfg-to-json migration (global.sh:149-153),
# retrodeck.cfg before it. A home moved to an SD card lives only there.
- os: linux
method: config_file
config: $HOME/.var/app/net.retrodeck.retrodeck/config/retrodeck/retrodeck.json
parse_key: paths.rd_home_path
bios_path: $HOME/retrodeck
- os: linux
method: config_file
config: $HOME/.var/app/net.retrodeck.retrodeck/config/retrodeck/retrodeck.cfg
parse_key: rdhome
bios_path: $HOME/retrodeck
- os: linux
method: path_exists
path: $HOME/.var/app/net.retrodeck.retrodeck
bios_path: $HOME/retrodeck
standalone_copies: *standalone_copies
romm:
config: romm.yml
status: active
extract_to: library/bios/
logo: https://avatars.githubusercontent.com/u/164058018
scraper: romm
source_url: https://raw.githubusercontent.com/rommapp/romm/master/backend/models/fixtures/known_bios_files.json
source_format: json
hash_type: sha1
schedule: monthly
contributed_by:
- username: PixNyb
contribution: platform support
pr: 37
inherits_from: emulatorjs
# RomM lists a firmware folder without descending into it
# (backend/handler/filesystem/base_handler.py:1002, recursive=False), and
# EmulatorJS writes the chosen file, or each member of a zip, under its
# bare name (data/src/emulator.js:713-722). A file below the platform
# folder never reaches a core.
firmware_folder_flat: true
target_scraper: null
target_source: null
install:
detect:
- os: linux
method: path_exists
path: /romm/library/bios
# RomM 5.4 places firmware by filesystem.structure.firmware in this
# file, relative to /romm/library (rommapp/romm 5.4.0,
# backend/config/config_manager.py:58,101-109,264-265,564-568): a
# {platform}/bios library has no library/bios to find.
- os: linux
method: path_exists
path: /romm/config/config.yml
bios_path: /romm/library/bios
cores:
- atari800
- clk
- directxbox
- dolphin
- dolphin_launcher
- ecwolf
- ep128emu
- ep128emu_core
- freej2me
- hatari
- ishiiruka
- lrps2
- minivmac
- nekop2
- np2kai
- o2em
- pcsx2
- play
- pokemini
- primehack
- px68k
- scummvm
- squirreljme
- x1
- xemu
rocknix:
config: rocknix.yml
status: active
extract_to: /storage/roms/bios/
logo: https://avatars.githubusercontent.com/u/163176886
scraper: rocknix
schedule: weekly
target_scraper: rocknix_targets
target_source: https://github.com/ROCKNIX/distribution/blob/next/projects/ROCKNIX/packages/virtual/emulators/package.mk
install:
detect:
- os: linux
name: ROCKNIX
method: os_release
match: [OS_NAME=rocknix, ID=rocknix]
bios_path: /storage/roms/bios
# AmberELEC's checker (batocera-systems) md5s each file under /storage/roms,
# where its list also names neogeo/neogeo.zip and neogeo/aes.zip: the pack
# is extracted there, not into bios/. EmulationStation's BIOS screen runs
# it (ApiSystem.cpp:603-613 at e3846751). The launch-failure check in
# 99-distribution.conf:320 passes --strictfilter, an argument the script
# does not handle, so that path reports nothing. No release since
# 20230203: the scraper reads the commit of the newest prerelease.
# Several device images, no per-device core list: no target file.
amberelec:
config: amberelec.yml
status: active
extract_to: /storage/roms/
logo: https://avatars.githubusercontent.com/u/102820909
scraper: amberelec
source_url: https://github.com/AmberELEC/AmberELEC/blob/dev/packages/amberelec/sources/scripts/batocera-systems
source_format: python_dict
hash_type: md5
schedule: monthly
target_scraper: null
target_source: null
install:
detect:
# AmberELEC 5a3882cb scripts/image:150-152, options:17. CHAos
# (tech4bot/AmberELEC c0a4b0c6) writes the same name. Its list is
# written against /storage/roms (bios/, ports/, neogeo/ side by side).
- os: linux
name: AmberELEC
method: os_release
match: [NAME=AmberELEC]
bios_path: /storage/roms
# PAN4ELEC: Kegg1701/P4ELEC 9c19bfb2, AmberELEC/usr/bin/batocera-info:101.
- os: linux
name: PAN4ELEC
method: file_matches
file: /usr/bin/batocera-info
pattern: 'OPERATING SYSTEM: PAN4ELEC'
bios_path: /storage/roms
derives_from: AmberELEC
# EmuELEC's checker md5s each file under /storage/roms and never reads
# zippedFile: its FM Towns entries hash the whole archive against a
# member's md5 and report UNTESTED whatever the archive holds. Run by
# EmulationStation's BIOS screen and by ee_check_bios after a failed
# launch (99-emuelec.conf:261). naomi and Dinothawr are written twice in
# the dict and the later entry is the one Python keeps.
emuelec:
config: emuelec.yml
status: active
extract_to: /storage/roms/
logo: https://avatars.githubusercontent.com/u/57574835
scraper: emuelec
source_url: https://github.com/EmuELEC/EmuELEC/blob/master/packages/sx05re/emuelec/bin/batocera/batocera-systems
source_format: python_dict
hash_type: md5
schedule: monthly
target_scraper: null
target_source: null
install:
detect:
# EmuELEC d4c7b2f1 scripts/image:172-176, options:4.
- os: linux
name: EmuELEC
method: os_release
match: [NAME=EmuELEC]
bios_path: /storage/roms
# KNULLI's knulli-systems is its own fork of Batocera's list, checked the
# same way (md5, checkInsideZip, emulator/core gates) by its
# EmulationStation (knulli-cfw/batocera-emulationstation 10834d00,
# ApiSystem.cpp:764-774). Arch R (archr-linux/Arch-R dbd45d45) ships the
# same dict as archr-systems: lines 1-870 are identical, only the prefix
# (/storage/roms instead of /userdata) and the es_systems.cfg path differ.
# Many boards, no per-board core list: no target file.
knulli:
config: knulli.yml
status: active
extract_to: /userdata/bios/
logo: https://avatars.githubusercontent.com/u/166268572
scraper: knulli
source_url: https://github.com/knulli-cfw/knulli-linux/blob/knulli-main/package/system/knulli-scripts/scripts/knulli-systems
source_format: python_dict
hash_type: md5
schedule: monthly
target_scraper: null
target_source: null
install:
detect:
# knulli-linux 57afa662: OS_NAME in os-release
# (board/scripts/post-build-script.sh:233-236) and knulli.version
# (package/system/knulli-system/knulli-system.mk:98-102).
- os: linux
name: KNULLI
method: os_release
match: [OS_NAME=knulli]
bios_path: /userdata/bios
derives_from: Batocera
- os: linux
name: KNULLI
method: file_exists
file: /usr/share/knulli/knulli.version
bios_path: /userdata/bios
derives_from: Batocera
retropie:
config: retropie.yml
status: archived
extract_to: ~/RetroPie/BIOS/
logo: https://avatars.githubusercontent.com/u/11378204
scraper: retropie
source: https://github.com/RetroPie/RetroPie-Setup
# No cores here: the registry overrides the config, and RetroPie's own
# scriptmodules are what say which packages it ships.
# RetroPie runs on Linux, where case tells two files apart.
case_insensitive_fs: false
schedule: null
target_scraper: retropie_targets
target_source: https://retropie.org.uk/stats/pkgflags/
install:
detect:
- os: linux
method: path_exists
path: $HOME/RetroPie/BIOS
bizhawk:
config: bizhawk.yml
status: active
extract_to: Firmware/
logo: https://avatars.githubusercontent.com/u/11743303
scraper: bizhawk
source_url: https://raw.githubusercontent.com/TASEmulators/BizHawk/master/src/BizHawk.Emulation.Common/Database/FirmwareDatabase.cs
source_format: csharp_firmware_database
hash_type: sha1
# Windows: names differing only by case land on one file.
case_insensitive_fs: true
schedule: monthly
# EmuHawk finds firmware by SHA1 against FirmwareDatabase.FirmwareRecords
# and its cores are its own builds (CoreNames.cs): no libretro profile
# describes what it reads, so the database alone decides, as MiSTer's
# BiosDB does.
cores: []
target_scraper: null
target_source: null
install:
detect:
# A portable archive reading <EmuHawk folder>/Firmware wherever it was
# extracted (PathExtensions.cs DataDirectoryPath): found by its
# executable in the home folder or one level down, the newest first.
- os: windows
method: path_exists
path: '%USERPROFILE%\BizHawk\Firmware'
- os: linux
method: executable
file: [$HOME/BizHawk*/EmuHawkMono.sh, $HOME/*/BizHawk*/EmuHawkMono.sh]
bios_subdir: Firmware
- os: windows
method: executable
file: ['%USERPROFILE%\BizHawk*\EmuHawk.exe', '%USERPROFILE%\*\BizHawk*\EmuHawk.exe']
bios_subdir: Firmware
misterfpga:
config: misterfpga.yml
status: active
extract_to: /media/fat/games/
logo: https://avatars.githubusercontent.com/u/29345272
scraper: misterfpga
source_url: https://raw.githubusercontent.com/ajgowans/BiosDB_MiSTer/db/bios_db.json.zip
source_format: mister_downloader_db
hash_type: md5
schedule: weekly
cores: []
target_scraper: null
target_source: null
contributed_by:
- username: Takiiiiiiii
contribution: platform support
pr: 50
install:
detect:
# Main_MiSTer mounts the SD card at /media/fat (file_io.cpp:1150-1156)
# and reads game data from GAMES_DIR (file_io.h:168)
- os: linux
method: path_exists
path: /media/fat/MiSTer
bios_path: /media/fat/games
minui:
config: minui.yml
status: active
# The card root: minarch hands each core SDCARD_PATH/Bios/<TAG>
# (workspace/all/minarch/minarch.c:2943).
extract_to: <SD card>/
logo: https://avatars.githubusercontent.com/u/225589
scraper: minui
# minarch hands each core a folder and names no file (workspace/all/minarch/minarch.c:2943):
# there is no BIOS list of its own to export corrected.
native_list: none
source_url: https://github.com/shauninman/MinUI
source_format: pak_launch_scripts
hash_type: sha1
# The primary card is formatted FAT32 (skeleton/BASE/README.txt:15).
case_insensitive_fs: true
schedule: null
target_scraper: null
target_source: null
install:
detect:
# The release zip holds the build's SYSTEM tree as .system/ at the card
# root with version.txt, whose first line is the release name
# (makefile:22-24, 152-157). The installer runs on the computer the
# card is mounted on and reads it from --dest.
- os: any
method: card_marker
file: .system/version.txt
first_line_prefix: MinUI-
nextui:
config: nextui.yml
status: active
# minarch hands each core SDCARD_PATH/Bios/<TAG>
# (workspace/all/minarch/ma_core.c:76).
extract_to: <SD card>/
logo: https://avatars.githubusercontent.com/u/202386615
scraper: nextui
# minarch hands each core a folder and names no file (workspace/all/minarch/ma_core.c:76):
# there is no BIOS list of its own to export corrected.
native_list: none
source_url: https://github.com/LoveRetro/NextUI
source_format: pak_launch_scripts
hash_type: sha1
# The primary card is formatted FAT32 (skeleton/BASE/README.txt:17).
case_insensitive_fs: true
schedule: null
target_scraper: null
target_source: null
install:
detect:
# makefile:33-35 and 249: version.txt in .system/, first line the
# release name.
- os: any
method: card_marker
file: .system/version.txt
first_line_prefix: NextUI-
myminui:
config: myminui.yml
status: active
# minarch hands each core SDCARD_PATH/Bios/<TAG>
# (workspace/all/minarch/minarch.c:3532).
extract_to: <SD card>/
scraper: myminui
# minarch hands each core a folder and names no file (workspace/all/minarch/minarch.c:3532):
# there is no BIOS list of its own to export corrected.
native_list: none
source_url: https://github.com/Turro75/MyMinUI
source_format: pak_launch_scripts
hash_type: sha1
# The card is formatted FAT32 (MANUAL.md:13).
case_insensitive_fs: true
schedule: null
target_scraper: null
target_source: null
install:
detect:
# makefile:16-19 and 124: version.txt in .system/, first line the
# release name.
- os: any
method: card_marker
file: .system/version.txt
first_line_prefix: MyMinUI-