feat: scrape the rom folders of each setup

This commit is contained in:
Abdessamad Derraz committed 2026-11-03 17:37:33 +01:00
1 parent 249b189ec9
commit 1aa36258b2
102 files changed
+49969

No files matched your search

+45
View File
@@ -0,0 +1,45 @@
name: Allium
platform: retroarch
format: allium
params:
source: os
consoles: static/.allium/config/consoles.toml
cores: static/.allium/config/cores.toml
sources:
os:
repo: https://github.com/goweiwen/Allium
commit: ee0dda979bc02649fdda48b277eaa60938273465
roms_root:
path: /mnt/SDCARD/Roms
from_bios: ../Roms
source_ref: os crates/common/src/constants.rs:19-34
case_sensitive: false
case_ref: os crates/allium-launcher/src/consoles.rs:120-185
hidden:
- pattern: .*
source_ref: os crates/allium-launcher/src/entry/mod.rs:31-62
- pattern: _*
source_ref: os crates/allium-launcher/src/entry/mod.rs:31-62
- name: gamelist.xml
source_ref: os crates/allium-launcher/src/entry/mod.rs:31-62
- name: miyoogamelist.xml
source_ref: os crates/allium-launcher/src/entry/mod.rs:31-62
- name: neogeo.zip
source_ref: os crates/allium-launcher/src/entry/mod.rs:31-62
- pattern: '*.db'
source_ref: os crates/allium-launcher/src/entry/mod.rs:31-62
- pattern: '*.sbi'
source_ref: os crates/allium-launcher/src/entry/mod.rs:31-62
- pattern: '*.nfo'
source_ref: os crates/allium-launcher/src/entry/mod.rs:31-62
- pattern: '*.msu'
source_ref: os crates/allium-launcher/src/entry/mod.rs:31-62
- pattern: '*.pcm'
source_ref: os crates/allium-launcher/src/entry/mod.rs:31-62
media:
- name: Imgs
source_ref: os crates/allium-launcher/src/entry/mod.rs:31-62
- name: Guides
source_ref: os crates/allium-launcher/src/entry/mod.rs:31-62
notes:
- A file maps by its exact name, then by any dotted extension a console lists, then by the folder patterns walking up the path (os crates/allium-launcher/src/consoles.rs:138-185). A console with no folder pattern is matched by extension only and has no row.
@@ -0,0 +1,49 @@
name: AmberELEC
platform: amberelec
format: es-xml
params:
file: packages/ui/emulationstation/config/es_systems.cfg
path_prefixes:
- /storage/roms/
default: flagged
sources:
os:
repo: https://github.com/AmberELEC/AmberELEC
commit: 5a3882cbb755dcd614aea8952ff20f5a4151505b
es:
repo: https://github.com/AmberELEC/emulationstation
commit: e3846751ce50fdced1f2bbd7a5bb51f4da2e7007
note: EmulationStation pinned by packages/ui/emulationstation/package.mk PKG_VERSION
roms_root:
path: /storage/roms
from_bios: ..
source_ref: os packages/games/tools/retroarch/sources/retroarch.cfg:550,611
case_sensitive: null
skip:
- name: bios
reason: RetroArch's system directory
source_ref: os packages/games/tools/retroarch/sources/retroarch.cfg:611
hidden:
- pattern: .*
source_ref: es es-app/src/SystemData.cpp:264
media:
- name: artwork
source_ref: es es-app/src/SystemData.cpp:294
- name: media
source_ref: es es-app/src/SystemData.cpp:315
- name: medias
source_ref: es es-app/src/SystemData.cpp:315
- name: images
source_ref: es es-app/src/SystemData.cpp:315
- name: manuals
source_ref: es es-app/src/SystemData.cpp:315
- name: videos
source_ref: es es-app/src/SystemData.cpp:315
- name: assets
source_ref: es es-app/src/SystemData.cpp:315
- pattern: downloaded_*
source_ref: es es-app/src/SystemData.cpp:315
notes:
- 'The BIOS folder is /storage/roms/bios, inside the roms root: the scan skips it.'
- A file is a game only when its lowercased extension is in the folder's list (es es-app/src/SystemData.cpp:275).
- 'Default core: the core marked default, else the first emulator''s first core (es es-app/src/SystemData.cpp:1829-1860).'
+64
View File
@@ -0,0 +1,64 @@
name: ArchR
platform: retroarch
format: elec-conf
params:
package: projects/ArchR/packages/virtual/emulators/package.mk
conf_dir: config/emulators
path_prefixes:
- /storage/roms/
sources:
os:
repo: https://github.com/archr-linux/Arch-R
commit: dbd45d454f0fea1e61c0b35e429f6be18f3e997e
es:
repo: https://github.com/archr-linux/emulationstation-next
commit: f25c4475a348f534de8ff724e9e42808b7a80a12
note: EmulationStation pinned by the ui/emulationstation package.mk PKG_VERSION
roms_root:
path: /storage/roms
from_bios: ..
source_ref: os projects/ArchR/packages/virtual/emulators/package.mk:130
case_sensitive: null
skip:
- name: bezels
reason: created by the emulators package, holds no game
source_ref: os projects/ArchR/packages/virtual/emulators/package.mk:127
- name: bios
reason: created by the emulators package, holds no game
source_ref: os projects/ArchR/packages/virtual/emulators/package.mk:130
- name: music
reason: created by the emulators package, holds no game
source_ref: os projects/ArchR/packages/virtual/emulators/package.mk:133
- name: savestates
reason: created by the emulators package, holds no game
source_ref: os projects/ArchR/packages/virtual/emulators/package.mk:136
- name: themes
reason: created by the emulators package, holds no game
source_ref: os projects/ArchR/packages/virtual/emulators/package.mk:139
hidden:
- pattern: .*
source_ref: es es-app/src/SystemData.cpp:272
- pattern: ._*
source_ref: es es-app/src/SystemData.cpp:266-268
media:
- name: artwork
source_ref: es es-app/src/SystemData.cpp:302
- name: media
source_ref: es es-app/src/SystemData.cpp:323
- name: medias
source_ref: es es-app/src/SystemData.cpp:323
- name: images
source_ref: es es-app/src/SystemData.cpp:323
- name: manuals
source_ref: es es-app/src/SystemData.cpp:323
- name: videos
source_ref: es es-app/src/SystemData.cpp:323
- name: assets
source_ref: es es-app/src/SystemData.cpp:323
- pattern: downloaded_*
source_ref: es es-app/src/SystemData.cpp:323
notes:
- 'The BIOS folder is /storage/roms/bios, inside the roms root: the scan skips it.'
- A file is a game only when its lowercased extension is in the folder's list (es es-app/src/SystemData.cpp:283).
- Each folder comes from SYSTEM_PATH of config/emulators/<system>.conf, written by add_es_system for every
system the emulators package adds.
+47
View File
@@ -0,0 +1,47 @@
name: ArkOS
platform: retroarch
format: es-xml
params:
file: rootfs/ArkOS/etc/emulationstation/es_systems.cfg
path_prefixes:
- /roms/
default: first
sources:
os:
repo: https://github.com/lcdyk0517/arkos4clone
commit: c90db18361b53fbb6c66aca892819827e4ae0180
note: third-party copy of an ArkOS image's /etc, the only full es_systems.cfg published
arkos:
repo: https://github.com/christianhaitian/arkos
commit: dedf42784e4e3646413c029f0efdedc093cb4b86
es:
repo: https://github.com/christianhaitian/EmulationStation-fcamod
commit: c4809d8ef33159385a2d516b4b3aec832f4ce2e8
roms_root:
path: /roms
from_bios: ..
source_ref: os rootfs/ArkOS/etc/emulationstation/es_systems.cfg:6; arkos Update-RG351MP.sh:339,2215
case_sensitive: null
skip:
- name: bios
reason: BIOS folder the updates write to
source_ref: arkos Update-RG351MP.sh:339,2215
hidden:
- pattern: .*
source_ref: es es-app/src/SystemData.cpp:145-146,180
media:
- name: media
source_ref: es es-app/src/SystemData.cpp:180,184
- name: images
source_ref: es es-app/src/SystemData.cpp:180,184
- name: videos
source_ref: es es-app/src/SystemData.cpp:180,184
- name: ppsspp
source_ref: es es-app/src/SystemData.cpp:180,184
- pattern: downloaded_*
source_ref: es es-app/src/SystemData.cpp:180,184
notes:
- 'ArkOS publishes no image build source: the system list is the arkos4clone copy, which may carry overlay
edits.'
- A file is a game only when its lowercased extension is in the folder's list (es es-app/src/SystemData.cpp:151).
- 'Default core: the user''s saved choice, else the first emulator and its first core (es es-app/src/SystemData.h:101-131).'
@@ -0,0 +1,47 @@
name: Batocera
platform: batocera
format: batocera-es
params:
es_systems: package/batocera/emulationstation/batocera-es-system/es_systems.yml
configgen_dir: package/batocera/core/batocera-configgen/configs
sources:
os:
repo: https://github.com/batocera-linux/batocera.linux
commit: 155c2d8d304cbb53db52e9479dcf683392821d5c
tag: batocera-43.1
es:
repo: https://github.com/batocera-linux/batocera-emulationstation
commit: 2c29a330e487210a7d51ad2650bb7b280ea44c86
note: pinned by package/batocera/emulationstation/batocera-emulationstation/batocera-emulationstation.mk
roms_root:
path: /userdata/roms
from_bios: ../roms
source_ref: os python-src/batocera-es-system/batocera_es_system/es_systems.py:27,76-80
case_sensitive: null
hidden:
- pattern: .*
source_ref: es es-core/src/utils/FileSystemUtil.cpp:418; es es-app/src/SystemData.cpp:325
media:
- name: artwork
source_ref: es es-app/src/SystemData.cpp:355
- name: media
source_ref: es es-app/src/SystemData.cpp:375
- name: medias
source_ref: es es-app/src/SystemData.cpp:375
- name: images
source_ref: es es-app/src/SystemData.cpp:375
- name: manuals
source_ref: es es-app/src/SystemData.cpp:375
- name: videos
source_ref: es es-app/src/SystemData.cpp:375
- name: assets
source_ref: es es-app/src/SystemData.cpp:375
- name: bezels
source_ref: es es-app/src/SystemData.cpp:375
- name: screenshots
source_ref: es es-app/src/SystemData.cpp:375
- pattern: downloaded_*
source_ref: es es-app/src/SystemData.cpp:378
notes:
- A file is a game only when its lowercased extension is in the folder's list (es es-app/src/SystemData.cpp:330-336).
- The default core is configgen's, the board file before configgen-defaults.yml (os python-src/batocera-es-system/batocera_es_system/shared.py:193-198).
+23
View File
@@ -0,0 +1,23 @@
name: BizHawk
platform: bizhawk
format: bizhawk
params:
source: os
paths: src/BizHawk.Client.Common/config/PathEntryCollection.cs
rom_loader: src/BizHawk.Client.Common/RomLoader.cs
config: src/BizHawk.Client.Common/config/Config.cs
sources:
os:
repo: https://github.com/TASEmulators/BizHawk
commit: bdddf4a58aa1a022afb11dc73294a81a5aa7bbd5
tag: 2.11.1
roms_root:
path: <BizHawk>
from_bios: ..
source_ref: os src/BizHawk.Client.Common/config/PathEntryCollection.cs:96-97,179
case_sensitive: null
notes:
- Each system has a base folder under the BizHawk folder, and its ROM path is "." inside it (os src/BizHawk.Client.Common/config/PathEntryCollection.cs:77-85,96-97). Firmware sits in Firmware beside those bases, the folder the installer fills.
- BizHawk never scans a folder. The user opens one file, the open dialog filters by the RomFileExtensions lists, and the system follows from the extension and the game database (os src/BizHawk.Client.Common/RomLoader.cs:1143-1183).
- A row's extensions are the RomFileExtensions list named like its system. Systems whose list carries another name (32X, Game Gear, SG-1000) or none (Saturn, PC-FX, 3DO, Amstrad CPC, Channel F) have none here.
- The cores are BizHawk's own. The default named in a note is CoreNames[0] of CorePickerUIData (os src/BizHawk.Client.Common/config/Config.cs:20-50).
+49
View File
@@ -0,0 +1,49 @@
name: CHAos
platform: amberelec
format: es-xml
params:
file: packages/ui/emulationstation/config/es_systems.cfg
path_prefixes:
- /storage/roms/
default: flagged
sources:
os:
repo: https://github.com/tech4bot/AmberELEC
commit: c0a4b0c6c4860ab1b48d3282a57e75d00748135d
es:
repo: https://github.com/AmberELEC/emulationstation
commit: c34e9cf3f6a22afbb47266fe89db4379513d1f03
note: EmulationStation pinned by packages/ui/emulationstation/package.mk PKG_VERSION
roms_root:
path: /storage/roms
from_bios: ..
source_ref: os packages/games/tools/retroarch/sources/retroarch.cfg:550,611
case_sensitive: null
skip:
- name: bios
reason: RetroArch's system directory
source_ref: os packages/games/tools/retroarch/sources/retroarch.cfg:611
hidden:
- pattern: .*
source_ref: es es-app/src/SystemData.cpp:264
media:
- name: artwork
source_ref: es es-app/src/SystemData.cpp:294
- name: media
source_ref: es es-app/src/SystemData.cpp:315
- name: medias
source_ref: es es-app/src/SystemData.cpp:315
- name: images
source_ref: es es-app/src/SystemData.cpp:315
- name: manuals
source_ref: es es-app/src/SystemData.cpp:315
- name: videos
source_ref: es es-app/src/SystemData.cpp:315
- name: assets
source_ref: es es-app/src/SystemData.cpp:315
- pattern: downloaded_*
source_ref: es es-app/src/SystemData.cpp:315
notes:
- 'The BIOS folder is /storage/roms/bios, inside the roms root: the scan skips it.'
- A file is a game only when its lowercased extension is in the folder's list (es es-app/src/SystemData.cpp:275).
- 'Default core: the core marked default, else the first emulator''s first core (es es-app/src/SystemData.cpp:1829-1860).'
@@ -0,0 +1,19 @@
name: CrossMix-OS
platform: retroarch
format: crossmix
params:
source: os
sources:
os:
repo: https://github.com/cizia64/CrossMix-OS
commit: 206d612fdef83972ed54a17de955125d0c0b3528
roms_root:
path: /mnt/SDCARD/Roms
from_bios: ../Roms
source_ref: os RetroArch/retroarch.cfg:3202
case_sensitive: false
case_ref: os System/usr/trimui/scripts/load_launcher.sh:23-41
notes:
- Each Emus/<SYS>/config.json points rompath at ../../Roms/<SYS>. Box art lives in /mnt/SDCARD/Imgs/<SYS>, outside Roms.
- The stock TrimUI MainUI that lists the games is closed source. It reads extlist and hidebios from config.json.
- The default core is the first launchlist entry with a launch script, unless a per-game or per-system preset exists (os System/usr/trimui/scripts/load_launcher.sh:23-41).
+47
View File
@@ -0,0 +1,47 @@
name: dArkOS
platform: retroarch
format: es-xml
params:
file: Emulationstation/es_systems.cfg.rk3566
path_prefixes:
- /roms/
default: first
boards:
rk3326: Emulationstation/es_systems.cfg.rk3326
sources:
os:
repo: https://github.com/christianhaitian/darkos
commit: daecf488075f0194c164578b90617fa7002ce8bd
es:
repo: https://github.com/christianhaitian/EmulationStation-fcamod
commit: c4809d8ef33159385a2d516b4b3aec832f4ce2e8
note: the branch build_emulationstation.sh builds
roms_root:
path: /roms
from_bios: ..
source_ref: os retroarch/configs/retroarch.cfg.rgb10:3043; os build_emulationstation.sh:73
case_sensitive: null
skip:
- name: bios
reason: RetroArch's system directory
source_ref: os retroarch/configs/retroarch.cfg.rgb10:3043
hidden:
- pattern: .*
source_ref: es es-app/src/SystemData.cpp:145-146,180
media:
- name: media
source_ref: es es-app/src/SystemData.cpp:180,184
- name: images
source_ref: es es-app/src/SystemData.cpp:180,184
- name: videos
source_ref: es es-app/src/SystemData.cpp:180,184
- name: ppsspp
source_ref: es es-app/src/SystemData.cpp:180,184
- pattern: downloaded_*
source_ref: es es-app/src/SystemData.cpp:180,184
notes:
- 'The BIOS folder is /roms/bios, inside the roms root: the scan skips it.'
- Folders are read from the RK3566 list, build_emulationstation.sh copies es_systems.cfg.<chipset> (os
build_emulationstation.sh:73-75). The RK3326 defaults that differ are board_defaults.
- A file is a game only when its lowercased extension is in the folder's list (es es-app/src/SystemData.cpp:151).
- 'Default core: the user''s saved choice, else the first emulator and its first core (es es-app/src/SystemData.h:101-131).'
@@ -0,0 +1,38 @@
name: EmuDeck (Windows)
platform: emudeck
format: esde
params:
systems:
source: esde
path: resources/systems/windows/es_systems.xml
custom:
- source: os
path: configs/emulationstation/custom_systems/es_systems.xml
alternatives:
source: os
path: functions/ToolScripts/emuDeckESDE.ps1
function: ESDE_setDefaultEmulators
sources:
os:
repo: https://github.com/EmuDeck/emudeck-we
commit: 037460efc88c1ab70256ab0833f8f10e7f2904b2
esde:
repo: https://gitlab.com/es-de/emulationstation-de
commit: 50e4b600ae533d772bae3ff880d11a09b05dbe84
tag: v3.5.0
note: EmuDeck installs the newest ES-DE release at run time; the list is read at this tag
roms_root:
path: <drive>:\Emulation\roms
from_bios: ../roms
source_ref: os functions/JSONtoPS1.ps1:173,175,195,197
case_sensitive: false
hidden:
- pattern: .*
source_ref: esde es-app/src/SystemData.cpp:657
notes:
- Windows folders are case-insensitive.
- 'ES-DE matches the extension as written (esde es-app/src/SystemData.cpp:666): its lists carry both cases,
kept here lowercased.'
- A system folder holding noload.txt is not loaded (esde es-app/src/SystemData.cpp:629-631).
- 'Default emulator: the alternativeEmulator label written for the system, else the first <command>.'
- Some alternative emulators are set only when the standalone is installed (os functions/ToolScripts/emuDeckESDE.ps1:306-309).
+38
View File
@@ -0,0 +1,38 @@
name: EmuDeck (Linux / SteamOS)
platform: emudeck
format: esde
params:
systems:
source: esde
path: resources/systems/linux/es_systems.xml
custom:
- source: os
path: configs/emulationstation/custom_systems/es_systems.xml
alternatives:
source: os
path: functions/ToolScripts/emuDeckESDE.sh
function: ESDE_setDefaultEmulators
sources:
os:
repo: https://github.com/dragoonDorise/EmuDeck
commit: dddb30229adbbd54d5ff7283cfd70e11c4322c26
esde:
repo: https://gitlab.com/es-de/emulationstation-de
commit: 50e4b600ae533d772bae3ff880d11a09b05dbe84
tag: v3.5.0
note: EmuDeck installs the newest ES-DE release at run time; the list is read at this tag
roms_root:
path: $HOME/Emulation/roms
from_bios: ../roms
source_ref: os functions/helperFunctions.sh:345,347
case_sensitive: true
hidden:
- pattern: .*
source_ref: esde es-app/src/SystemData.cpp:657
notes:
- 'The emulation path is a setting: roms and bios stay siblings under it.'
- 'ES-DE matches the extension as written (esde es-app/src/SystemData.cpp:666): its lists carry both cases,
kept here lowercased.'
- A system folder holding noload.txt is not loaded (esde es-app/src/SystemData.cpp:629-631).
- 'Default emulator: the alternativeEmulator label written for the system, else the first <command>.'
- Some alternative emulators are set only when the standalone is installed (os functions/ToolScripts/emuDeckESDE.sh:316-318).
+50
View File
@@ -0,0 +1,50 @@
name: EmuELEC
platform: emuelec
format: es-json
params:
file: packages/sx05re/emuelec-emulationstation/config/es_systems.json
path_prefixes:
- /storage/roms/
default: flagged
sources:
os:
repo: https://github.com/EmuELEC/EmuELEC
commit: d4c7b2f143029e4e4d922a077d89eed42c9e37b9
es:
repo: https://github.com/EmuELEC/emuelec-emulationstation
commit: 3de652c69481de5fad2178ceebb9470950b3e683
note: pinned by packages/sx05re/emuelec-emulationstation/package.mk PKG_VERSION
roms_root:
path: /storage/roms
from_bios: ..
source_ref: os packages/sx05re/libretro_base/retroarch/package.mk:112,117
case_sensitive: null
skip:
- name: bios
reason: RetroArch's system directory
source_ref: os packages/sx05re/libretro_base/retroarch/package.mk:117
hidden:
- pattern: .*
source_ref: es es-app/src/SystemData.cpp:264
media:
- name: artwork
source_ref: es es-app/src/SystemData.cpp:294
- name: media
source_ref: es es-app/src/SystemData.cpp:315
- name: medias
source_ref: es es-app/src/SystemData.cpp:315
- name: images
source_ref: es es-app/src/SystemData.cpp:315
- name: manuals
source_ref: es es-app/src/SystemData.cpp:315
- name: videos
source_ref: es es-app/src/SystemData.cpp:315
- name: assets
source_ref: es es-app/src/SystemData.cpp:315
- pattern: downloaded_*
source_ref: es es-app/src/SystemData.cpp:315
notes:
- 'The BIOS folder is /storage/roms/bios, inside the roms root: the scan skips it.'
- A file is a game only when its lowercased extension is in the folder's list (es es-app/src/SystemData.cpp:275).
- Systems whose command or platform is 'ignore' (screenshots, music) are no game folder.
- 'Default core: the core marked default, else the first emulator''s first core (es es-app/src/SystemData.cpp:1828-1860).'
+54
View File
@@ -0,0 +1,54 @@
name: JELOS
platform: retroarch
format: elec-conf
params:
package: packages/virtual/emulators/package.mk
conf_dir: config/emulators
path_prefixes:
- /storage/roms/
sources:
os:
repo: https://github.com/JustEnoughLinuxOS/distribution
commit: 7b2e116ce6996d56e642a0e2a07288c926db926b
es:
repo: https://github.com/JustEnoughLinuxOS/emulationstation
commit: 2532471157e7df15ca70e0881e2411b81a1d2daa
note: EmulationStation pinned by the ui/emulationstation package.mk PKG_VERSION
roms_root:
path: /storage/roms
from_bios: ..
source_ref: os packages/virtual/emulators/package.mk:112
case_sensitive: null
skip:
- name: bios
reason: created by the emulators package, holds no game
source_ref: os packages/virtual/emulators/package.mk:112
- name: music
reason: created by the emulators package, holds no game
source_ref: os packages/virtual/emulators/package.mk:115
- name: savestates
reason: created by the emulators package, holds no game
source_ref: os packages/virtual/emulators/package.mk:118
hidden:
- pattern: .*
source_ref: es es-app/src/SystemData.cpp:225
media:
- name: media
source_ref: es es-app/src/SystemData.cpp:272
- name: medias
source_ref: es es-app/src/SystemData.cpp:272
- name: images
source_ref: es es-app/src/SystemData.cpp:272
- name: manuals
source_ref: es es-app/src/SystemData.cpp:272
- name: videos
source_ref: es es-app/src/SystemData.cpp:272
- name: assets
source_ref: es es-app/src/SystemData.cpp:272
- pattern: downloaded_*
source_ref: es es-app/src/SystemData.cpp:272
notes:
- 'The BIOS folder is /storage/roms/bios, inside the roms root: the scan skips it.'
- A file is a game only when its lowercased extension is in the folder's list (es es-app/src/SystemData.cpp:236).
- Each folder comes from SYSTEM_PATH of config/emulators/<system>.conf, written by add_es_system for every
system the emulators package adds.
+45
View File
@@ -0,0 +1,45 @@
name: KNULLI
platform: knulli
format: batocera-es
params:
es_systems: package/emulationstation/knulli-es-system/es_systems.yml
configgen_dir: package/system/knulli-configgen/configs
sources:
os:
repo: https://github.com/knulli-cfw/knulli-linux
commit: c1c7de479e56691c6665723046d9f25500e5ee74
tag: '20260511'
es:
repo: https://github.com/knulli-cfw/batocera-emulationstation
commit: 4041b56a714265de81de8165b34fbd10f313a891
note: pinned by package/emulationstation/knulli-emulationstation/knulli-emulationstation.mk
roms_root:
path: /userdata/roms
from_bios: ../roms
source_ref: os package/emulationstation/knulli-es-system/knulli-es-system.py:31,163-173
case_sensitive: null
hidden:
- pattern: .*
source_ref: es es-core/src/utils/FileSystemUtil.cpp:410; es es-app/src/SystemData.cpp:279
- pattern: ._*
source_ref: es es-app/src/SystemData.cpp:273-275
media:
- name: artwork
source_ref: es es-app/src/SystemData.cpp:314
- name: media
source_ref: es es-app/src/SystemData.cpp:335
- name: medias
source_ref: es es-app/src/SystemData.cpp:335
- name: images
source_ref: es es-app/src/SystemData.cpp:335
- name: manuals
source_ref: es es-app/src/SystemData.cpp:335
- name: videos
source_ref: es es-app/src/SystemData.cpp:335
- name: assets
source_ref: es es-app/src/SystemData.cpp:335
- pattern: downloaded_*
source_ref: es es-app/src/SystemData.cpp:335
notes:
- A file is a game only when its lowercased extension is in the folder's list (es es-app/src/SystemData.cpp:284-290).
- The default core is configgen's, the board file before configgen-defaults.yml (os package/emulationstation/knulli-es-system/knulli-es-system.py:53-64).
+54
View File
@@ -0,0 +1,54 @@
name: KOLOS
platform: retroarch
format: elec-conf
params:
package: packages/virtual/emulators/package.mk
conf_dir: config/emulators
path_prefixes:
- /storage/roms/
sources:
os:
repo: https://github.com/AnonLinuxOS/KOLOS
commit: 7daf5950ae79bb8775f129468164f730dbc32298
es:
repo: https://github.com/JustEnoughLinuxOS/emulationstation
commit: b298647ee7988cf2a34fedd4442f357f63c66597
note: EmulationStation pinned by the ui/emulationstation package.mk PKG_VERSION
roms_root:
path: /storage/roms
from_bios: ..
source_ref: os packages/virtual/emulators/package.mk:111
case_sensitive: null
skip:
- name: bios
reason: created by the emulators package, holds no game
source_ref: os packages/virtual/emulators/package.mk:111
- name: music
reason: created by the emulators package, holds no game
source_ref: os packages/virtual/emulators/package.mk:114
- name: savestates
reason: created by the emulators package, holds no game
source_ref: os packages/virtual/emulators/package.mk:117
hidden:
- pattern: .*
source_ref: es es-app/src/SystemData.cpp:225
media:
- name: media
source_ref: es es-app/src/SystemData.cpp:272
- name: medias
source_ref: es es-app/src/SystemData.cpp:272
- name: images
source_ref: es es-app/src/SystemData.cpp:272
- name: manuals
source_ref: es es-app/src/SystemData.cpp:272
- name: videos
source_ref: es es-app/src/SystemData.cpp:272
- name: assets
source_ref: es es-app/src/SystemData.cpp:272
- pattern: downloaded_*
source_ref: es es-app/src/SystemData.cpp:272
notes:
- 'The BIOS folder is /storage/roms/bios, inside the roms root: the scan skips it.'
- A file is a game only when its lowercased extension is in the folder's list (es es-app/src/SystemData.cpp:236).
- Each folder comes from SYSTEM_PATH of config/emulators/<system>.conf, written by add_es_system for every
system the emulators package adds.
+26
View File
@@ -0,0 +1,26 @@
name: Koriki
platform: retroarch
format: koriki
params:
source: os
sections: base/.simplemenu/section_groups/apps and games.ini
launchers: base/.simplemenu/launchers
roms_prefix: /mnt/SDCARD/Roms/
skip: [CONSOLES, APPS, GAMES, OVERLAYS]
sources:
os:
repo: https://github.com/Rparadise-Team/Koriki
commit: 8513071c9bcffe9603ec3b3b760ad9385906a6a5
roms_root:
path: /mnt/SDCARD/Roms
from_bios: ../Roms
source_ref: os base/.simplemenu/section_groups/apps%20and%20games.ini:4
case_sensitive: false
case_ref: os src/simplemenu-beta/src/logic/logic.c:566-575
media:
- name: Imgs
source_ref: os src/simplemenu-beta/src/logic/logic.c:760-775
notes:
- SimpleMenu lists only files whose extension is in romExts, compared case-insensitively (os src/simplemenu-beta/src/logic/logic.c:990-1005).
- The first launcher of execs is the active one (os src/simplemenu-beta/src/logic/config.c:1127).
- The shipped SimpleMenu binary is built from a submodule this tree does not hold. The in-tree copy src/simplemenu-beta was read.
+16
View File
@@ -0,0 +1,16 @@
name: Lakka
platform: lakka
allow_empty: true
sources:
os:
repo: https://github.com/libretro/Lakka-LibreELEC
commit: ad1a27aac8e37e0cf810b243b2bdf9f798e45dd4
tag: v6.1
roms_root:
path: /storage/roms
from_bios: ../roms
source_ref: os packages/lakka/retroarch_base/retroarch/tmpfiles.d/retroarch-userdirs.conf:12; os packages/lakka/retroarch_base/retroarch/config/retroarch.cfg:3143
case_sensitive: null
notes:
- Lakka keeps no folder per system. Games reach the menu through RetroArch playlists built by scanning against the content databases (os packages/lakka/retroarch_base/retroarch/config/retroarch.cfg:98,3085), so a folder name says nothing about the system and the game itself has to.
- /storage/roms is the file browser's start, with hidden files not shown (os packages/lakka/retroarch_base/retroarch/config/retroarch.cfg:3143,3202). /storage/roms/downloads holds core assets (os packages/lakka/retroarch_base/retroarch/tmpfiles.d/retroarch-userdirs.conf:13).
+27
View File
@@ -0,0 +1,27 @@
name: MinUI
platform: minui
format: minui
params:
source: os
sources:
os:
repo: https://github.com/shauninman/MinUI
commit: dbf89435a5179788418ff3573042cf9c7e75d9e0
roms_root:
path: <SD>/Roms
from_bios: ../../Roms
source_ref: os workspace/all/common/defines.h:13; os workspace/miyoomini/platform/platform.h:122
case_sensitive: null
case_ref: os workspace/all/common/utils.c:74-96
hidden:
- pattern: .*
source_ref: os workspace/all/common/utils.c:32-34
- pattern: '*.disabled'
source_ref: os workspace/all/common/utils.c:32-34
- name: map.txt
source_ref: os workspace/all/common/utils.c:32-34
notes:
- MinUI has no extension filter. Every file of a Roms folder that is not hidden is listed as a game (os workspace/all/minui/minui.c:475-535,615-680), so the rows carry no extensions.
- A Roms folder starts the pak named by the text inside its last parentheses, or by its whole name without parentheses (getEmuName, os workspace/all/common/utils.c:74-96). The pak is found at .system/<PLATFORM>/paks/Emus/<TAG>.pak then Emus/<PLATFORM>/<TAG>.pak.
- BIOS sits in Bios/<TAG>/, two levels under the card root, so the roms root is ../../Roms from it.
- SDCARD_PATH differs per device (/mnt/SDCARD, /mnt/sdcard, /storage/roms, /sdcard, /media/roms, /storage/TF2). Roms sits under it.
@@ -0,0 +1,31 @@
name: MiSTer FPGA
platform: misterfpga
format: mister
params:
source: dist
arcade: [mame, hbmame]
arcade_note: ROM archives of the .mra files in _Arcade. The loader looks in games/mame, then beside the .mra (main support/arcade/mra_loader.cpp:168-187)
sources:
main:
repo: https://github.com/MiSTer-devel/Main_MiSTer
commit: a8ed7e9d4468f7a703af6e81ce42521e21e34f48
dist:
repo: https://github.com/MiSTer-devel/Distribution_MiSTer
commit: ab7a78093e95ac61696559a3403204a92a16fa30
roms_root:
path: /media/fat/games
from_bios: .
source_ref: main file_io.h:171; main file_io.cpp:1150-1170
case_sensitive: false
case_ref: main file_io.cpp:1715-1790
hidden:
- pattern: .*
source_ref: main file_io.cpp:1714-1715,1748-1749,1760-1761
- name: boot.rom
source_ref: main file_io.cpp:1765-1772
- pattern: boot[0-9].rom
source_ref: main file_io.cpp:1765-1772
notes:
- Games and BIOS share games/<core>/, so the roms root is the BIOS folder's own parent and every row is that core's folder. The folder is the core's name (main user_io.cpp:196-211). The rows are the folders the distribution ships.
- Only files whose extension is in the core's CONF_STR filter are listed, and a .zip is browsed as a folder (main file_io.cpp:1774-1785). Each core sets its filter in its own repository, so the rows carry no extensions.
- USB drives, network and CIFS mounts are searched for a games folder before /media/fat (main file_io.cpp:1060-1145).
@@ -0,0 +1,31 @@
name: MiyooCFW
platform: retroarch
format: gmenu2x
params:
source: os
shipped_roms: board/miyoo/roms
link_roms_prefix: /mnt/roms
links:
- source: gpsp
path: miyoo/opkg_assets/gpsp.lnk
core: gpsp
sources:
os:
repo: https://github.com/MiyooCFW/buildroot
commit: d5912eeb7b636810bafaa34eb0517fd599a0fc71
gpsp:
repo: https://github.com/Apaczer/gpsp
commit: df382f476ffea69f2ff57376b27eac11b15dcf81
tag: 1.2.3
note: the gpsp.ipk release package/miyoo/ipk-gpsp/ipk-gpsp.mk installs
roms_root:
path: /roms
from_bios: null
source_ref: os board/miyoo/rootfs/etc/inittab:24-25; os board/miyoo/rootfs/etc/main:4-5
case_sensitive: true
case_ref: os board/miyoo/scripts/genimage.sh:94-98
notes:
- The ROMS partition (mmcblk0p5) mounts on /roms and is built as ext4, where folder case matters. etc/main also accepts a FAT32 ROMS partition (os board/miyoo/rootfs/etc/main:181-186).
- The bundled emulator links point at /mnt/roms/<SYS> while the partition mounts on /roms. Nothing in the buildroot tree joins the two.
- The image installs seven emulator packages as release .ipk files (os package/miyoo/ipk-drpocketsnes/ipk-drpocketsnes.mk:1-3 and the six beside it). Their gmenu2x links live inside those packages. Only the gpSP link is also kept in its source repository, the other folders are the ones the image ships.
- BIOS sits in /mnt/.retroarch/system on the main partition, another partition than the games, so no relative path joins them.
+63
View File
@@ -0,0 +1,63 @@
name: muOS
platform: retroarch
format: muos
params:
source: os
path: share/info/manifest/core.json
sources:
os:
repo: https://github.com/MustardOS/internal
commit: f41f4a89334feecf91a81c7736d4f2c80b1ae10c
fe:
repo: https://github.com/MustardOS/frontend
commit: c128dfc13bd60cb8af66e7562bc8e8e5505e1f60
note: newest frontend commit at or before the internal pin date
roms_root:
path: /mnt/mmc/ROMS
from_bios: ../../ROMS
source_ref: fe common/content/content.c:522; fe common/base/options.h:101
case_sensitive: false
case_ref: fe common/content/core/common.c:396-398
hidden:
- pattern: .*
source_ref: os share/info/skip.ini:1
- pattern: _*
source_ref: os share/info/skip.ini:2
- pattern: /img*
source_ref: os share/info/skip.ini:3
- name: control.txt
source_ref: os share/info/skip.ini:4
- name: neogeo.zip
source_ref: os share/info/skip.ini:5
- name: pgm.zip
source_ref: os share/info/skip.ini:6
- name: midssio.zip
source_ref: os share/info/skip.ini:7
- pattern: '*.bps*'
source_ref: os share/info/skip.ini:8
- pattern: '*.dat*'
source_ref: os share/info/skip.ini:9
- pattern: '*.ips*'
source_ref: os share/info/skip.ini:10
- pattern: '*.log*'
source_ref: os share/info/skip.ini:11
- pattern: '*.msu*'
source_ref: os share/info/skip.ini:12
- pattern: '*.pcm*'
source_ref: os share/info/skip.ini:13
- pattern: '*.sav*'
source_ref: os share/info/skip.ini:14
- pattern: '*.sbi*'
source_ref: os share/info/skip.ini:15
- pattern: '*.srm*'
source_ref: os share/info/skip.ini:16
- pattern: '*.state*'
source_ref: os share/info/skip.ini:17
- pattern: '*.ups*'
source_ref: os share/info/skip.ini:18
- pattern: '*.xml*'
source_ref: os share/info/skip.ini:19
notes:
- core.json lists no extensions. The skip.ini globs are matched lowercased with fnmatch (fe common/base/strutil.c:31-104), and every other file is listed.
- A folder gets its core when its name, lowercased without space, '-', '_' and '+', is one of a system's friendly names (fe common/content/core/common.c:396-398). assign.json is built from every friendly name (os script/system/assign.sh:65-80).
- The roms root is ROMS on the card that holds MUOS/bios, or /mnt/sdcard/ROMS on the second card. RetroArch sees the BIOS folder as /run/muos/storage/bios.
+28
View File
@@ -0,0 +1,28 @@
name: MyMinUI
platform: myminui
format: minui
params:
source: os
sources:
os:
repo: https://github.com/Turro75/MyMinUI
commit: 72ed4f3dd80d96646c11bf9363242565320d9566
roms_root:
path: <SD>/Roms
from_bios: ../../Roms
source_ref: os workspace/all/common/defines.h:13
case_sensitive: null
case_ref: os workspace/all/common/utils.c:130-157
hidden:
- pattern: .*
source_ref: os workspace/all/common/utils.c:30-35
- pattern: '*.disabled'
source_ref: os workspace/all/common/utils.c:30-35
- name: map.txt
source_ref: os workspace/all/common/utils.c:30-35
- name: Imgs
source_ref: os workspace/all/common/utils.c:30-35
notes:
- MyMinUI has no extension filter. Every file of a Roms folder that is not hidden is listed as a game (os workspace/all/minui/minui.c:660-667), so the rows carry no extensions.
- A Roms folder starts the pak named by the text inside its last parentheses, or by its whole name without parentheses (getEmuName, os workspace/all/common/utils.c:130-157).
- BIOS sits in Bios/<TAG>/, two levels under the card root, so the roms root is ../../Roms from it.
+29
View File
@@ -0,0 +1,29 @@
name: NextUI
platform: nextui
format: minui
params:
source: os
sources:
os:
repo: https://github.com/LoveRetro/NextUI
commit: 5291344b3aceae5fa197437a70824afb41e2d338
roms_root:
path: <SD>/Roms
from_bios: ../../Roms
source_ref: os workspace/all/common/defines.h:16; os workspace/tg5040/platform/platform.h:156
case_sensitive: null
case_ref: os workspace/all/common/utils.c:352-379
hidden:
- pattern: .*
source_ref: os workspace/all/common/utils.c:36-38
- pattern: '*.disabled'
source_ref: os workspace/all/common/utils.c:36-38
- name: map.txt
source_ref: os workspace/all/common/utils.c:36-38
media:
- name: .media
source_ref: os workspace/all/nextui/nextui.c:3011-3034
notes:
- NextUI has no extension filter. Every file of a Roms folder that is not hidden is listed as a game (os workspace/all/nextui/nextui.c:535-547), so the rows carry no extensions.
- A Roms folder starts the pak named by the text inside its last parentheses, or by its whole name without parentheses (getEmuName, os workspace/all/common/utils.c:352-379).
- BIOS sits in Bios/<TAG>/, two levels under the card root, so the roms root is ../../Roms from it.
+25
View File
@@ -0,0 +1,25 @@
name: Onion
platform: retroarch
format: onion
params:
source: os
sources:
os:
repo: https://github.com/OnionUI/Onion
commit: 07505ea58c7bba698d6b9220ff43946a43cac76b
roms_root:
path: /mnt/SDCARD/Roms
from_bios: ../Roms
source_ref: os static/packages/Emu/Commodore%20-%20Amiga%20(PUAE%202021)/Emu/AMIGA/config.json:3
case_sensitive: false
case_ref: os src/packageManager/fileActions.h:96-118
hidden:
- pattern: .*
source_ref: os src/packageManager/fileActions.h:130
media:
- name: Imgs
source_ref: os static/packages/Emu/Commodore%20-%20Amiga%20(PUAE%202021)/Emu/AMIGA/config.json:1-13
notes:
- Each Emu/<SYS>/config.json points rompath at ../../Roms/<SYS> from /mnt/SDCARD/Emu/<SYS>. Emu packages are optional and PackageManager installs them.
- The stock MainUI that lists the games is closed source. It reads extlist and hidebios from config.json. Only Onion's PackageManager rule is readable (os src/packageManager/fileActions.h:120-189).
- The gpSP package names its core through default_core in launch.sh and switches to mGBA only after a save migration (os static/packages/Emu/Nintendo%20-%20GBA%20(gpSP)/Emu/GBA/launch.sh:25-30).
@@ -0,0 +1,49 @@
name: PAN4ELEC
platform: amberelec
format: es-xml
params:
file: AmberELEC/usr/config/emulationstation/es_systems.cfg
path_prefixes:
- /storage/roms/
default: flagged
sources:
os:
repo: https://github.com/Kegg1701/P4ELEC
commit: 9c19bfb2717a8790d96ee6104090e575966d5d00
es:
repo: https://github.com/AmberELEC/emulationstation
commit: e3846751ce50fdced1f2bbd7a5bb51f4da2e7007
note: 'PAN4ELEC overlays an AmberELEC image and ships no EmulationStation source: AmberELEC''s'
roms_root:
path: /storage/roms
from_bios: ..
source_ref: os AmberELEC/usr/config/retroarch/retroarch.cfg:3055,3119
case_sensitive: null
skip:
- name: bios
reason: RetroArch's system directory
source_ref: os AmberELEC/usr/config/retroarch/retroarch.cfg:3119
hidden:
- pattern: .*
source_ref: es es-app/src/SystemData.cpp:264
media:
- name: artwork
source_ref: es es-app/src/SystemData.cpp:294
- name: media
source_ref: es es-app/src/SystemData.cpp:315
- name: medias
source_ref: es es-app/src/SystemData.cpp:315
- name: images
source_ref: es es-app/src/SystemData.cpp:315
- name: manuals
source_ref: es es-app/src/SystemData.cpp:315
- name: videos
source_ref: es es-app/src/SystemData.cpp:315
- name: assets
source_ref: es es-app/src/SystemData.cpp:315
- pattern: downloaded_*
source_ref: es es-app/src/SystemData.cpp:315
notes:
- 'The BIOS folder is /storage/roms/bios, inside the roms root: the scan skips it.'
- A file is a game only when its lowercased extension is in the folder's list (es es-app/src/SystemData.cpp:275).
- 'Default core: the core marked default, else the first emulator''s first core (es es-app/src/SystemData.cpp:1829-1860).'
@@ -0,0 +1,18 @@
name: plumOS (MF build)
platform: retroarch
format: plumos
params:
source: os
path: package/frontend-mf/plumos/config/frontend/systems.json
sources:
os:
repo: https://github.com/game-de-it/plumOS-MF
commit: 0095017c39226ad1c22bf8df852202673075936d
roms_root:
path: /mnt/SDCARD/Roms
from_bios: ../Roms
source_ref: os package/frontend-mf/plumos/bin/plumos-retroarch-launch:12-15
case_sensitive: null
notes:
- Each system lists its folders in directory_aliases by priority, upper case Miyoo spellings and lower case ROCKNIX ones. The frontend that resolves them is built from a separate component this repository does not hold, so its case and hidden-file rules are unread.
- A folder marked shared serves several systems (FC for NES and FDS). The row goes to the first system, the later ones list it among their aliases.
@@ -0,0 +1,19 @@
name: plumOS (Pixel 2 build)
platform: retroarch
format: plumos
params:
source: os
path: package/frontend-pixel2/systems.json
sources:
os:
repo: https://github.com/game-de-it/plumOS-pixel2_v2
commit: dec872c042229c1d38443f7e8e3fe962fc369e81
roms_root:
path: /mnt/plumos-user/roms
from_bios: ../roms
source_ref: os package/app-layer-pixel2/bin/plumos-retroarch-launch:6-7,66-73
case_sensitive: null
notes:
- Each system lists its folders in directory_aliases by priority, upper case Miyoo spellings and lower case ROCKNIX ones. The frontend that resolves them is built from a separate component this repository does not hold, so its case and hidden-file rules are unread.
- A folder marked shared serves several systems (FC for NES and FDS). The row goes to the first system, the later ones list it among their aliases.
- Artwork is looked up in Images/<id> at the card root, outside roms.
@@ -0,0 +1,22 @@
name: Recalbox
platform: recalbox
format: recalbox
params:
systems_dir: package/recalbox-romfs2/systems
sources:
os:
repo: https://gitlab.com/recalbox/recalbox
commit: a264d628ead7074b3c523c8b3311543fe2d3f972
tag: 10.1.1
roms_root:
path: /recalbox/share/roms
from_bios: ../roms
source_ref: os projects/frontend/es-app/src/systems/SystemManager.h:114-119
case_sensitive: null
hidden:
- pattern: .*
source_ref: os projects/frontend/es-app/src/systems/SystemManager.cpp:1801-1803
notes:
- "%ROOT% in roms.folder is /recalbox/share/roms (os projects/frontend/es-app/src/systems/SystemManager.h:114-117)."
- A folder holds games when a file's lowercased extension is in the system's list (os projects/frontend/es-app/src/systems/SystemManager.cpp:1790-1805).
- The default core is the lowest priority, the last listed on a tie, and priority.<board> applies on that board (os projects/frontend/es-app/src/emulators/EmulatorManager.cpp:94-111).
@@ -0,0 +1,16 @@
name: RetroArch
platform: retroarch
allow_empty: true
sources:
os:
repo: https://github.com/libretro/RetroArch
commit: 69a4f0ea1e8aaf442ae4858f2e7f2b31a1776576
tag: v1.22.2
roms_root:
path: null
from_bios: null
source_ref: os configuration.c:3126,3295-3298
case_sensitive: null
notes:
- RetroArch alone defines no rom folder. rgui_browser_directory starts empty and only a platform default fills it, which no desktop driver sets (os configuration.c:3126,3295-3298).
- Content reaches a core through playlists built by scanning against the content databases (os tasks/task_database.c), or from the file browser with a core the user picks. The system can only come from the game itself or from a folder the user names.
@@ -0,0 +1,58 @@
name: RetroBat
platform: retrobat
format: es-xml
params:
file: system/templates/emulationstation/es_systems.cfg
path_prefixes:
- ~\..\roms\
default: flagged
sources:
os:
repo: https://github.com/RetroBat-Official/retrobat
commit: ec36b1310a72c9ba5cd159525f96bbf0246170aa
tag: 8.3.1
es:
repo: https://github.com/RetroBat-Official/emulationstation
commit: 45f37fd74819ee07118ca2e7680a907b25733ac5
note: branch retrobat-8.3
roms_root:
path: <RetroBat>\roms
from_bios: ../roms
source_ref: os system/templates/emulationstation/es_systems.cfg:10
case_sensitive: false
hidden:
- pattern: .*
source_ref: es es-app/src/SystemData.cpp:350
media:
- name: artwork
source_ref: es es-app/src/SystemData.cpp:380
- name: media
source_ref: es es-app/src/SystemData.cpp:400-403
- name: medias
source_ref: es es-app/src/SystemData.cpp:400-403
- name: images
source_ref: es es-app/src/SystemData.cpp:400-403
- name: manuals
source_ref: es es-app/src/SystemData.cpp:400-403
- name: videos
source_ref: es es-app/src/SystemData.cpp:400-403
- name: assets
source_ref: es es-app/src/SystemData.cpp:400-403
- name: html_arrm
source_ref: es es-app/src/SystemData.cpp:400-403
- name: bezels
source_ref: es es-app/src/SystemData.cpp:400-403
- name: fonts
source_ref: es es-app/src/SystemData.cpp:400-403
- name: logs
source_ref: es es-app/src/SystemData.cpp:400-403
- name: screenshots
source_ref: es es-app/src/SystemData.cpp:400-403
- pattern: downloaded_*
source_ref: es es-app/src/SystemData.cpp:400-403
notes:
- ~ is the EmulationStation home, <RetroBat>\emulationstation, so ~\..\roms is <RetroBat>\roms beside
<RetroBat>\bios.
- Windows folders are case-insensitive.
- A file is a game only when its lowercased extension is in the folder's list (es es-app/src/SystemData.cpp:355).
- 'Default core: the core marked default, else the first emulator''s first core (es es-app/src/SystemData.cpp:1923-1960).'
@@ -0,0 +1,27 @@
name: RetroDECK
platform: retrodeck
format: esde
params:
systems:
source: esde
path: resources/systems/linux/es_systems.xml
sources:
esde:
repo: https://github.com/RetroDECK/ES-DE
commit: 15e1b236eafd2864bd99ffcc9853d2efa2a3916c
note: branch retrodeck-main at release retrodeck-main-20260926-172324
os:
repo: https://github.com/RetroDECK/RetroDECK
commit: 7786a849179eb2ca94e8ca413259e28adbcb1e39
roms_root:
path: ~/retrodeck/roms
from_bios: ../roms
source_ref: os config/retrodeck/retrodeck.json:5,9
case_sensitive: true
hidden:
- pattern: .*
source_ref: esde es-app/src/SystemData.cpp:657
notes:
- 'roms_path and bios_path are settings: their defaults are siblings.'
- Extensions are matched as written (esde es-app/src/SystemData.cpp:666), kept here lowercased.
- 'Default emulator: the first <command> of each system.'
@@ -0,0 +1,29 @@
name: RetroPie
platform: retropie
format: retropie
params:
platforms_cfg: platforms.cfg
module_dirs: [emulators, libretrocores]
install_sections: [core, main, opt, exp]
platform_flags: [native, 64bit, gl, vulkan, x11, x86]
sources:
os:
repo: https://github.com/RetroPie/RetroPie-Setup
commit: 46128cd252cdecae852a4d0bafa2aaf9d03ab563
es:
repo: https://github.com/RetroPie/EmulationStation
commit: a31c36a77b385a6ea3f6667e75ef468ff79678a6
note: branch stable, the one scriptmodules/supplementary/emulationstation.sh builds
roms_root:
path: ~/RetroPie/roms
from_bios: ../roms
source_ref: os retropie_packages.sh:47-49; os scriptmodules/helpers.sh:1412
case_sensitive: true
case_ref: os scriptmodules/helpers.sh:1435-1437
hidden:
- pattern: .*
source_ref: es es-app/src/SystemData.cpp:102-104
notes:
- addSystem appends the upper-case form of each extension because EmulationStation compares them as written (os scriptmodules/helpers.sh:1435-1437).
- Each folder is <romdir>/<system> for a system platforms.cfg lists (os scriptmodules/helpers.sh:1406-1413). A folder appears only once a module calls addSystem for it.
- The default is the first module installed that calls addEmulator with 1 (os scriptmodules/helpers.sh:1565-1570). Rows give it for a basic install on x86_64, the core section then the main one, in registration order (os scriptmodules/admin/setup.sh:606-611; os scriptmodules/packages.sh:1037-1038; flags from os scriptmodules/system.sh:537,673-683). A system no basic-install module serves takes the first optional (opt, then exp) module.
+65
View File
@@ -0,0 +1,65 @@
name: ROCKNIX
platform: rocknix
format: elec-conf
params:
package: projects/ROCKNIX/packages/virtual/emulators/package.mk
conf_dir: config/emulators
path_prefixes:
- /storage/roms/
sources:
os:
repo: https://github.com/ROCKNIX/distribution
commit: c445081a59518f37d9776e5412dd7b14910696f7
tag: '20261001'
es:
repo: https://github.com/ROCKNIX/emulationstation-next
commit: cada856d86e3115fbbf0bce09dd761b0ee8fa9fd
note: EmulationStation pinned by the ui/emulationstation package.mk PKG_VERSION
roms_root:
path: /storage/roms
from_bios: ..
source_ref: os projects/ROCKNIX/packages/virtual/emulators/package.mk:152
case_sensitive: null
skip:
- name: bezels
reason: created by the emulators package, holds no game
source_ref: os projects/ROCKNIX/packages/virtual/emulators/package.mk:149
- name: bios
reason: created by the emulators package, holds no game
source_ref: os projects/ROCKNIX/packages/virtual/emulators/package.mk:152
- name: music
reason: created by the emulators package, holds no game
source_ref: os projects/ROCKNIX/packages/virtual/emulators/package.mk:155
- name: savestates
reason: created by the emulators package, holds no game
source_ref: os projects/ROCKNIX/packages/virtual/emulators/package.mk:158
- name: themes
reason: created by the emulators package, holds no game
source_ref: os projects/ROCKNIX/packages/virtual/emulators/package.mk:161
hidden:
- pattern: .*
source_ref: es es-app/src/SystemData.cpp:340
- pattern: ._*
source_ref: es es-app/src/SystemData.cpp:334-336
media:
- name: artwork
source_ref: es es-app/src/SystemData.cpp:370
- name: media
source_ref: es es-app/src/SystemData.cpp:390-393
- name: medias
source_ref: es es-app/src/SystemData.cpp:390-393
- name: images
source_ref: es es-app/src/SystemData.cpp:390-393
- name: manuals
source_ref: es es-app/src/SystemData.cpp:390-393
- name: videos
source_ref: es es-app/src/SystemData.cpp:390-393
- name: assets
source_ref: es es-app/src/SystemData.cpp:390-393
- pattern: downloaded_*
source_ref: es es-app/src/SystemData.cpp:390-393
notes:
- 'The BIOS folder is /storage/roms/bios, inside the roms root: the scan skips it.'
- A file is a game only when its lowercased extension is in the folder's list (es es-app/src/SystemData.cpp:351).
- Each folder comes from SYSTEM_PATH of config/emulators/<system>.conf, written by add_es_system for every
system the emulators package adds.
+60
View File
@@ -0,0 +1,60 @@
name: RomM
platform: romm
format: romm
params:
source: os
cores_map: frontend/src/utils/index.ts
bios_fixture: backend/models/fixtures/known_bios_files.json
sources:
os:
repo: https://github.com/rommapp/romm
commit: 68f71259f7c6de39fbeedff9cc9ac114c18ee250
tag: 5.4.0
roms_root:
path: /romm/library/roms
from_bios: ../roms
source_ref: os backend/config/__init__.py:46-48; os backend/config/config_manager.py:57-58
case_sensitive: true
hidden:
- pattern: .*
source_ref: os backend/handler/filesystem/roms_handler.py:530-545
- pattern: '*.db'
source_ref: os backend/config/config_manager.py:267-276
- pattern: '*.tmp'
source_ref: os backend/config/config_manager.py:267-276
- pattern: '*.bak'
source_ref: os backend/config/config_manager.py:267-276
- pattern: '*.lock'
source_ref: os backend/config/config_manager.py:267-276
- pattern: '*.log'
source_ref: os backend/config/config_manager.py:267-276
- pattern: '*.cache'
source_ref: os backend/config/config_manager.py:267-276
- pattern: '*.crdownload'
source_ref: os backend/config/config_manager.py:267-276
- name: gamelist.xml
source_ref: os backend/config/config_manager.py:277-286
- name: metadata.pegasus.txt
source_ref: os backend/config/config_manager.py:277-286
skip:
- name: assets
source_ref: os backend/config/config_manager.py:288-300
- name: __MACOSX
source_ref: os backend/config/config_manager.py:288-300
- name: System Volume Information
source_ref: os backend/config/config_manager.py:288-300
media:
- name: images
source_ref: os backend/config/config_manager.py:303-324
- name: covers
source_ref: os backend/config/config_manager.py:303-324
- name: manuals
source_ref: os backend/config/config_manager.py:303-324
- name: screenshots
source_ref: os backend/config/config_manager.py:303-324
- name: videos
source_ref: os backend/config/config_manager.py:303-324
notes:
- The default layout is roms/{platform}/{game} and bios/{platform} under /romm/library (os backend/config/config_manager.py:57-58). config.yml can switch to {platform}/roms and {platform}/bios (os backend/config/config_manager.py:1121-1122).
- RomM has no extension allow-list. Every file is a ROM except the excluded extensions and names, and config.yml extends both lists.
- A folder is any IGDB or RomM platform slug. The rows are the slugs RomM plays in the browser (_EJS_CORES_MAP) or keeps BIOS for (known_bios_files.json), and the core is the first EmulatorJS core listed.
@@ -0,0 +1,27 @@
name: spruceOS
platform: retroarch
format: spruce
params:
source: os
skip: [-CUSTOM-SYSTEM-]
sources:
os:
repo: https://github.com/spruceUI/spruceOS
commit: 824b1aaee9e1e9979a6b04979f581e60b8c23b87
roms_root:
path: /mnt/SDCARD/Roms
from_bios: ../Roms
source_ref: os App/PyUI/main-ui/games/utils/device_specific/miyoo_trim_game_system_utils.py:122-130
case_sensitive: null
case_ref: os App/PyUI/main-ui/games/utils/device_specific/miyoo_trim_game_system_utils.py:143-155
hidden:
- pattern: .*
source_ref: os App/PyUI/main-ui/games/utils/rom_utils.py:136-176
media:
- name: Imgs
source_ref: os App/PyUI/main-ui/games/utils/rom_utils.py:136-176
notes:
- A folder is the Emu folder name or any alternativeFolderNames entry, tested with os.path.exists, so case folds only on a FAT or exFAT card.
- A file counts when its lowercased suffix is in extlist. With an empty extlist every file counts except .xml, .txt and .db. Names in ignoreList (BIOS archives in arcade folders) are dropped (os App/PyUI/main-ui/games/utils/rom_utils.py:136-176).
- default_emulator is the factory core. A per-device menu key overrides it (os spruce/scripts/emu/lib/general_functions.sh:135-160).
- The second card's /media/sdcard1/Roms is read too when present.
@@ -0,0 +1,54 @@
name: UnofficialOS
platform: retroarch
format: elec-conf
params:
package: packages/virtual/emulators/package.mk
conf_dir: config/emulators
path_prefixes:
- /storage/roms/
sources:
os:
repo: https://github.com/RetroGFX/UnofficialOS
commit: 226357964978ec6092c0759b8bac67d5ff24442b
es:
repo: https://github.com/RetroGFX/emulationstation
commit: f439343ecfa5e85448fca96db9a3b64a8d685397
note: EmulationStation pinned by the ui/emulationstation package.mk PKG_VERSION
roms_root:
path: /storage/roms
from_bios: ..
source_ref: os packages/virtual/emulators/package.mk:104
case_sensitive: null
skip:
- name: bios
reason: created by the emulators package, holds no game
source_ref: os packages/virtual/emulators/package.mk:104
- name: music
reason: created by the emulators package, holds no game
source_ref: os packages/virtual/emulators/package.mk:107
- name: savestates
reason: created by the emulators package, holds no game
source_ref: os packages/virtual/emulators/package.mk:110
hidden:
- pattern: .*
source_ref: es es-app/src/SystemData.cpp:225
media:
- name: media
source_ref: es es-app/src/SystemData.cpp:272
- name: medias
source_ref: es es-app/src/SystemData.cpp:272
- name: images
source_ref: es es-app/src/SystemData.cpp:272
- name: manuals
source_ref: es es-app/src/SystemData.cpp:272
- name: videos
source_ref: es es-app/src/SystemData.cpp:272
- name: assets
source_ref: es es-app/src/SystemData.cpp:272
- pattern: downloaded_*
source_ref: es es-app/src/SystemData.cpp:272
notes:
- 'The BIOS folder is /storage/roms/bios, inside the roms root: the scan skips it.'
- A file is a game only when its lowercased extension is in the folder's list (es es-app/src/SystemData.cpp:236).
- Each folder comes from SYSTEM_PATH of config/emulators/<system>.conf, written by add_es_system for every
system the emulators package adds.
+916
View File
@@ -0,0 +1,916 @@
setup: allium
name: Allium
platform: retroarch
sources:
os:
repo: "https://github.com/goweiwen/Allium"
commit: ee0dda979bc02649fdda48b277eaa60938273465
roms_root:
path: /mnt/SDCARD/Roms
from_bios: ../Roms
source_ref: "os crates/common/src/constants.rs:19-34"
case_sensitive: false
case_ref: "os crates/allium-launcher/src/consoles.rs:120-185"
hidden:
- pattern: .*
source_ref: "os crates/allium-launcher/src/entry/mod.rs:31-62"
- pattern: _*
source_ref: "os crates/allium-launcher/src/entry/mod.rs:31-62"
- name: gamelist.xml
source_ref: "os crates/allium-launcher/src/entry/mod.rs:31-62"
- name: miyoogamelist.xml
source_ref: "os crates/allium-launcher/src/entry/mod.rs:31-62"
- name: neogeo.zip
source_ref: "os crates/allium-launcher/src/entry/mod.rs:31-62"
- pattern: '*.db'
source_ref: "os crates/allium-launcher/src/entry/mod.rs:31-62"
- pattern: '*.sbi'
source_ref: "os crates/allium-launcher/src/entry/mod.rs:31-62"
- pattern: '*.nfo'
source_ref: "os crates/allium-launcher/src/entry/mod.rs:31-62"
- pattern: '*.msu'
source_ref: "os crates/allium-launcher/src/entry/mod.rs:31-62"
- pattern: '*.pcm'
source_ref: "os crates/allium-launcher/src/entry/mod.rs:31-62"
media:
- name: Imgs
source_ref: "os crates/allium-launcher/src/entry/mod.rs:31-62"
- name: Guides
source_ref: "os crates/allium-launcher/src/entry/mod.rs:31-62"
notes:
- "A file maps by its exact name, then by any dotted extension a console lists, then by the folder patterns\
\ walking up the path (os crates/allium-launcher/src/consoles.rs:138-185). A console with no folder\
\ pattern is matched by extension only and has no row."
folders:
- folder: AMIGA
name: Amiga
aliases:
- amiga
- amiga1200
- amiga600
- amigacd32
- cdtv
extensions:
- .adf
- .adz
- .dms
- .fdi
- .hdf
- .hdz
- .info
- .ipf
- .lha
- .mds
- .nrg
- .rp9
- .slave
- .uae
core: puae2021
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:136"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: ARCADE
name: Arcade
aliases:
- arcade
- fba
- fbneo
- mame
core: mame2003_plus
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:13"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: ATARI
name: Atari 2600
aliases:
- atari2600
extensions:
- .a26
core: stella2014
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:36"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: ATARIST
name: Atari ST
core: hatari
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:66"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: CHAILOVE
name: ChaiLove
core: chailove
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:443"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: COLECO
name: ColecoVision
aliases:
- colecovision
extensions:
- .col
- .ri
- .sc
core: bluemsx
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:130"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: COMMODORE
name: Commodore 64
aliases:
- c64
core: vice_x64
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:157"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: CPC
name: Amstrad CPC
aliases:
- amstradcpc
extensions:
- .kcr
- .sna
core: crocods
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:7"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: CPS1
core: fbalpha2012_cps1
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:82"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: CPS2
core: fbalpha2012_cps2
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:98"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: CPS3
core: fbalpha2012_cps3
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:114"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: DAPHNE
name: Daphne
extensions:
- .daphne
core: daphne
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:448"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: DOOM
name: Doom
aliases:
- PRBOOM
extensions:
- .iwad
- .pwad
- .wad
core: prboom
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:491"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: DOS
name: MS-DOS
extensions:
- .bat
- .com
- .conf
- .dosz
- .exe
- .ima
- .ins
- .jrc
- .m3u8
- .tc
- .vhd
core: dosbox_pure
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:195"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: EASYRPG
name: EasyRPG
core: easyrpg
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:454"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: ECWOLF
name: Wolfenstein 3D
core: ecwolf
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:459"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: EIGHTHUNDRED
name: Atari - 800
aliases:
- atari800
- atarixe
extensions:
- .xex
core: atari800
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:30"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: FAIRCHILD
name: Fairchild ChannelF
aliases:
- channelf
extensions:
- .chf
core: freechaf
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:167"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: FC
name: NES
aliases:
- NES
- famicom
extensions:
- .nes
- .unf
- .unif
core: fceumm
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:271"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: FDS
name: Famicom Disk Syst.
extensions:
- .fds
core: fceumm
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:236"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: FIFTYTWOHUNDRED
name: Atari 5200
aliases:
- atari5200
extensions:
- .a52
core: a5200
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:42"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: FLASHBACK
name: Flashback
core: reminiscence
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:507"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: GAMETANK
name: Game Tank
extensions:
- .gtr
core: libgametank
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:1"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: GB
name: Game Boy
aliases:
- TGB_Dual
extensions:
- .gb
core: gambatte
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:248"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: GBA
name: Game Boy Advance
extensions:
- .gba
core: gpsp
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:260"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: GBC
name: Game Boy Color
extensions:
- .gbc
core: gambatte
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:254"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: GG
name: Game Gear
aliases:
- gamegear
extensions:
- .gg
core: picodrive
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:343"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: GME
name: Game Music Emu
core: gme
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:464"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: GW
name: Game & Watch
aliases:
- gameandwatch
extensions:
- .mgw
core: gw
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:242"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: INTELLIVISION
name: Intellivision
extensions:
- .int
core: freeintv
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:184"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: JAGUAR
name: Atari Jaguar
aliases:
- atarijaguar
- atarijaguarcd
extensions:
- .j64
- .jag
core: virtualjaguar
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:54"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: LOVE
name: LÖVE
aliases:
- lutro
extensions:
- .love
core: lutro
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:469"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: LYNX
name: Atari Lynx
aliases:
- atarilynx
extensions:
- .lnx
core: handy
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:60"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: MD
name: Genesis
aliases:
- genesis
- megadrive
- megadrivejp
extensions:
- .gen
- .md
- .smd
core: picodrive
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:349"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: MEDIA
name: Movies
aliases:
- Movies
extensions:
- .3g2
- .3gp
- .aac
- .avi
- .flv
- .m4a
- .mj2
- .mkv
- .mov
- .mp3
- .mp4
- .mpeg
- .ogg
- .oss
- .wav
- .webm
core: ffplay
emulator: standalone
source_ref: "os static/.allium/config/consoles.toml:548"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: MEGADUCK
name: Mega Duck
core: sameduck
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:190"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: MICROW8
name: MicroW8
core: uw8
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:522"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: MS
name: Master System
aliases:
- mark3
- mastersystem
extensions:
- .sms
core: picodrive
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:355"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: MSX
aliases:
- msx1
- msx2
- msxturbor
extensions:
- .mx1
- .mx2
core: bluemsx
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:213"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: NDS
name: Nintendo DS
aliases:
- DS
extensions:
- .nds
core: drastic
emulator: standalone
source_ref: "os static/.allium/config/consoles.toml:542"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: NEOCD
name: Neo Geo CD
aliases:
- neogeocd
- neogeocdjp
core: neocd
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:383"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: NEOGEO
name: Neo Geo
core: fbalpha2012_neogeo
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:378"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: NGP
name: Neo Geo Pocket Color
aliases:
- NGC
- ngpc
extensions:
- .ngc
- .ngp
core: mednafen_ngp
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:388"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: NXENGINE
name: Cave Story
core: nxengine
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:427"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: ODYSSEY
name: Odyssey 2
aliases:
- odyssey2
core: o2em
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:179"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: PALMOS
name: Palm OS
aliases:
- palm
extensions:
- .pqa
- .prc
core: mu
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:475"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: PANASONIC
name: 3DO
aliases:
- 3DO
core: opera
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:486"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: PC8000
name: PC-8000
aliases:
- pc88
core: quasi88
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:412"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: PC98
name: PC-98
aliases:
- NINETYEIGHT
- PCNINETYEIGHT
core: np2kai
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:417"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: PCE
name: TurboGrafx-16
aliases:
- pcengine
- tg16
extensions:
- .pce
core: mednafen_pce_fast
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:230"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: PCECD
name: TurboGrafx CD
aliases:
- pcenginecd
- tg-cd
core: mednafen_pce_fast
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:225"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: PCFX
name: PC-FX
core: mednafen_pcfx
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:422"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: PICO
name: PICO-8
aliases:
- pico8
extensions:
- .p8
- .png
core: fake08
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:314"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: POKE
name: Pokémon Mini
aliases:
- PKM
- pokemini
extensions:
- .min
core: pokemini
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:277"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: PORTS
name: Ports Collection
aliases:
- NATIVE
- SH
extensions:
- .port
core: native
emulator: standalone
source_ref: "os static/.allium/config/consoles.toml:320"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: PSX
name: PlayStation
aliases:
- PS
- PS1
extensions:
- .cbn
- .mdf
- .pbp
- .toc
core: pcsx_rearmed
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:394"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: QUAKE
name: Quake
core: tyrquake
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:517"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: SATELLAVIEW
name: Satellaview
extensions:
- .st
core: snes9x
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:283"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: SCUMMVM
name: ScummVM
extensions:
- .scummvm
- .target
core: scummvm
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:326"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: SEGACD
name: Sega CD
aliases:
- megacd
- megacdjp
core: picodrive
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:338"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: SEGASGONE
name: SG-1000
aliases:
- sg-1000
extensions:
- .sg
core: gearsystem
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:361"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: SEVENTYEIGHTHUNDRED
name: Atari 7800
aliases:
- atari7800
extensions:
- .a78
core: prosystem
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:48"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: SFC
name: SNES
aliases:
- SNES
- snesna
extensions:
- .fig
- .sfc
- .smc
- .swc
core: mednafen_supafaust
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:289"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: SGB
name: Super Game Boy
core: mgba
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:266"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: SGFX
name: SuperGrafx
aliases:
- supergrafx
extensions:
- .sgx
core: mednafen_supergrafx
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:219"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: SHARPX1
name: Sharp X1
aliases:
- x1
core: x1
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:497"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: SUFAMI
name: Sufami Turbo
core: snes9x
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:71"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: SUPERVISION
name: Watara Supervision
extensions:
- .sv
core: potator
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:406"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: THIRTYTWOX
name: Genesis 32X
aliases:
- sega32x
- sega32xjp
- sega32xna
extensions:
- .32x
core: picodrive
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:332"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: THOMSON
name: Thomson
aliases:
- moto
- to8
core: theodore
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:512"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: TI83
name: Texas Instruments TI-83
core: numero
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:481"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: TIC
name: TIC-80
aliases:
- tic80
extensions:
- .fd
- .k7
- .m7
- .sap
- .tic
core: tic80
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:400"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: UZEBOX
name: Uzebox
core: uzem
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:527"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: VB
name: Virtual Boy
aliases:
- virtualboy
extensions:
- .vb
- .vboy
core: mednafen_vb
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:303"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: VECRTEX
name: GCE Vectrex
core: vecx
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:532"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: VECTREX
name: Vectrex
extensions:
- .vec
core: vecx
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:173"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: VIC20
name: VIC-20
core: vice_xvic
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:162"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: VIDEOPAC
name: Phillips Videopac+
core: o2em
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:309"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: VMU
name: Sega VMU
core: vemulator
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:367"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: WS
name: WonderSwanColor
aliases:
- wonderswan
- wonderswancolor
extensions:
- .pc2
- .ws
core: mednafen_wswan
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:76"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: X68000
name: Sharp X68000
core: px68k
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:502"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: XRICK
name: Rick Dangerous
core: xrick
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:537"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: ZX81
name: Sinclair ZX81
aliases:
- ZXEIGHTYONE
core: zx81
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:438"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
- folder: ZXS
name: ZX Spectrum
aliases:
- zxspectrum
extensions:
- .rzx
- .scl
- .trd
- .tzx
- .z80
core: fuse
emulator: retroarch
source_ref: "os static/.allium/config/consoles.toml:372"
note: "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension\
\ wins over its folder"
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+352
View File
@@ -0,0 +1,352 @@
setup: bizhawk
name: BizHawk
platform: bizhawk
sources:
os:
repo: "https://github.com/TASEmulators/BizHawk"
commit: bdddf4a58aa1a022afb11dc73294a81a5aa7bbd5
tag: 2.11.1
roms_root:
path: <BizHawk>
from_bios: ..
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:96-97,179"
case_sensitive: null
notes:
- "Each system has a base folder under the BizHawk folder, and its ROM path is \".\" inside it (os src/BizHawk.Client.Common/config/PathEntryCollection.cs:77-85,96-97).\
\ Firmware sits in Firmware beside those bases, the folder the installer fills."
- "BizHawk never scans a folder. The user opens one file, the open dialog filters by the RomFileExtensions\
\ lists, and the system follows from the extension and the game database (os src/BizHawk.Client.Common/RomLoader.cs:1143-1183)."
- "A row's extensions are the RomFileExtensions list named like its system. Systems whose list carries\
\ another name (32X, Game Gear, SG-1000) or none (Saturn, PC-FX, 3DO, Amstrad CPC, Channel F) have none\
\ here."
- "The cores are BizHawk's own. The default named in a note is CoreNames[0] of CorePickerUIData (os src/BizHawk.Client.Common/config/Config.cs:20-50)."
folders:
- folder: 32X
name: Sega32X
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:198"
note: the open dialog starts here, nothing is scanned
- folder: 3DO
name: Panasonic3DO
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:279"
note: the open dialog starts here, nothing is scanned
- folder: 3DS
name: N3DS
extensions:
- .3ds
- .3dsx
- .app
- .axf
- .cci
- .cia
- .cxi
- .elf
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:193; os src/BizHawk.Client.Common/RomLoader.cs:1066"
note: the open dialog starts here, nothing is scanned
- folder: Amiga
extensions:
- .adf
- .adz
- .dms
- .fdi
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:200; os src/BizHawk.Client.Common/RomLoader.cs:1038"
note: the open dialog starts here, nothing is scanned
- folder: AmstradCPC
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:206"
note: the open dialog starts here, nothing is scanned
- folder: Apple II
name: AppleII
extensions:
- .do
- .dsk
- .po
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:208; os src/BizHawk.Client.Common/RomLoader.cs:1040"
note: the open dialog starts here, nothing is scanned
- folder: Arcade
extensions:
- .7z
- .chd
- .zip
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:210; os src/BizHawk.Client.Common/RomLoader.cs:1042"
note: the open dialog starts here, nothing is scanned
- folder: Atari 2600
name: A26
extensions:
- .a26
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:202; os src/BizHawk.Client.Common/RomLoader.cs:1034"
note: "the open dialog starts here, nothing is scanned. Default core Atari2600Hawk (CorePickerUIData,\
\ CoreNames[0])"
- folder: Atari 7800
name: A78
extensions:
- .a78
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:204; os src/BizHawk.Client.Common/RomLoader.cs:1036"
note: the open dialog starts here, nothing is scanned
- folder: C64
extensions:
- .crt
- .d64
- .g64
- .prg
- .tap
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:212; os src/BizHawk.Client.Common/RomLoader.cs:1044"
note: the open dialog starts here, nothing is scanned
- folder: Channel F
name: ChannelF
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:214"
note: the open dialog starts here, nothing is scanned
- folder: Coleco
extensions:
- .col
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:216; os src/BizHawk.Client.Common/RomLoader.cs:1046"
note: the open dialog starts here, nothing is scanned
- folder: Doom
extensions:
- .wad
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:218; os src/BizHawk.Client.Common/RomLoader.cs:1048"
note: the open dialog starts here, nothing is scanned
- folder: DOS
extensions:
- .d88
- .dmf
- .fdd
- .fdi
- .hdd
- .ima
- .img
- .nfd
- .xdf
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:220; os src/BizHawk.Client.Common/RomLoader.cs:1050"
note: the open dialog starts here, nothing is scanned
- folder: Dual Game Gear
name: GGL
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:238"
note: the open dialog starts here, nothing is scanned
- folder: Game Gear
name: GG
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:236"
note: "the open dialog starts here, nothing is scanned. Default core Gpgx (CorePickerUIData, CoreNames[0])"
- folder: Gameboy
name: GB
aliases:
- GBC
- SGB
extensions:
- .gb
- .gbc
- .sgb
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:227; os src/BizHawk.Client.Common/RomLoader.cs:1052"
note: "the open dialog starts here, nothing is scanned. Default core Gambatte (CorePickerUIData, CoreNames[0])"
- folder: Gameboy Link
name: GBL
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:222"
note: "the open dialog starts here, nothing is scanned. Default core GambatteLink (CorePickerUIData,\
\ CoreNames[0])"
- folder: GBA
extensions:
- .gba
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:232; os src/BizHawk.Client.Common/RomLoader.cs:1054"
note: the open dialog starts here, nothing is scanned
- folder: Genesis
name: GEN
extensions:
- .32x
- .gen
- .md
- .smd
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:234; os src/BizHawk.Client.Common/RomLoader.cs:1056"
note: the open dialog starts here, nothing is scanned
- folder: Intellivision
name: INTV
extensions:
- .bin
- .int
- .rom
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:240; os src/BizHawk.Client.Common/RomLoader.cs:1058"
note: the open dialog starts here, nothing is scanned
- folder: Jaguar
extensions:
- .j64
- .jag
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:245; os src/BizHawk.Client.Common/RomLoader.cs:1060"
note: the open dialog starts here, nothing is scanned
- folder: Lynx
extensions:
- .lnx
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:262; os src/BizHawk.Client.Common/RomLoader.cs:1062"
note: the open dialog starts here, nothing is scanned
- folder: MSX
extensions:
- .cas
- .dsk
- .mx1
- .rom
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:264; os src/BizHawk.Client.Common/RomLoader.cs:1064"
note: the open dialog starts here, nothing is scanned
- folder: N64
extensions:
- .n64
- .v64
- .z64
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:266; os src/BizHawk.Client.Common/RomLoader.cs:1068"
note: "the open dialog starts here, nothing is scanned. Default core Mupen64Plus (CorePickerUIData,\
\ CoreNames[0])"
- folder: NDS
extensions:
- .dsi
- .ids
- .nds
- .srl
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:268; os src/BizHawk.Client.Common/RomLoader.cs:1072"
note: the open dialog starts here, nothing is scanned
- folder: NES
extensions:
- .fds
- .nes
- .unf
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:270; os src/BizHawk.Client.Common/RomLoader.cs:1074"
note: "the open dialog starts here, nothing is scanned. Default core QuickNes (CorePickerUIData, CoreNames[0])"
- folder: NGP
extensions:
- .ngc
- .ngp
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:275; os src/BizHawk.Client.Common/RomLoader.cs:1076"
note: the open dialog starts here, nothing is scanned
- folder: O2
extensions:
- .o2
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:277; os src/BizHawk.Client.Common/RomLoader.cs:1078"
note: the open dialog starts here, nothing is scanned
- folder: PC Engine
name: PCE
aliases:
- PCECD
- SGX
- SGXCD
extensions:
- .pce
- .sgx
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:281; os src/BizHawk.Client.Common/RomLoader.cs:1080"
note: "the open dialog starts here, nothing is scanned. Default core TurboNyma (CorePickerUIData, CoreNames[0])"
- folder: PCFX
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:283"
note: the open dialog starts here, nothing is scanned
- folder: PSX
extensions:
- .exe
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:285; os src/BizHawk.Client.Common/RomLoader.cs:1082"
note: "the open dialog starts here, nothing is scanned. Default core Nymashock (CorePickerUIData, CoreNames[0])"
- folder: Satellaview
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:289"
note: "the open dialog starts here, nothing is scanned. Default core Bsnes115 (CorePickerUIData, CoreNames[0])"
- folder: Saturn
name: SAT
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:287"
note: the open dialog starts here, nothing is scanned
- folder: SG-1000
name: SG
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:291"
note: "the open dialog starts here, nothing is scanned. Default core Gpgx (CorePickerUIData, CoreNames[0])"
- folder: SMS
extensions:
- .gg
- .sg
- .sms
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:293; os src/BizHawk.Client.Common/RomLoader.cs:1084"
note: "the open dialog starts here, nothing is scanned. Default core Gpgx (CorePickerUIData, CoreNames[0])"
- folder: SNES
extensions:
- .bs
- .sfc
- .smc
- .xml
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:295; os src/BizHawk.Client.Common/RomLoader.cs:1086"
note: "the open dialog starts here, nothing is scanned. Default core Snes9X (CorePickerUIData, CoreNames[0])"
- folder: TI83
extensions:
- .83g
- .83l
- .83p
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:297; os src/BizHawk.Client.Common/RomLoader.cs:1088"
note: "the open dialog starts here, nothing is scanned. Default core Emu83 (CorePickerUIData, CoreNames[0])"
- folder: TIC80
extensions:
- .tic
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:299; os src/BizHawk.Client.Common/RomLoader.cs:1090"
note: the open dialog starts here, nothing is scanned
- folder: Uzebox
name: UZE
extensions:
- .uze
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:301; os src/BizHawk.Client.Common/RomLoader.cs:1092"
note: the open dialog starts here, nothing is scanned
- folder: VB
extensions:
- .vb
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:303; os src/BizHawk.Client.Common/RomLoader.cs:1094"
note: the open dialog starts here, nothing is scanned
- folder: VEC
extensions:
- .vec
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:305; os src/BizHawk.Client.Common/RomLoader.cs:1096"
note: the open dialog starts here, nothing is scanned
- folder: WonderSwan
name: WSWAN
extensions:
- .pc2
- .ws
- .wsc
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:307; os src/BizHawk.Client.Common/RomLoader.cs:1098"
note: the open dialog starts here, nothing is scanned
- folder: ZXSpectrum
extensions:
- .dsk
- .ipf
- .pzx
- .tap
- .tzx
emulator: EmuHawk
source_ref: "os src/BizHawk.Client.Common/config/PathEntryCollection.cs:309; os src/BizHawk.Client.Common/RomLoader.cs:1100"
note: the open dialog starts here, nothing is scanned
File diff suppressed because it is too large. Load diff
+836
View File
@@ -0,0 +1,836 @@
setup: crossmix-os
name: CrossMix-OS
platform: retroarch
sources:
os:
repo: "https://github.com/cizia64/CrossMix-OS"
commit: 206d612fdef83972ed54a17de955125d0c0b3528
roms_root:
path: /mnt/SDCARD/Roms
from_bios: ../Roms
source_ref: "os RetroArch/retroarch.cfg:3202"
case_sensitive: false
case_ref: "os System/usr/trimui/scripts/load_launcher.sh:23-41"
notes:
- Each Emus/<SYS>/config.json points rompath at ../../Roms/<SYS>. Box art lives in /mnt/SDCARD/Imgs/<SYS>,
outside Roms.
- The stock TrimUI MainUI that lists the games is closed source. It reads extlist and hidebios from config.json.
- "The default core is the first launchlist entry with a launch script, unless a per-game or per-system\
\ preset exists (os System/usr/trimui/scripts/load_launcher.sh:23-41)."
folders:
- folder: ADVMAME
extensions:
- .zip
emulator: standalone
source_ref: "os Emus/ADVMAME/config.json:9"
note: "default launcher default.sh (Emus/ADVMAME/default.sh), names no libretro core"
- folder: AMIGA
emulator: standalone
source_ref: "os Emus/AMIGA/config.json:9"
note: "default launcher default.sh (Emus/AMIGA/default.sh), names no libretro core"
- folder: AMIGACD
emulator: standalone
source_ref: "os Emus/AMIGACD/config.json:7"
note: "default launcher default.sh (Emus/AMIGACD/default.sh), names no libretro core"
- folder: AMIGACDTV
emulator: standalone
source_ref: "os Emus/AMIGACDTV/config.json:7"
note: "default launcher default.sh (Emus/AMIGACDTV/default.sh), names no libretro core"
- folder: ARDUBOY
core: ardens
emulator: retroarch
source_ref: "os Emus/ARDUBOY/config.json:7"
note: "default launcher Ardens (Emus/ARDUBOY/ardens.sh)"
- folder: ATARI2600
extensions:
- .7z
- .a26
- .bin
- .zip
core: stella2014
emulator: retroarch
source_ref: "os Emus/ATARI2600/config.json:9"
note: "default launcher Stella2014 (Emus/ATARI2600/stella2014.sh)"
- folder: ATARI5200
emulator: standalone
source_ref: "os Emus/ATARI5200/config.json:9"
note: "default launcher default.sh (Emus/ATARI5200/default.sh), names no libretro core"
- folder: ATARI7800
emulator: standalone
source_ref: "os Emus/ATARI7800/config.json:9"
note: "default launcher default.sh (Emus/ATARI7800/default.sh), names no libretro core"
- folder: ATARI800
emulator: standalone
source_ref: "os Emus/ATARI800/config.json:9"
note: "default launcher default.sh (Emus/ATARI800/default.sh), names no libretro core"
- folder: ATARIST
emulator: standalone
source_ref: "os Emus/ATARIST/config.json:7"
note: "default launcher default.sh (Emus/ATARIST/default.sh), names no libretro core"
- folder: ATOMISWAVE
core: flycast
emulator: retroarch
source_ref: "os Emus/ATOMISWAVE/config.json:10"
note: "default launcher Flycast (Libretro) (Emus/ATOMISWAVE/flycast.sh)"
- folder: C64
emulator: standalone
source_ref: "os Emus/C64/config.json:9"
note: "default launcher default.sh (Emus/C64/default.sh), names no libretro core"
- folder: CANNONBALL
extensions:
- '.88'
- .game
emulator: standalone
source_ref: "os Emus/CANNONBALL/config.json:9"
note: "default launcher default.sh (Emus/CANNONBALL/default.sh), names no libretro core"
- folder: CAVESTORY
emulator: standalone
source_ref: "os Emus/CAVESTORY/config.json:9"
note: "default launcher default.sh (Emus/CAVESTORY/default.sh), names no libretro core"
- folder: CHAILOVE
emulator: standalone
source_ref: "os Emus/CHAILOVE/config.json:9"
note: "default launcher default.sh (Emus/CHAILOVE/default.sh), names no libretro core"
- folder: CHANNELF
emulator: standalone
source_ref: "os Emus/CHANNELF/config.json:9"
note: "default launcher default.sh (Emus/CHANNELF/default.sh), names no libretro core"
- folder: COLECO
emulator: standalone
source_ref: "os Emus/COLECO/config.json:9"
note: "default launcher default.sh (Emus/COLECO/default.sh), names no libretro core"
- folder: COLSGM
emulator: standalone
source_ref: "os Emus/COLSGM/config.json:9"
note: "default launcher default.sh (Emus/COLSGM/default.sh), names no libretro core"
- folder: CPC
emulator: standalone
source_ref: "os Emus/CPC/config.json:7"
note: "default launcher default.sh (Emus/CPC/default.sh), names no libretro core"
- folder: CPET
emulator: standalone
source_ref: "os Emus/CPET/config.json:9"
note: "default launcher default.sh (Emus/CPET/default.sh), names no libretro core"
- folder: CPLUS4
emulator: standalone
source_ref: "os Emus/CPLUS4/config.json:9"
note: "default launcher default.sh (Emus/CPLUS4/default.sh), names no libretro core"
- folder: CPS1
extensions:
- .zip
core: fbalpha2012
emulator: retroarch
source_ref: "os Emus/CPS1/config.json:9"
note: "default launcher FB Alpha 2012 (Emus/CPS1/fba2012.sh)"
- folder: CPS2
extensions:
- .zip
core: fbalpha2012
emulator: retroarch
source_ref: "os Emus/CPS2/config.json:10"
note: "default launcher FB Alpha 2012 (Emus/CPS2/fba2012.sh)"
- folder: CPS3
extensions:
- .zip
core: fbalpha2012
emulator: retroarch
source_ref: "os Emus/CPS3/config.json:10"
note: "default launcher FB Alpha 2012 (Emus/CPS3/fba2012.sh)"
- folder: DAPHNE/roms
name: DAPHNE
extensions:
- .daphne
core: km_daphne_xtreme
emulator: retroarch
source_ref: "os Emus/DAPHNE/config.json:5"
note: "default launcher Daphne (Emus/DAPHNE/daphne.sh)"
- folder: DC
core: flycast
emulator: retroarch
source_ref: "os Emus/DC/config.json:10"
note: "default launcher Flycast (Libretro) (Emus/DC/flycast.sh)"
- folder: DINOTHAWR
emulator: standalone
source_ref: "os Emus/DINOTHAWR/config.json:9"
note: "default launcher default.sh (Emus/DINOTHAWR/default.sh), names no libretro core"
- folder: DOOM
extensions:
- .7z
- .ipk3
- .iwad
- .pk3
- .pwad
- .wad
- .zip
emulator: standalone
source_ref: "os Emus/DOOM/config.json:9"
note: "default launcher default.sh (Emus/DOOM/default.sh), names no libretro core"
- folder: DOS
emulator: standalone
source_ref: "os Emus/DOS/config.json:9"
note: "default launcher default.sh (Emus/DOS/default.sh), names no libretro core"
- folder: EASYRPG
extensions:
- .easyrpg
- .ldb
- .zip
emulator: standalone
source_ref: "os Emus/EASYRPG/config.json:7"
note: "default launcher default.sh (Emus/EASYRPG/default.sh), names no libretro core"
- folder: ENTERPRISE
emulator: standalone
source_ref: "os Emus/ENTERPRISE/config.json:9"
note: "default launcher default.sh (Emus/ENTERPRISE/default.sh), names no libretro core"
- folder: FBNEO
extensions:
- .zip
core: fbneo
emulator: retroarch
source_ref: "os Emus/FBNEO/config.json:8"
note: "default launcher FB NEO (Emus/FBNEO/FBNEO.sh)"
- folder: FC
extensions:
- .7z
- .fds
- .nes
- .unf
- .unif
- .zip
core: fceumm
emulator: retroarch
source_ref: "os Emus/FC/config.json:7"
note: "default launcher FCEUMM (Emus/FC/fceumm.sh)"
- folder: FDS
extensions:
- .7z
- .fds
- .nes
- .unf
- .unif
- .zip
emulator: standalone
source_ref: "os Emus/FDS/config.json:7"
note: "default launcher default.sh (Emus/FDS/default.sh), names no libretro core"
- folder: FLASHBACK
extensions:
- .aba
- .lev
- .map
- .seq
emulator: standalone
source_ref: "os Emus/FLASHBACK/config.json:9"
note: "default launcher default.sh (Emus/FLASHBACK/default.sh), names no libretro core"
- folder: GB
extensions:
- .7z
- .bin
- .dmg
- .gb
- .gbc
- .zip
core: gambatte
emulator: retroarch
source_ref: "os Emus/GB/config.json:7"
note: "default launcher GAMBATTE (Emus/GB/gambatte.sh)"
- folder: GBA
extensions:
- .7z
- .agb
- .bin
- .gba
- .gbz
- .zip
core: mgba
emulator: retroarch
source_ref: "os Emus/GBA/config.json:7"
note: "default launcher mGBA (Emus/GBA/mgba.sh)"
- folder: GBC
extensions:
- .7z
- .bin
- .dmg
- .gb
- .gbc
- .zip
core: gambatte
emulator: retroarch
source_ref: "os Emus/GBC/config.json:7"
note: "default launcher GAMBATTE (Emus/GBC/gambatte.sh)"
- folder: GG
extensions:
- .7z
- .bin
- .gg
- .sms
- .zip
core: picodrive
emulator: retroarch
source_ref: "os Emus/GG/config.json:9"
note: "default launcher PicoDrive (Emus/GG/picodrive.sh)"
- folder: GW
emulator: standalone
source_ref: "os Emus/GW/config.json:9"
note: "default launcher default.sh (Emus/GW/default.sh), names no libretro core"
- folder: INTELLIVISION
emulator: standalone
source_ref: "os Emus/INTELLIVISION/config.json:7"
note: "default launcher default.sh (Emus/INTELLIVISION/default.sh), names no libretro core"
- folder: JAVA
extensions:
- .jar
emulator: standalone
source_ref: "os Emus/JAVA/config.json:9"
note: "default launcher Launch freej2me (Emus/JAVA/launch.sh), names no libretro core"
- folder: LOWRESNX
extensions:
- .nx
emulator: standalone
source_ref: "os Emus/LOWRESNX/config.json:9"
note: "default launcher default.sh (Emus/LOWRESNX/default.sh), names no libretro core"
- folder: LUTRO
emulator: standalone
source_ref: "os Emus/LUTRO/config.json:7"
note: "default launcher default.sh (Emus/LUTRO/default.sh), names no libretro core"
- folder: LYNX
emulator: standalone
source_ref: "os Emus/LYNX/config.json:9"
note: "default launcher default.sh (Emus/LYNX/default.sh), names no libretro core"
- folder: MAME
core: mame
emulator: retroarch
source_ref: "os Emus/MAME/config.json:7"
note: "default launcher MAME - default(0.259) (Emus/MAME/mame.sh)"
- folder: MAME2003PLUS
extensions:
- .zip
core: mame2003_plus
emulator: retroarch
source_ref: "os Emus/MAME2003PLUS/config.json:9"
note: "default launcher MAME 2003-Plus (Emus/MAME2003PLUS/MAME2003-Plus.sh)"
- folder: MAME2010
extensions:
- .zip
emulator: standalone
source_ref: "os Emus/MAME2010/config.json:9"
note: "default launcher default.sh (Emus/MAME2010/default.sh), names no libretro core"
- folder: MD
extensions:
- .32x
- .68k
- .7z
- .bin
- .chd
- .gen
- .iso
- .md
- .smd
- .sms
- .zip
core: picodrive
emulator: retroarch
source_ref: "os Emus/MD/config.json:9"
note: "default launcher PicoDrive (Emus/MD/picodrive.sh)"
- folder: MDMSU
extensions:
- .32x
- .68k
- .7z
- .bin
- .chd
- .gen
- .iso
- .md
- .smd
- .sms
- .zip
core: genesis_plus_gx
emulator: retroarch
source_ref: "os Emus/MDMSU/config.json:9"
note: "default launcher GenesisPlusGX (Emus/MDMSU/genplus.sh)"
- folder: MEGADUCK
extensions:
- .7z
- .bin
- .zip
emulator: standalone
source_ref: "os Emus/MEGADUCK/config.json:9"
note: "default launcher default.sh (Emus/MEGADUCK/default.sh), names no libretro core"
- folder: MS
extensions:
- .7z
- .gg
- .rom
- .sg
- .sms
- .zip
core: picodrive
emulator: retroarch
source_ref: "os Emus/MS/config.json:8"
note: "default launcher PicoDrive (Emus/MS/picodrive.sh)"
- folder: MSX
core: bluemsx
emulator: retroarch
source_ref: "os Emus/MSX/config.json:9"
note: "default launcher Bluemsx (Emus/MSX/bluemsx.sh)"
- folder: MSX2
core: bluemsx
emulator: retroarch
source_ref: "os Emus/MSX2/config.json:9"
note: "default launcher Bluemsx (Emus/MSX2/bluemsx.sh)"
- folder: MUSIC
extensions:
- .asf
- .avi
- .bmp
- .flac
- .jpg
- .m3u
- .m4v
- .mkv
- .mp3
- .mp4
- .mpeg
- .mpg
- .ogg
- .png
- .rm
- .rmvb
- .ts
- .wma
- .wmv
emulator: standalone
source_ref: "os Emus/MUSIC/config.json:8"
note: "default launcher GMU Player (Emus/MUSIC/gmu.sh), names no libretro core"
- folder: N64
extensions:
- .7z
- .n64
- .v64
- .z64
- .zip
core: parallel_n64
emulator: retroarch
source_ref: "os Emus/N64/config.json:9"
note: "default launcher ParaLLEl N64 (Emus/N64/paralleln64.sh)"
- folder: N64DD
extensions:
- .7z
- .n64
- .ndd
- .v64
- .z64
- .zip
emulator: standalone
source_ref: "os Emus/N64DD/config.json:9"
note: "default launcher default.sh (Emus/N64DD/default.sh), names no libretro core"
- folder: NAOMI
core: flycast
emulator: retroarch
source_ref: "os Emus/NAOMI/config.json:10"
note: "default launcher Flycast (Libretro) (Emus/NAOMI/flycast.sh)"
- folder: NDS
extensions:
- .7z
- .nds
- .rar
- .zip
emulator: standalone
source_ref: "os Emus/NDS/config.json:8"
note: "default launcher Drastic Advanced (Emus/NDS/drastic.sh), names no libretro core"
- folder: NEOCD
emulator: standalone
source_ref: "os Emus/NEOCD/config.json:9"
note: "default launcher default.sh (Emus/NEOCD/default.sh), names no libretro core"
- folder: NEOGEO
extensions:
- .7z
- .neo
- .zip
core: fbneo
emulator: retroarch
source_ref: "os Emus/NEOGEO/config.json:9"
note: "default launcher FBNEO (Emus/NEOGEO/fbneo.sh)"
- folder: NGC
extensions:
- .7z
- .ngc
- .ngp
- .zip
emulator: standalone
source_ref: "os Emus/NGC/config.json:7"
note: "default launcher default.sh (Emus/NGC/default.sh), names no libretro core"
- folder: NGP
extensions:
- .7z
- .ngc
- .ngp
- .zip
emulator: standalone
source_ref: "os Emus/NGP/config.json:9"
note: "default launcher default.sh (Emus/NGP/default.sh), names no libretro core"
- folder: OPENBOR
extensions:
- .pak
emulator: standalone
source_ref: "os Emus/OPENBOR/config.json:8"
note: "default launcher default.sh (Emus/OPENBOR/default.sh), names no libretro core"
- folder: PALMOS
emulator: standalone
source_ref: "os Emus/PALMOS/config.json:9"
note: "default launcher default.sh (Emus/PALMOS/default.sh), names no libretro core"
- folder: PANASONIC
emulator: standalone
source_ref: "os Emus/PANASONIC/config.json:9"
note: "default launcher default.sh (Emus/PANASONIC/default.sh), names no libretro core"
- folder: PC88
extensions:
- .d88
- .zip
emulator: standalone
source_ref: "os Emus/PC88/config.json:9"
note: "default launcher default.sh (Emus/PC88/default.sh), names no libretro core"
- folder: PC98
extensions:
- .hdi
- .zip
emulator: standalone
source_ref: "os Emus/PC98/config.json:9"
note: "default launcher default.sh (Emus/PC98/default.sh), names no libretro core"
- folder: PCE
extensions:
- .7z
- .ccd
- .chd
- .cue
- .img
- .iso
- .pce
- .zip
emulator: standalone
source_ref: "os Emus/PCE/config.json:9"
note: "default launcher default.sh (Emus/PCE/default.sh), names no libretro core"
- folder: PCECD
extensions:
- .chd
- .cue
- .pce
emulator: standalone
source_ref: "os Emus/PCECD/config.json:7"
note: "default launcher default.sh (Emus/PCECD/default.sh), names no libretro core"
- folder: PCFX
emulator: standalone
source_ref: "os Emus/PCFX/config.json:9"
note: "default launcher default.sh (Emus/PCFX/default.sh), names no libretro core"
- folder: PGM
extensions:
- .zip
core: fbalpha2012
emulator: retroarch
source_ref: "os Emus/PGM/config.json:8"
note: "default launcher FB ALPHA 2012 (Emus/PGM/fba2012.sh)"
- folder: PICO
extensions:
- .launch
- .p8
- .png
core: fake08
emulator: retroarch
source_ref: "os Emus/PICO/config.json:7"
note: "default launcher FAKE-08 (Emus/PICO/fake08.sh)"
- folder: POKEMINI
emulator: standalone
source_ref: "os Emus/POKEMINI/config.json:9"
note: "default launcher default.sh (Emus/POKEMINI/default.sh), names no libretro core"
- folder: PORTS
extensions:
- .sh
emulator: standalone
source_ref: "os Emus/PORTS/config.json:9"
note: "default launcher Battery Saver (Emus/PORTS/launch.sh), names no libretro core"
- folder: PS
extensions:
- .cbn
- .ccd
- .chd
- .cue
- .img
- .iso
- .m3u
- .mdf
- .pbp
- .toc
core: pcsx_rearmed
emulator: retroarch
source_ref: "os Emus/PS/config.json:9"
note: "default launcher PCSX-ReArmed (Emus/PS/pcsx.sh)"
- folder: PSP
emulator: standalone
source_ref: "os Emus/PSP/config.json:9"
note: "default launcher PPSSPP 1.17.1 - OpenGL (Emus/PSP/ppsspp_1.17.1_gl.sh), names no libretro core"
- folder: PSPMINIS
emulator: standalone
source_ref: "os Emus/PSPMINIS/config.json:8"
note: "default launcher default.sh (Emus/PSPMINIS/default.sh), names no libretro core"
- folder: SATELLAVIEW
extensions:
- .bsx
- .dx2
- .fig
- .gd3
- .gd7
- .sfc
- .smc
- .swc
- .zip
emulator: standalone
source_ref: "os Emus/SATELLAVIEW/config.json:9"
note: "default launcher default.sh (Emus/SATELLAVIEW/default.sh), names no libretro core"
- folder: SATURN
extensions:
- .ccd
- .chd
- .cue
- .iso
- .m3u
- .mds
- .zip
core: yabasanshiro
emulator: retroarch
source_ref: "os Emus/SATURN/config.json:9"
note: "default launcher Yabasanshiro (Emus/SATURN/yabasanshiro.sh)"
- folder: SCUMMVM
extensions:
- .launch
- .scummvm
- .squashfs
core: scummvm
emulator: retroarch
source_ref: "os Emus/SCUMMVM/config.json:7"
note: "default launcher ScummVM 2.8 (Emus/SCUMMVM/scummvm-2.8.sh)"
- folder: SEGA32X
extensions:
- .32x
- .68k
- .7z
- .bin
- .chd
- .gen
- .iso
- .md
- .smd
- .sms
- .zip
emulator: standalone
source_ref: "os Emus/SEGA32X/config.json:7"
note: "default launcher default.sh (Emus/SEGA32X/default.sh), names no libretro core"
- folder: SEGACD
extensions:
- .7z
- .bin
- .ccd
- .chd
- .cue
- .iso
- .sub
- .wav
- .zip
core: picodrive
emulator: retroarch
source_ref: "os Emus/SEGACD/config.json:9"
note: "default launcher PicoDrive (Emus/SEGACD/picodrive.sh)"
- folder: SFC
extensions:
- .7z
- .bs
- .fig
- .sfc
- .smc
- .st
- .zip
core: snes9x
emulator: retroarch
source_ref: "os Emus/SFC/config.json:7"
note: "default launcher SNES9x (Emus/SFC/snes9x.sh)"
- folder: SFCMSU
extensions:
- .7z
- .bsx
- .dx2
- .fig
- .gd3
- .gd7
- .sfc
- .smc
- .swc
- .zip
emulator: standalone
source_ref: "os Emus/SFCMSU/config.json:9"
note: "default launcher default.sh (Emus/SFCMSU/default.sh), names no libretro core"
- folder: SFX
emulator: standalone
source_ref: "os Emus/SFX/config.json:9"
note: "default launcher default.sh (Emus/SFX/default.sh), names no libretro core"
- folder: SG1000
extensions:
- .7z
- .bin
- .gg
- .mv
- .rom
- .sg
- .sms
- .zip
core: picodrive
emulator: retroarch
source_ref: "os Emus/SG1000/config.json:7"
note: "default launcher PicoDrive (Emus/SG1000/picodrive.sh)"
- folder: SGB
emulator: standalone
source_ref: "os Emus/SGB/config.json:7"
note: "default launcher default.sh (Emus/SGB/default.sh), names no libretro core"
- folder: SUFAMI
extensions:
- .7z
- .bsx
- .dx2
- .fig
- .gd3
- .gd7
- .sfc
- .smc
- .swc
- .zip
emulator: standalone
source_ref: "os Emus/SUFAMI/config.json:9"
note: "default launcher default.sh (Emus/SUFAMI/default.sh), names no libretro core"
- folder: SUPERVISION
extensions:
- .7z
- .bin
- .sv
- .zip
emulator: standalone
source_ref: "os Emus/SUPERVISION/config.json:9"
note: "default launcher default.sh (Emus/SUPERVISION/default.sh), names no libretro core"
- folder: THOMSON
emulator: standalone
source_ref: "os Emus/THOMSON/config.json:7"
note: "default launcher default.sh (Emus/THOMSON/default.sh), names no libretro core"
- folder: TI83
extensions:
- .83p
- .zip
emulator: standalone
source_ref: "os Emus/TI83/config.json:9"
note: "default launcher default.sh (Emus/TI83/default.sh), names no libretro core"
- folder: TIC
emulator: standalone
source_ref: "os Emus/TIC/config.json:9"
note: "default launcher default.sh (Emus/TIC/default.sh), names no libretro core"
- folder: TYRQUAKE
emulator: standalone
source_ref: "os Emus/TYRQUAKE/config.json:9"
note: "default launcher default.sh (Emus/TYRQUAKE/default.sh), names no libretro core"
- folder: UZEBOX
emulator: standalone
source_ref: "os Emus/UZEBOX/config.json:7"
note: "default launcher default.sh (Emus/UZEBOX/default.sh), names no libretro core"
- folder: VB
extensions:
- .7z
- .bin
- .vb
- .vboy
- .zip
emulator: standalone
source_ref: "os Emus/VB/config.json:9"
note: "default launcher default.sh (Emus/VB/default.sh), names no libretro core"
- folder: VECTREX
emulator: standalone
source_ref: "os Emus/VECTREX/config.json:7"
note: "default launcher default.sh (Emus/VECTREX/default.sh), names no libretro core"
- folder: VIC20
emulator: standalone
source_ref: "os Emus/VIC20/config.json:9"
note: "default launcher default.sh (Emus/VIC20/default.sh), names no libretro core"
- folder: VIDEOPAC
emulator: standalone
source_ref: "os Emus/VIDEOPAC/config.json:7"
note: "default launcher default.sh (Emus/VIDEOPAC/default.sh), names no libretro core"
- folder: VIDEOS
extensions:
- .7z
- .asf
- .avi
- .bmp
- .jpg
- .launch
- .m3u
- .m3u8
- .m4v
- .mkv
- .mp3
- .mp4
- .mpeg
- .mpg
- .png
- .rm
- .rmvb
- .ts
- .wma
- .wmv
emulator: standalone
source_ref: "os Emus/VIDEOS/config.json:8"
note: "default launcher mpv (Emus/VIDEOS/mpv.sh), names no libretro core"
- folder: VIDEOTON
emulator: standalone
source_ref: "os Emus/VIDEOTON/config.json:9"
note: "default launcher default.sh (Emus/VIDEOTON/default.sh), names no libretro core"
- folder: VMAC
emulator: standalone
source_ref: "os Emus/VMAC/config.json:9"
note: "default launcher default.sh (Emus/VMAC/default.sh), names no libretro core"
- folder: WS
extensions:
- .7z
- .pc2
- .ws
- .wsc
- .zip
emulator: standalone
source_ref: "os Emus/WS/config.json:7"
note: "default launcher default.sh (Emus/WS/default.sh), names no libretro core"
- folder: WSC
extensions:
- .7z
- .pc2
- .ws
- .wsc
- .zip
emulator: standalone
source_ref: "os Emus/WSC/config.json:9"
note: "default launcher default.sh (Emus/WSC/default.sh), names no libretro core"
- folder: X1
emulator: standalone
source_ref: "os Emus/X1/config.json:9"
note: "default launcher default.sh (Emus/X1/default.sh), names no libretro core"
- folder: X68000
emulator: standalone
source_ref: "os Emus/X68000/config.json:7"
note: "default launcher default.sh (Emus/X68000/default.sh), names no libretro core"
- folder: XRICK
emulator: standalone
source_ref: "os Emus/XRICK/config.json:9"
note: "default launcher default.sh (Emus/XRICK/default.sh), names no libretro core"
- folder: ZQUEST
extensions:
- .launch
- .qst
- .zip
emulator: standalone
source_ref: "os Emus/ZQUEST/config.json:9"
note: "default launcher default.sh (Emus/ZQUEST/default.sh), names no libretro core"
- folder: ZXS
emulator: standalone
source_ref: "os Emus/ZXS/config.json:7"
note: "default launcher default.sh (Emus/ZXS/default.sh), names no libretro core"
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+646
View File
@@ -0,0 +1,646 @@
setup: koriki
name: Koriki
platform: retroarch
sources:
os:
repo: "https://github.com/Rparadise-Team/Koriki"
commit: 8513071c9bcffe9603ec3b3b760ad9385906a6a5
roms_root:
path: /mnt/SDCARD/Roms
from_bios: ../Roms
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:4"
case_sensitive: false
case_ref: "os src/simplemenu-beta/src/logic/logic.c:566-575"
media:
- name: Imgs
source_ref: "os src/simplemenu-beta/src/logic/logic.c:760-775"
notes:
- "SimpleMenu lists only files whose extension is in romExts, compared case-insensitively (os src/simplemenu-beta/src/logic/logic.c:990-1005)."
- "The first launcher of execs is the active one (os src/simplemenu-beta/src/logic/config.c:1127)."
- The shipped SimpleMenu binary is built from a submodule this tree does not hold. The in-tree copy src/simplemenu-beta
was read.
folders:
- folder: AMIGA
extensions:
- .7z
- .adf
- .adz
- .ccd
- .chd
- .cue
- .dms
- .fdi
- .hdf
- .hdz
- .info
- .ipf
- .iso
- .lha
- .m3u
- .mds
- .nrg
- .rp9
- .slave
- .uae
- .zip
core: puae
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:4"
note: launchers puae_libretro, uae4arm_libretro, puae2021_libretro
- folder: ARCADE
name: MAME
extensions:
- .zip
core: mame2003_plus
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:156"
note: launchers mame2003_plus_libretro, fbneo_libretro, fbalpha2012_libretro, km_mame2003_xtreme_amped_libretro,
km_mame2003_xtreme_libretro, mame2000_libretro, mame2010_libretro, mame2003_libretro, mame2003_xtreme_libretro
- folder: ARDUBOY
name: ARDUINO
extensions:
- .hex
core: arduous
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:19"
note: launchers arduous_libretro
- folder: ATARI
name: ATARI 2600
extensions:
- .7z
- .a26
- .bin
- .zip
core: stella2014
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:24"
note: launchers stella2014_libretro
- folder: ATARIST
name: ATARI ST
extensions:
- .7z
- .a78
- .rom
- .zip
core: hatari
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:45"
note: launchers hatari_libretro, hatari_plus_libretro
- folder: C64
name: COMMODORE 64
extensions:
- .7z
- .bin
- .crt
- .d64
- .g64
- .t64
- .zip
core: vice_x64
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:50"
note: launchers vice_x64_libretro
- folder: CPC
name: AMSTRAD CPC
extensions:
- .7z
- .cdt
- .cpr
- .dsk
- .m3u
- .sna
- .tap
- .voc
- .zip
core: crocods
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:9"
note: launchers crocods_libretro
- folder: CPS1
extensions:
- .zip
core: fbalpha2012_cps1
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:60"
note: launchers fbalpha2012_cps1_libretro, fbneo_libretro, fbalpha_libretro, fbneo_miyoo_libretro, fbneo_standalone
- folder: CPS2
extensions:
- .zip
core: fbalpha2012_cps2
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:66"
note: launchers fbalpha2012_cps2_libretro, fbneo_libretro, fbalpha_libretro, fbneo_miyoo_libretro, fbneo_standalone
- folder: CPS3
extensions:
- .zip
core: fbalpha2012_cps3
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:72"
note: launchers fbalpha2012_cps3_libretro, fbneo_libretro, fbalpha_libretro, fbneo_miyoo_libretro, fbneo_standalone
- folder: DAPHNE
extensions:
- .zip
core: daphne
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:78"
note: launchers daphne_libretro
- folder: DOOM
extensions:
- .7z
- .wad
- .zip
core: prboom
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:88"
note: launchers prboom_libretro. romDirs DOOM/DOOM, DOOM/DOOM2
- folder: DOS
extensions:
- .7z
- .bat
- .com
- .cue
- .dosz
- .exe
- .iso
- .m3u
- .vhd
- .zip
core: dosbox_pure
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:83"
note: launchers dosbox_pure_libretro, dosbox_pure_miyoo_libretro, dosbox_standalone
- folder: FBA
name: FINALBURN ALPHA
extensions:
- .zip
core: fbalpha2012
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:98"
note: launchers fbalpha2012_libretro, fbalpha_libretro, fbneo_libretro, fbneo_miyoo_libretro, fb_32b_libretro,
fbneo_standalone
- folder: FBNEO
name: FINALBURN NEO
extensions:
- .zip
core: fbneo
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:104"
note: launchers fbneo_libretro, fb_32b_libretro, fbalpha_libretro, fbneo_miyoo_libretro, fbneo_standalone
- folder: FC
name: NES
extensions:
- .7z
- .nes
- .zip
core: fceumm
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:184"
note: launchers fceumm_libretro, nestopia_libretro, nestopia_miyoo_libretro
- folder: FDS
extensions:
- .7z
- .fds
- .zip
core: fceumm
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:93"
note: launchers fceumm_libretro, nestopia_libretro, nestopia_miyoo_libretro
- folder: FIFTYTWOHUNDRED
name: ATARI 5200
extensions:
- .7z
- .a52
- .bin
- .zip
core: a5200
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:29"
note: launchers a5200_libretro, atari800_libretro
- folder: GB
name: GAME BOY
extensions:
- .7z
- .gb
- .gz
- .zip
core: gambatte
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:116"
note: launchers gambatte_libretro, gearboy_libretro, sameboy_libretro, tgbdual_libretro, tgbdual_libretro_server,
tgbdual_libretro_client, DoubleCherryGB_miyoo_libretro, DoubleCherryGB_libretro
- folder: GBA
name: GAME BOY ADVANCE
extensions:
- .7z
- .gba
- .zip
core: gpsp_plus
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:128"
note: launchers gpsp_plus_libretro, mgba_plus_libretro, gpsp_libretro, mgba_libretro, mednafen_gba_libretro,
meteor_libretro, vbam_libretro, vba_next_libretro
- folder: GBC
name: GAME BOY COLOR
extensions:
- .7z
- .gbc
- .zip
core: gambatte
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:122"
note: launchers gambatte_libretro, gearboy_libretro, sameboy_libretro, tgbdual_libretro, tgbdual_libretro_server,
tgbdual_libretro_client, DoubleCherryGB_miyoo_libretro, DoubleCherryGB_libretro
- folder: GG
name: GAME GEAR
extensions:
- .7z
- .gg
- .zip
core: picodrive
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:140"
note: launchers picodrive_libretro, genesis_plus_gx_libretro, gearsystem_libretro, picodrive_standalone,
picodrive_netplay_libretro
- folder: GW
name: GAME & WATCH
extensions:
- .7z
- .mgw
- .zip
core: gw
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:110"
note: launchers gw_libretro, gw_miyoo_libretro
- folder: INTELLI
name: INTELLIVISION
extensions:
- .bin
- .int
core: freeintv
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:151"
note: launchers freeintv_libretro
- folder: LYNX
name: ATARI LYNX
extensions:
- .7z
- .lnx
- .zip
core: handy
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:39"
note: launchers handy_libretro, mednafen_lynx_libretro
- folder: MD
name: SEGA GENESIS
extensions:
- .7z
- .bin
- .gen
- .md
- .mdx
- .smd
- .zip
core: picodrive
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:268"
note: launchers picodrive_libretro, genesis_plus_gx_libretro, picodrive_standalone, picodrive_netplay_libretro,
genesis_plus_gx_mod_libretro
- folder: MS
name: MASTER SYSTEM
extensions:
- .7z
- .sms
- .zip
core: picodrive
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:162"
note: launchers picodrive_libretro, genesis_plus_gx_libretro, gearsystem_libretro, picodrive_standalone,
picodrive_netplay_libretro, smsplus_libretro
- folder: MSU1
name: MSU-1
extensions:
- .7z
- .sfc
- .smc
- .zip
core: snes9x
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:189"
note: launchers msu1_libretro, snes9x_libretro
- folder: MSUMD
name: MSU-MD
extensions:
- .md
core: genesis_plus_gx
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:195"
note: launchers MSU-MD_libretro
- folder: MSX
extensions:
- .7z
- .cas
- .col
- .dsk
- .m3u
- .mx1
- .mx2
- .ri
- .rom
- .sc
- .sg
- .zip
core: bluemsx
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:201"
note: launchers bluemsx_libretro, fmsx_libretro
- folder: NDS
name: NINTENDO DS
extensions:
- .7z
- .nds
- .rar
- .zip
core: drastic_standalone
emulator: standalone
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:134"
note: launchers drastic_standalone
- folder: NEOCD
name: NEO GEO CD
extensions:
- .chd
- .zip
core: neocd
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:173"
note: launchers neocd_libretro
- folder: NEOGEO
name: NEO GEO
extensions:
- .7z
- .zip
core: fbalpha2012_neogeo
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:167"
note: launchers fbalpha2012_neogeo_libretro, fbneo_libretro, fb_32b_libretro, fbalpha2012_neogeo_miyoo_libretro,
fbalpha_libretro, fbneo_miyoo_libretro, fbneo_standalone
- folder: NGP
name: NEO GEO POCKET
extensions:
- .7z
- .ngc
- .ngp
- .ngpc
- .npc
- .zip
core: race
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:178"
note: launchers race_libretro, mednafen_ngp_libretro
- folder: ODYSSEY2
extensions:
- .bin
- .zip
core: o2em
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:55"
note: launchers o2em_libretro
- folder: OPENBOR
extensions:
- .pak
core: openbor_standalone_plus
emulator: standalone
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:206"
note: launchers openbor_standalone_plus, openbor_standalone, openbor_standalone_old, openbor_standalone_lns
- folder: PC98
extensions:
- .fdi
- .hdi
core: nekop2
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:216"
note: launchers nekop2_libretro, np2kai_libretro
- folder: PCE
name: PC ENGINE
extensions:
- .7z
- .cue
- .pce
- .tg16
- .zip
core: mednafen_pce_fast
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:221"
note: launchers mednafen_pce_fast_libretro, mednafen_pce_libretro, mednafen_supergrafx_libretro
- folder: PCECD
name: PC ENGINE CD
extensions:
- .7z
- .chd
- .cue
- .pce
- .tg16
- .zip
core: mednafen_pce_fast
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:226"
note: launchers mednafen_pce_fast_libretro, mednafen_pce_libretro, mednafen_supergrafx_libretro
- folder: PICO
name: PICO-8
extensions:
- .p8
- .p8.png
- .png
core: pico_standalone
emulator: standalone
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:231"
note: launchers pico_standalone, fake08_libretro, retro8_libretro
- folder: POKE
name: POKEMON MINI
extensions:
- .7z
- .min
- .zip
core: pokemini
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:242"
note: launchers pokemini_libretro
- folder: PS
name: PLAYSTATION
extensions:
- .chd
- .cue
- .img
- .iso
- .m3u
- .mdf
- .pbp
- .zip
core: pcsx_standalone
emulator: standalone
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:237"
note: launchers pcsx_standalone, pcsx_rearmed_miyoo_libretro, pcsx_rearmed_libretro, pcsx_rearmed_libretro_old,
pcsx_rearmed_libretro_shaun
- folder: QUAKE
extensions:
- .fbl
core: tyrquake
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:248"
note: launchers tyrquake_libretro. romDirs QUAKE/id1, QUAKE/hipnotic, QUAKE/rogue, QUAKE/dopa
- folder: SCUMMVM
extensions:
- .scummvm
core: scummvm
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:253"
note: launchers scummvm_libretro
- folder: SEGACD
name: SEGA CD
extensions:
- .bin
- .chd
- .cue
core: picodrive
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:263"
note: launchers picodrive_libretro, genesis_plus_gx_libretro, picodrive_standalone, picodrive_netplay_libretro
- folder: SEGASGONE
name: SEGA SG-1000
extensions:
- .7z
- .sg
- .zip
core: gearsystem
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:273"
note: launchers gearsystem_libretro, genesis_plus_gx_libretro, picodrive_libretro, picodrive_standalone,
picodrive_netplay_libretro
- folder: SEVENTYEIGHTHUNDRED
name: ATARI 7800
extensions:
- .7z
- .a78
- .bin
- .zip
core: prosystem
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:34"
note: launchers prosystem_libretro
- folder: SFC
name: SNES
extensions:
- .7z
- .sfc
- .smc
- .zip
core: snes9x2005_plus
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:283"
note: launchers snes9x2005_plus_libretro, snes9x2005_libretro, snes9x2002_libretro, snes9x2010_libretro,
snes9x_libretro, snes9x_next_libretro, mednafen_supafaust_plus_libretro, mednafen_supafaust_libretro,
pocketsnes_standalone
- folder: SGB
extensions:
- .7z
- .gb
- .gbc
- .zip
core: msgb
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:278"
note: launchers msgb_libretro, tgbdual_libretro
- folder: SUPERVISION
extensions:
- .7z
- .bin
- .sv
- .zip
core: potator
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:288"
note: launchers potator_libretro
- folder: THIRTYTWOX
name: SEGA 32X
extensions:
- .32x
- .7z
- .zip
core: picodrive
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:258"
note: launchers picodrive_libretro, picodrive_standalone, picodrive_netplay_libretro
- folder: TIC
name: TIC-80
extensions:
- .7z
- .tic
core: tic80
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:294"
note: launchers tic80_libretro
- folder: VB
name: VIRTUAL BOY
extensions:
- .7z
- .bin
- .vb
- .vboy
- .zip
core: mednafen_vb
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:299"
note: launchers mednafen_vb_libretro
- folder: WOLF3D
extensions:
- .ecwolf
core: ecwolf
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:304"
note: launchers ecwolf_libretro
- folder: WS
name: WONDERSWAN
extensions:
- .7z
- .pc2
- .ws
- .wsc
- .zip
core: mednafen_wswan
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:309"
note: launchers mednafen_wswan_libretro
- folder: X68000
extensions:
- .2hd
- .7z
- .88d
- .cmd
- .d88
- .dim
- .dup
- .hdf
- .hdm
- .img
- .m3u
- .xdf
- .zip
core: px68k
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:315"
note: launchers px68k_libretro, px68k_miyoo_libretro
- folder: ZXS
name: ZX SPECTRUM
extensions:
- .7z
- .dsk
- .rzx
- .scl
- .tap
- .trd
- .tzx
- .z80
- .zip
core: fuse
emulator: retroarch
source_ref: "os base/.simplemenu/section_groups/apps%20and%20games.ini:320"
note: launchers fuse_libretro
+20
View File
@@ -0,0 +1,20 @@
setup: lakka
name: Lakka
platform: lakka
sources:
os:
repo: "https://github.com/libretro/Lakka-LibreELEC"
commit: ad1a27aac8e37e0cf810b243b2bdf9f798e45dd4
tag: v6.1
roms_root:
path: /storage/roms
from_bios: ../roms
source_ref: "os packages/lakka/retroarch_base/retroarch/tmpfiles.d/retroarch-userdirs.conf:12; os packages/lakka/retroarch_base/retroarch/config/retroarch.cfg:3143"
case_sensitive: null
notes:
- "Lakka keeps no folder per system. Games reach the menu through RetroArch playlists built by scanning\
\ against the content databases (os packages/lakka/retroarch_base/retroarch/config/retroarch.cfg:98,3085),\
\ so a folder name says nothing about the system and the game itself has to."
- "/storage/roms is the file browser's start, with hidden files not shown (os packages/lakka/retroarch_base/retroarch/config/retroarch.cfg:3143,3202).\
\ /storage/roms/downloads holds core assets (os packages/lakka/retroarch_base/retroarch/tmpfiles.d/retroarch-userdirs.conf:13)."
folders: []
+201
View File
@@ -0,0 +1,201 @@
setup: minui
name: MinUI
platform: minui
sources:
os:
repo: "https://github.com/shauninman/MinUI"
commit: dbf89435a5179788418ff3573042cf9c7e75d9e0
roms_root:
path: <SD>/Roms
from_bios: ../../Roms
source_ref: "os workspace/all/common/defines.h:13; os workspace/miyoomini/platform/platform.h:122"
case_sensitive: null
case_ref: "os workspace/all/common/utils.c:74-96"
hidden:
- pattern: .*
source_ref: "os workspace/all/common/utils.c:32-34"
- pattern: '*.disabled'
source_ref: "os workspace/all/common/utils.c:32-34"
- name: map.txt
source_ref: "os workspace/all/common/utils.c:32-34"
notes:
- "MinUI has no extension filter. Every file of a Roms folder that is not hidden is listed as a game (os\
\ workspace/all/minui/minui.c:475-535,615-680), so the rows carry no extensions."
- "A Roms folder starts the pak named by the text inside its last parentheses, or by its whole name without\
\ parentheses (getEmuName, os workspace/all/common/utils.c:74-96). The pak is found at .system/<PLATFORM>/paks/Emus/<TAG>.pak\
\ then Emus/<PLATFORM>/<TAG>.pak."
- BIOS sits in Bios/<TAG>/, two levels under the card root, so the roms root is ../../Roms from it.
- "SDCARD_PATH differs per device (/mnt/SDCARD, /mnt/sdcard, /storage/roms, /sdcard, /media/roms, /storage/TF2).\
\ Roms sits under it."
folders:
- folder: "Game Boy (GB)"
name: GB
aliases:
- GB
core: gambatte
emulator: minarch
source_ref: "os skeleton/SYSTEM/gkdpixel/paks/Emus/GB.pak/launch.sh:3"
note: "any folder named GB or ending in '(GB)' starts GB.pak. Devices: gkdpixel, m17, magicmini, miyoomini,\
\ my282, my355, rg35xx, rg35xxplus, rgb30, tg5040, trimuismart, zero28"
- folder: "Game Boy Advance (GBA)"
name: GBA
aliases:
- GBA
core: gpsp
emulator: minarch
source_ref: "os skeleton/SYSTEM/gkdpixel/paks/Emus/GBA.pak/launch.sh:3"
note: "any folder named GBA or ending in '(GBA)' starts GBA.pak. Devices: gkdpixel, m17, magicmini,\
\ miyoomini, my282, my355, rg35xx, rg35xxplus, rgb30, tg5040, trimuismart, zero28"
- folder: "Game Boy Advance (MGBA)"
name: MGBA
aliases:
- MGBA
core: mgba
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/gkdpixel/MGBA.pak/launch.sh:3"
note: "any folder named MGBA or ending in '(MGBA)' starts MGBA.pak. Devices: gkdpixel, m17, magicmini,\
\ miyoomini, my282, my355, rg35xx, rg35xxplus, rgb30, tg5040, trimuismart, zero28"
- folder: "Game Boy Color (GBC)"
name: GBC
aliases:
- GBC
core: gambatte
emulator: minarch
source_ref: "os skeleton/SYSTEM/gkdpixel/paks/Emus/GBC.pak/launch.sh:3"
note: "any folder named GBC or ending in '(GBC)' starts GBC.pak. Devices: gkdpixel, m17, magicmini,\
\ miyoomini, my282, my355, rg35xx, rg35xxplus, rgb30, tg5040, trimuismart, zero28"
- folder: "Native Games (PAK)"
name: PAK
aliases:
- PAK
emulator: standalone
source_ref: "os skeleton/SYSTEM/gkdpixel/paks/Emus/PAK.pak/launch.sh:1"
note: "any folder named PAK or ending in '(PAK)' starts PAK.pak. Devices: gkdpixel, m17, magicmini,\
\ miyoomini, my282, my355, rg35xx, rg35xxplus, rgb30, tg5040, trimuismart, zero28"
- folder: "Neo Geo Pocket Color (NGPC)"
name: NGPC
aliases:
- NGPC
core: race
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/gkdpixel/NGPC.pak/launch.sh:3"
note: "any folder named NGPC or ending in '(NGPC)' starts NGPC.pak. Devices: gkdpixel, m17, magicmini,\
\ miyoomini, my282, my355, rg35xx, rg35xxplus, rgb30, tg5040, trimuismart, zero28"
- folder: NGP
core: race
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/gkdpixel/NGP.pak/launch.sh:3"
note: "any folder named NGP or ending in '(NGP)' starts NGP.pak. Devices: gkdpixel, m17, magicmini,\
\ miyoomini, my282, my355, rg35xx, rg35xxplus, rgb30, tg5040, trimuismart, zero28"
- folder: "Nintendo Entertainment System (FC)"
name: FC
aliases:
- FC
core: fceumm
emulator: minarch
source_ref: "os skeleton/SYSTEM/gkdpixel/paks/Emus/FC.pak/launch.sh:3"
note: "any folder named FC or ending in '(FC)' starts FC.pak. Devices: gkdpixel, m17, magicmini, miyoomini,\
\ my282, my355, rg35xx, rg35xxplus, rgb30, tg5040, trimuismart, zero28"
- folder: P8-NATIVE
emulator: standalone
source_ref: "os skeleton/EXTRAS/Emus/rgb30/P8-NATIVE.pak/launch.sh:1"
note: "any folder named P8-NATIVE or ending in '(P8-NATIVE)' starts P8-NATIVE.pak. Devices: rgb30"
- folder: "Pico-8 (P8)"
name: P8
aliases:
- P8
core: fake08
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/m17/P8.pak/launch.sh:3"
note: "any folder named P8 or ending in '(P8)' starts P8.pak. Devices: m17, magicmini, miyoomini, my282,\
\ my355, rg35xx, rg35xxplus, rgb30, tg5040, trimuismart, zero28"
- folder: "Pokémon mini (PKM)"
name: PKM
aliases:
- PKM
core: pokemini
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/gkdpixel/PKM.pak/launch.sh:3"
note: "any folder named PKM or ending in '(PKM)' starts PKM.pak. Devices: gkdpixel, m17, magicmini,\
\ miyoomini, my282, my355, rg35xx, rg35xxplus, rgb30, tg5040, trimuismart, zero28"
- folder: "Sega Game Gear (GG)"
name: GG
aliases:
- GG
core: picodrive
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/gkdpixel/GG.pak/launch.sh:3"
note: "any folder named GG or ending in '(GG)' starts GG.pak. Devices: gkdpixel, m17, magicmini, miyoomini,\
\ my282, my355, rg35xx, rg35xxplus, rgb30, tg5040, trimuismart, zero28"
- folder: "Sega Genesis (MD)"
name: MD
aliases:
- MD
core: picodrive
emulator: minarch
source_ref: "os skeleton/SYSTEM/gkdpixel/paks/Emus/MD.pak/launch.sh:3"
note: "any folder named MD or ending in '(MD)' starts MD.pak. Devices: gkdpixel, m17, magicmini, miyoomini,\
\ my282, my355, rg35xx, rg35xxplus, rgb30, tg5040, trimuismart, zero28"
- folder: "Sega Master System (SMS)"
name: SMS
aliases:
- SMS
core: picodrive
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/gkdpixel/SMS.pak/launch.sh:3"
note: "any folder named SMS or ending in '(SMS)' starts SMS.pak. Devices: gkdpixel, m17, magicmini,\
\ miyoomini, my282, my355, rg35xx, rg35xxplus, rgb30, tg5040, trimuismart, zero28"
- folder: "Sony PlayStation (PS)"
name: PS
aliases:
- PS
core: pcsx_rearmed
emulator: minarch
source_ref: "os skeleton/SYSTEM/gkdpixel/paks/Emus/PS.pak/launch.sh:3"
note: "any folder named PS or ending in '(PS)' starts PS.pak. Devices: gkdpixel, m17, magicmini, miyoomini,\
\ my282, my355, rg35xx, rg35xxplus, rgb30, tg5040, trimuismart, zero28"
- folder: "Super Game Boy (SGB)"
name: SGB
aliases:
- SGB
core: mgba
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/gkdpixel/SGB.pak/launch.sh:3"
note: "any folder named SGB or ending in '(SGB)' starts SGB.pak. Devices: gkdpixel, m17, magicmini,\
\ miyoomini, my282, my355, rg35xx, rg35xxplus, rgb30, tg5040, trimuismart, zero28"
- folder: "Super Nintendo Entertainment System (SFC)"
name: SFC
aliases:
- SFC
core: snes9x2005_plus
emulator: minarch
source_ref: "os skeleton/SYSTEM/gkdpixel/paks/Emus/SFC.pak/launch.sh:3"
note: "any folder named SFC or ending in '(SFC)' starts SFC.pak. Devices: gkdpixel, m17, magicmini,\
\ miyoomini, my282, my355, rg35xx, rg35xxplus, rgb30, tg5040, trimuismart, zero28"
- folder: "Super Nintendo Entertainment System (SUPA)"
name: SUPA
aliases:
- SUPA
core: mednafen_supafaust
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/m17/SUPA.pak/launch.sh:3"
note: "any folder named SUPA or ending in '(SUPA)' starts SUPA.pak. Devices: m17, magicmini, miyoomini,\
\ my282, my355, rg35xx, rg35xxplus, rgb30, tg5040, trimuismart, zero28"
- folder: "TurboGrafx-16 (PCE)"
name: PCE
aliases:
- PCE
core: mednafen_pce_fast
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/gkdpixel/PCE.pak/launch.sh:3"
note: "any folder named PCE or ending in '(PCE)' starts PCE.pak. Devices: gkdpixel, m17, magicmini,\
\ miyoomini, my282, my355, rg35xx, rg35xxplus, rgb30, tg5040, trimuismart, zero28"
- folder: "Virtual Boy (VB)"
name: VB
aliases:
- VB
core: mednafen_vb
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/m17/VB.pak/launch.sh:3"
note: "any folder named VB or ending in '(VB)' starts VB.pak. Devices: m17, magicmini, miyoomini, my282,\
\ my355, rg35xx, rg35xxplus, rgb30, tg5040, trimuismart, zero28"
+512
View File
@@ -0,0 +1,512 @@
setup: misterfpga
name: MiSTer FPGA
platform: misterfpga
sources:
main:
repo: "https://github.com/MiSTer-devel/Main_MiSTer"
commit: a8ed7e9d4468f7a703af6e81ce42521e21e34f48
dist:
repo: "https://github.com/MiSTer-devel/Distribution_MiSTer"
commit: ab7a78093e95ac61696559a3403204a92a16fa30
roms_root:
path: /media/fat/games
from_bios: .
source_ref: "main file_io.h:171; main file_io.cpp:1150-1170"
case_sensitive: false
case_ref: "main file_io.cpp:1715-1790"
hidden:
- pattern: .*
source_ref: "main file_io.cpp:1714-1715,1748-1749,1760-1761"
- name: boot.rom
source_ref: "main file_io.cpp:1765-1772"
- pattern: "boot[0-9].rom"
source_ref: "main file_io.cpp:1765-1772"
notes:
- "Games and BIOS share games/<core>/, so the roms root is the BIOS folder's own parent and every row\
\ is that core's folder. The folder is the core's name (main user_io.cpp:196-211). The rows are the\
\ folders the distribution ships."
- "Only files whose extension is in the core's CONF_STR filter are listed, and a .zip is browsed as a\
\ folder (main file_io.cpp:1774-1785). Each core sets its filter in its own repository, so the rows\
\ carry no extensions."
- "USB drives, network and CIFS mounts are searched for a games folder before /media/fat (main file_io.cpp:1060-1145)."
folders:
- folder: 3DO
emulator: mister-core
source_ref: dist games/3DO/
- folder: AcornAtom
emulator: mister-core
source_ref: dist games/AcornAtom/
- folder: AcornElectron
emulator: mister-core
source_ref: dist games/AcornElectron/
- folder: Adam
emulator: mister-core
source_ref: dist games/Adam/
- folder: AliceMC10
emulator: mister-core
source_ref: dist games/AliceMC10/
- folder: Altair8800
emulator: mister-core
source_ref: dist games/Altair8800/
- folder: Amiga
emulator: mister-core
source_ref: dist games/Amiga/
- folder: Amstrad
emulator: mister-core
source_ref: dist games/Amstrad/
- folder: Amstrad PCW
emulator: mister-core
source_ref: dist games/Amstrad%20PCW/
- folder: AO486
emulator: mister-core
source_ref: dist games/AO486/
- folder: APOGEE
emulator: mister-core
source_ref: dist games/APOGEE/
- folder: APPLE-I
emulator: mister-core
source_ref: dist games/APPLE-I/
- folder: Apple-II
emulator: mister-core
source_ref: dist games/Apple-II/
- folder: Apple-IIgs
emulator: mister-core
source_ref: dist games/Apple-IIgs/
- folder: Apple-III
emulator: mister-core
source_ref: dist games/Apple-III/
- folder: Apple-Lisa
emulator: mister-core
source_ref: dist games/Apple-Lisa/
- folder: AQUARIUS
emulator: mister-core
source_ref: dist games/AQUARIUS/
- folder: Arcadia
emulator: mister-core
source_ref: dist games/Arcadia/
- folder: ARCHIE
emulator: mister-core
source_ref: dist games/ARCHIE/
- folder: Astrocade
emulator: mister-core
source_ref: dist games/Astrocade/
- folder: Atari2600
emulator: mister-core
source_ref: dist games/Atari2600/
- folder: ATARI5200
emulator: mister-core
source_ref: dist games/ATARI5200/
- folder: ATARI7800
emulator: mister-core
source_ref: dist games/ATARI7800/
- folder: ATARI800
emulator: mister-core
source_ref: dist games/ATARI800/
- folder: AtariLynx
emulator: mister-core
source_ref: dist games/AtariLynx/
- folder: AtariST
emulator: mister-core
source_ref: dist games/AtariST/
- folder: AVision
emulator: mister-core
source_ref: dist games/AVision/
- folder: AY-3-8500
emulator: mister-core
source_ref: dist games/AY-3-8500/
- folder: BasicMasterJr
emulator: mister-core
source_ref: dist games/BasicMasterJr/
- folder: BBCBridgeCompanion
emulator: mister-core
source_ref: dist games/BBCBridgeCompanion/
- folder: BBCMicro
emulator: mister-core
source_ref: dist games/BBCMicro/
- folder: BK0011M
emulator: mister-core
source_ref: dist games/BK0011M/
- folder: C128
emulator: mister-core
source_ref: dist games/C128/
- folder: C16
emulator: mister-core
source_ref: dist games/C16/
- folder: C64
emulator: mister-core
source_ref: dist games/C64/
- folder: Casio_PV-1000
emulator: mister-core
source_ref: dist games/Casio_PV-1000/
- folder: Casio_PV-2000
emulator: mister-core
source_ref: dist games/Casio_PV-2000/
- folder: CBM-II
emulator: mister-core
source_ref: dist games/CBM-II/
- folder: CD-i
emulator: mister-core
source_ref: dist games/CD-i/
- folder: ChannelF
emulator: mister-core
source_ref: dist games/ChannelF/
- folder: CoCo2
emulator: mister-core
source_ref: dist games/CoCo2/
- folder: COCO3
emulator: mister-core
source_ref: dist games/COCO3/
- folder: Coleco
emulator: mister-core
source_ref: dist games/Coleco/
- folder: Cray-XMP
emulator: mister-core
source_ref: dist games/Cray-XMP/
- folder: CreatiVision
emulator: mister-core
source_ref: dist games/CreatiVision/
- folder: EDSAC
emulator: mister-core
source_ref: dist games/EDSAC/
- folder: eg2000
emulator: mister-core
source_ref: dist games/eg2000/
- folder: Enterprise
emulator: mister-core
source_ref: dist games/Enterprise/
- folder: EpochGalaxyII
emulator: mister-core
source_ref: dist games/EpochGalaxyII/
- folder: FM-7
emulator: mister-core
source_ref: dist games/FM-7/
- folder: Galaksija
emulator: mister-core
source_ref: dist games/Galaksija/
- folder: Gamate
emulator: mister-core
source_ref: dist games/Gamate/
- folder: Game And Watch
emulator: mister-core
source_ref: dist games/Game%20And%20Watch/
- folder: GAMEBOY
emulator: mister-core
source_ref: dist games/GAMEBOY/
- folder: GAMEBOY2P
emulator: mister-core
source_ref: dist games/GAMEBOY2P/
- folder: GameCom
emulator: mister-core
source_ref: dist games/GameCom/
- folder: GameGear
emulator: mister-core
source_ref: dist games/GameGear/
- folder: GameGear2P
emulator: mister-core
source_ref: dist games/GameGear2P/
- folder: GameKing
emulator: mister-core
source_ref: dist games/GameKing/
- folder: GameNWatch
emulator: mister-core
source_ref: dist games/GameNWatch/
- folder: GBA
emulator: mister-core
source_ref: dist games/GBA/
- folder: GBA2P
emulator: mister-core
source_ref: dist games/GBA2P/
- folder: GBC
emulator: mister-core
source_ref: dist games/GBC/
- folder: hbmame
emulator: mister-core
source_ref: dist games/hbmame/
arcade: true
note: "ROM archives of the .mra files in _Arcade. The loader looks in games/mame, then beside the .mra\
\ (main support/arcade/mra_loader.cpp:168-187)"
- folder: Homelab
emulator: mister-core
source_ref: dist games/Homelab/
- folder: Intellivision
emulator: mister-core
source_ref: dist games/Intellivision/
- folder: Interact
emulator: mister-core
source_ref: dist games/Interact/
- folder: IQ151
emulator: mister-core
source_ref: dist games/IQ151/
- folder: Jaguar
emulator: mister-core
source_ref: dist games/Jaguar/
- folder: JR100
emulator: mister-core
source_ref: dist games/JR100/
- folder: Jupiter
emulator: mister-core
source_ref: dist games/Jupiter/
- folder: Laser
emulator: mister-core
source_ref: dist games/Laser/
- folder: Loopy
emulator: mister-core
source_ref: dist games/Loopy/
- folder: Lynx48
emulator: mister-core
source_ref: dist games/Lynx48/
- folder: MACIICX
emulator: mister-core
source_ref: dist games/MACIICX/
- folder: MacLC
emulator: mister-core
source_ref: dist games/MacLC/
- folder: MACPLUS
emulator: mister-core
source_ref: dist games/MACPLUS/
- folder: MacQuadra800
emulator: mister-core
source_ref: dist games/MacQuadra800/
- folder: MACSE30
emulator: mister-core
source_ref: dist games/MACSE30/
- folder: mame
emulator: mister-core
source_ref: dist games/mame/
arcade: true
note: "ROM archives of the .mra files in _Arcade. The loader looks in games/mame, then beside the .mra\
\ (main support/arcade/mra_loader.cpp:168-187)"
- folder: Marty
emulator: mister-core
source_ref: dist games/Marty/
- folder: MegaCD
emulator: mister-core
source_ref: dist games/MegaCD/
- folder: MegaDrive
emulator: mister-core
source_ref: dist games/MegaDrive/
- folder: MegaDuck
emulator: mister-core
source_ref: dist games/MegaDuck/
- folder: MEMTEST
emulator: mister-core
source_ref: dist games/MEMTEST/
- folder: MSX
emulator: mister-core
source_ref: dist games/MSX/
- folder: MSX1
emulator: mister-core
source_ref: dist games/MSX1/
- folder: MultiComp
emulator: mister-core
source_ref: dist games/MultiComp/
- folder: MyVision
emulator: mister-core
source_ref: dist games/MyVision/
- folder: N64
emulator: mister-core
source_ref: dist games/N64/
- folder: NEOGEO
emulator: mister-core
source_ref: dist games/NEOGEO/
- folder: NeoGeo-CD
emulator: mister-core
source_ref: dist games/NeoGeo-CD/
- folder: Neon
emulator: mister-core
source_ref: dist games/Neon/
- folder: NES
emulator: mister-core
source_ref: dist games/NES/
- folder: NeXT
emulator: mister-core
source_ref: dist games/NeXT/
- folder: NeXT-Color
emulator: mister-core
source_ref: dist games/NeXT-Color/
- folder: NGPC
emulator: mister-core
source_ref: dist games/NGPC/
- folder: ODYSSEY2
emulator: mister-core
source_ref: dist games/ODYSSEY2/
- folder: Ondra_SPO186
emulator: mister-core
source_ref: dist games/Ondra_SPO186/
- folder: ORAO
emulator: mister-core
source_ref: dist games/ORAO/
- folder: Oric
emulator: mister-core
source_ref: dist games/Oric/
- folder: PC8801
emulator: mister-core
source_ref: dist games/PC8801/
- folder: PCjr
emulator: mister-core
source_ref: dist games/PCjr/
- folder: PCXT
emulator: mister-core
source_ref: dist games/PCXT/
- folder: PCXT-EGA
emulator: mister-core
source_ref: dist games/PCXT-EGA/
- folder: PDP1
emulator: mister-core
source_ref: dist games/PDP1/
- folder: PET2001
emulator: mister-core
source_ref: dist games/PET2001/
- folder: PMD85
emulator: mister-core
source_ref: dist games/PMD85/
- folder: PocketChallengeV2
emulator: mister-core
source_ref: dist games/PocketChallengeV2/
- folder: PocketStation
emulator: mister-core
source_ref: dist games/PocketStation/
- folder: PokemonMini
emulator: mister-core
source_ref: dist games/PokemonMini/
- folder: PSX
emulator: mister-core
source_ref: dist games/PSX/
- folder: QL
emulator: mister-core
source_ref: dist games/QL/
- folder: RX78
emulator: mister-core
source_ref: dist games/RX78/
- folder: S32X
emulator: mister-core
source_ref: dist games/S32X/
- folder: SAMCOUPE
emulator: mister-core
source_ref: dist games/SAMCOUPE/
- folder: Saturn
emulator: mister-core
source_ref: dist games/Saturn/
- folder: SCV
emulator: mister-core
source_ref: dist games/SCV/
- folder: SGB
emulator: mister-core
source_ref: dist games/SGB/
- folder: SGIIndy
emulator: mister-core
source_ref: dist games/SGIIndy/
- folder: SharpMZ
emulator: mister-core
source_ref: dist games/SharpMZ/
- folder: SMS
emulator: mister-core
source_ref: dist games/SMS/
- folder: SNES
emulator: mister-core
source_ref: dist games/SNES/
- folder: Sord M5
emulator: mister-core
source_ref: dist games/Sord%20M5/
- folder: Spectrum
emulator: mister-core
source_ref: dist games/Spectrum/
- folder: SPMX
emulator: mister-core
source_ref: dist games/SPMX/
- folder: Studio-II
emulator: mister-core
source_ref: dist games/Studio-II/
- folder: Sun-2
emulator: mister-core
source_ref: dist games/Sun-2/
- folder: Sun-3
emulator: mister-core
source_ref: dist games/Sun-3/
- folder: SunSparcStation
emulator: mister-core
source_ref: dist games/SunSparcStation/
- folder: SuperAcan
emulator: mister-core
source_ref: dist games/SuperAcan/
- folder: SuperVision
emulator: mister-core
source_ref: dist games/SuperVision/
- folder: SuperVision8000
emulator: mister-core
source_ref: dist games/SuperVision8000/
- folder: SVI328
emulator: mister-core
source_ref: dist games/SVI328/
- folder: Tandy1000
emulator: mister-core
source_ref: dist games/Tandy1000/
- folder: TatungEinstein
emulator: mister-core
source_ref: dist games/TatungEinstein/
- folder: TGFX16
emulator: mister-core
source_ref: dist games/TGFX16/
- folder: TGFX16-CD
emulator: mister-core
source_ref: dist games/TGFX16-CD/
- folder: TI-99_4A
emulator: mister-core
source_ref: dist games/TI-99_4A/
- folder: TK2000
emulator: mister-core
source_ref: dist games/TK2000/
- folder: TomyScramble
emulator: mister-core
source_ref: dist games/TomyScramble/
- folder: TomyTutor
emulator: mister-core
source_ref: dist games/TomyTutor/
- folder: TRS-80
emulator: mister-core
source_ref: dist games/TRS-80/
- folder: TSConf
emulator: mister-core
source_ref: dist games/TSConf/
- folder: UK101
emulator: mister-core
source_ref: dist games/UK101/
- folder: UKNC
emulator: mister-core
source_ref: dist games/UKNC/
- folder: VC4000
emulator: mister-core
source_ref: dist games/VC4000/
- folder: VECTOR06
emulator: mister-core
source_ref: dist games/VECTOR06/
- folder: VECTREX
emulator: mister-core
source_ref: dist games/VECTREX/
- folder: VIC20
emulator: mister-core
source_ref: dist games/VIC20/
- folder: VideoBrain
emulator: mister-core
source_ref: dist games/VideoBrain/
- folder: VirtualBoy
emulator: mister-core
source_ref: dist games/VirtualBoy/
- folder: VT52
emulator: mister-core
source_ref: dist games/VT52/
- folder: WonderSwan
emulator: mister-core
source_ref: dist games/WonderSwan/
- folder: WonderSwanColor
emulator: mister-core
source_ref: dist games/WonderSwanColor/
- folder: X68000
emulator: mister-core
source_ref: dist games/X68000/
- folder: ZX81
emulator: mister-core
source_ref: dist games/ZX81/
- folder: ZXNext
emulator: mister-core
source_ref: dist games/ZXNext/
+46
View File
@@ -0,0 +1,46 @@
setup: miyoocfw
name: MiyooCFW
platform: retroarch
sources:
os:
repo: "https://github.com/MiyooCFW/buildroot"
commit: d5912eeb7b636810bafaa34eb0517fd599a0fc71
gpsp:
repo: "https://github.com/Apaczer/gpsp"
commit: df382f476ffea69f2ff57376b27eac11b15dcf81
tag: 1.2.3
note: the gpsp.ipk release package/miyoo/ipk-gpsp/ipk-gpsp.mk installs
roms_root:
path: /roms
from_bios: null
source_ref: "os board/miyoo/rootfs/etc/inittab:24-25; os board/miyoo/rootfs/etc/main:4-5"
case_sensitive: true
case_ref: "os board/miyoo/scripts/genimage.sh:94-98"
notes:
- "The ROMS partition (mmcblk0p5) mounts on /roms and is built as ext4, where folder case matters. etc/main\
\ also accepts a FAT32 ROMS partition (os board/miyoo/rootfs/etc/main:181-186)."
- The bundled emulator links point at /mnt/roms/<SYS> while the partition mounts on /roms. Nothing in
the buildroot tree joins the two.
- "The image installs seven emulator packages as release .ipk files (os package/miyoo/ipk-drpocketsnes/ipk-drpocketsnes.mk:1-3\
\ and the six beside it). Their gmenu2x links live inside those packages. Only the gpSP link is also\
\ kept in its source repository, the other folders are the ones the image ships."
- BIOS sits in /mnt/.retroarch/system on the main partition, another partition than the games, so no relative
path joins them.
folders:
- folder: GB
source_ref: os board/miyoo/roms/GB
note: folder the image ships. Its emulator link lives in a release package no repository holds
- folder: GBA
extensions:
- .gba
- .zip
core: gpsp
emulator: standalone
source_ref: "gpsp miyoo/opkg_assets/gpsp.lnk:4"
note: gmenu2x link of the gpsp package
- folder: GBC
source_ref: os board/miyoo/roms/GBC
note: folder the image ships. Its emulator link lives in a release package no repository holds
- folder: NES
source_ref: os board/miyoo/roms/NES
note: folder the image ships. Its emulator link lives in a release package no repository holds
File diff suppressed because it is too large. Load diff
+323
View File
@@ -0,0 +1,323 @@
setup: myminui
name: MyMinUI
platform: myminui
sources:
os:
repo: "https://github.com/Turro75/MyMinUI"
commit: 72ed4f3dd80d96646c11bf9363242565320d9566
roms_root:
path: <SD>/Roms
from_bios: ../../Roms
source_ref: "os workspace/all/common/defines.h:13"
case_sensitive: null
case_ref: "os workspace/all/common/utils.c:130-157"
hidden:
- pattern: .*
source_ref: "os workspace/all/common/utils.c:30-35"
- pattern: '*.disabled'
source_ref: "os workspace/all/common/utils.c:30-35"
- name: map.txt
source_ref: "os workspace/all/common/utils.c:30-35"
- name: Imgs
source_ref: "os workspace/all/common/utils.c:30-35"
notes:
- "MyMinUI has no extension filter. Every file of a Roms folder that is not hidden is listed as a game\
\ (os workspace/all/minui/minui.c:660-667), so the rows carry no extensions."
- "A Roms folder starts the pak named by the text inside its last parentheses, or by its whole name without\
\ parentheses (getEmuName, os workspace/all/common/utils.c:130-157)."
- BIOS sits in Bios/<TAG>/, two levels under the card root, so the roms root is ../../Roms from it.
folders:
- folder: A2600
core: stella2014
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/A2600.pak/launch.sh:3"
note: "any folder named A2600 or ending in '(A2600)' starts A2600.pak. Devices: h700, m21, miyoomini,\
\ my282, r36s, rg35xx"
- folder: "Arcade (MAME)"
name: MAME
aliases:
- MAME
core: mame2003_plus
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/MAME.pak/launch.sh:3"
note: "any folder named MAME or ending in '(MAME)' starts MAME.pak. Devices: h700, m21, miyoomini, my282,\
\ r36s, rg35xx"
- folder: "Atari5200 (A5200)"
name: A5200
aliases:
- A5200
core: a5200
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/A5200.pak/launch.sh:3"
note: "any folder named A5200 or ending in '(A5200)' starts A5200.pak. Devices: h700, m21, miyoomini,\
\ my282, r36s, rg35xx"
- folder: "Atari7800 (A7800)"
name: A7800
aliases:
- A7800
core: prosystem
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/A7800.pak/launch.sh:3"
note: "any folder named A7800 or ending in '(A7800)' starts A7800.pak. Devices: h700, m21, miyoomini,\
\ my282, r36s, rg35xx"
- folder: DC
emulator: standalone
source_ref: "os skeleton/EXTRAS/Emus/r36s/DC.pak/launch.sh:1"
note: "any folder named DC or ending in '(DC)' starts DC.pak. Devices: r36s"
- folder: "Doom (DOOM)"
name: DOOM
aliases:
- DOOM
core: prboom
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/DOOM.pak/launch.sh:3"
note: "any folder named DOOM or ending in '(DOOM)' starts DOOM.pak. Devices: h700, m21, miyoomini, my282,\
\ r36s, rg35xx"
- folder: "FinalBurnNeo (FBN)"
name: FBN
aliases:
- FBN
core: fbneo
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/FBN.pak/launch.sh:3"
note: "any folder named FBN or ending in '(FBN)' starts FBN.pak. Devices: h700, m21, miyoomini, my282,\
\ r36s, rg35xx"
- folder: "Game Boy (GB)"
name: GB
aliases:
- GB
core: gambatte
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/GB.pak/launch.sh:3"
note: "any folder named GB or ending in '(GB)' starts GB.pak. Devices: h700, m21, miyoomini, my282,\
\ r36s, rg35xx"
- folder: "Game Boy Advance (GBA)"
name: GBA
aliases:
- GBA
core: gpsp
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/GBA.pak/launch.sh:3"
note: "any folder named GBA or ending in '(GBA)' starts GBA.pak. Devices: h700, m21, miyoomini, my282,\
\ r36s, rg35xx"
- folder: "Game Boy Advance (MGBA)"
name: MGBA
aliases:
- MGBA
core: mgba
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/MGBA.pak/launch.sh:3"
note: "any folder named MGBA or ending in '(MGBA)' starts MGBA.pak. Devices: h700, m21, miyoomini, my282,\
\ r36s, rg35xx"
- folder: "Game Boy Color (GBC)"
name: GBC
aliases:
- GBC
core: gambatte
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/GBC.pak/launch.sh:3"
note: "any folder named GBC or ending in '(GBC)' starts GBC.pak. Devices: h700, m21, miyoomini, my282,\
\ r36s, rg35xx"
- folder: "MSDOS (DOS)"
name: DOS
aliases:
- DOS
core: dosbox
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/DOS.pak/launch.sh:3"
note: "any folder named DOS or ending in '(DOS)' starts DOS.pak. Devices: h700, m21, miyoomini, r36s,\
\ rg35xx"
- folder: N64
emulator: standalone
source_ref: "os skeleton/EXTRAS/Emus/r36s/N64.pak/launch.sh:1"
note: "any folder named N64 or ending in '(N64)' starts N64.pak. Devices: r36s"
- folder: "Neo Geo Pocket Color (NGPC)"
name: NGPC
aliases:
- NGPC
core: mednafen_ngp
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/NGPC.pak/launch.sh:3"
note: "any folder named NGPC or ending in '(NGPC)' starts NGPC.pak. Devices: h700, m21, miyoomini, my282,\
\ r36s, rg35xx"
- folder: "NeoGeo (NG)"
name: NG
aliases:
- NG
core: fbneo
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/NG.pak/launch.sh:3"
note: "any folder named NG or ending in '(NG)' starts NG.pak. Devices: h700, m21, miyoomini, my282,\
\ r36s, rg35xx"
- folder: "NeoGeo CD (NGCD)"
name: NGCD
aliases:
- NGCD
core: neocd
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/NGCD.pak/launch.sh:3"
note: "any folder named NGCD or ending in '(NGCD)' starts NGCD.pak. Devices: h700, m21, miyoomini, my282,\
\ r36s, rg35xx"
- folder: NGP
core: mednafen_ngp
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/NGP.pak/launch.sh:3"
note: "any folder named NGP or ending in '(NGP)' starts NGP.pak. Devices: h700, m21, miyoomini, my282,\
\ r36s, rg35xx"
- folder: "Nintendo DS (NDS)"
name: NDS
aliases:
- NDS
emulator: standalone
source_ref: "os skeleton/EXTRAS/Emus/miyoomini/NDS.pak/launch.sh:1"
note: "any folder named NDS or ending in '(NDS)' starts NDS.pak. Devices: miyoomini, my282, r36s"
- folder: "Nintendo Entertainment System (FC)"
name: FC
aliases:
- FC
core: fceumm
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/FC.pak/launch.sh:3"
note: "any folder named FC or ending in '(FC)' starts FC.pak. Devices: h700, m21, miyoomini, my282,\
\ r36s, rg35xx"
- folder: "Pico-8 (P8)"
name: P8
aliases:
- P8
core: fake08
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/P8.pak/launch.sh:3"
note: "any folder named P8 or ending in '(P8)' starts P8.pak. Devices: h700, m21, miyoomini, my282,\
\ r36s, rg35xx"
- folder: "Pico-8 Native (P8N)"
name: P8N
aliases:
- P8N
emulator: standalone
source_ref: "os skeleton/EXTRAS/Emus/h700/P8N.pak/launch.sh:1"
note: "any folder named P8N or ending in '(P8N)' starts P8N.pak. Devices: h700, m21, miyoomini, my282,\
\ r36s, rg35xx"
- folder: "Pokémon mini (PKM)"
name: PKM
aliases:
- PKM
core: pokemini
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/PKM.pak/launch.sh:3"
note: "any folder named PKM or ending in '(PKM)' starts PKM.pak. Devices: h700, m21, miyoomini, my282,\
\ r36s, rg35xx"
- folder: PSP
emulator: standalone
source_ref: "os skeleton/EXTRAS/Emus/r36s/PSP.pak/launch.sh:1"
note: "any folder named PSP or ending in '(PSP)' starts PSP.pak. Devices: r36s"
- folder: PUAE
core: puae2021
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/PUAE.pak/launch.sh:3"
note: "any folder named PUAE or ending in '(PUAE)' starts PUAE.pak. Devices: h700, m21, miyoomini, my282,\
\ r36s, rg35xx"
- folder: "Quake (QUAKE)"
name: QUAKE
aliases:
- QUAKE
core: tyrquake
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/QUAKE.pak/launch.sh:3"
note: "any folder named QUAKE or ending in '(QUAKE)' starts QUAKE.pak. Devices: h700, m21, miyoomini,\
\ r36s, rg35xx"
- folder: "Sega Game Gear (GG)"
name: GG
aliases:
- GG
core: picodrive
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/GG.pak/launch.sh:3"
note: "any folder named GG or ending in '(GG)' starts GG.pak. Devices: h700, m21, miyoomini, my282,\
\ r36s, rg35xx"
- folder: "Sega Genesis (MD)"
name: MD
aliases:
- MD
core: picodrive
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/MD.pak/launch.sh:3"
note: "any folder named MD or ending in '(MD)' starts MD.pak. Devices: h700, m21, miyoomini, my282,\
\ r36s, rg35xx"
- folder: "Sega Master System (SMS)"
name: SMS
aliases:
- SMS
core: picodrive
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/SMS.pak/launch.sh:3"
note: "any folder named SMS or ending in '(SMS)' starts SMS.pak. Devices: h700, m21, miyoomini, my282,\
\ r36s, rg35xx"
- folder: "Sony PlayStation (PS)"
name: PS
aliases:
- PS
core: pcsx_rearmed
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/PS.pak/launch.sh:3"
note: "any folder named PS or ending in '(PS)' starts PS.pak. Devices: h700, m21, miyoomini, my282,\
\ r36s, rg35xx"
- folder: "Super Game Boy (SGB)"
name: SGB
aliases:
- SGB
core: mgba
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/SGB.pak/launch.sh:3"
note: "any folder named SGB or ending in '(SGB)' starts SGB.pak. Devices: h700, m21, miyoomini, my282,\
\ r36s, rg35xx"
- folder: "Super Nintendo Entertainment System (SFC)"
name: SFC
aliases:
- SFC
core: snes9x2005_plus
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/SFC.pak/launch.sh:3"
note: "any folder named SFC or ending in '(SFC)' starts SFC.pak. Devices: h700, m21, miyoomini, my282,\
\ r36s, rg35xx"
- folder: "Super Nintendo Entertainment System (SUPA)"
name: SUPA
aliases:
- SUPA
core: mednafen_supafaust
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/SUPA.pak/launch.sh:3"
note: "any folder named SUPA or ending in '(SUPA)' starts SUPA.pak. Devices: h700, m21, miyoomini, my282,\
\ r36s, rg35xx"
- folder: "TurboGrafx-16 (PCE)"
name: PCE
aliases:
- PCE
core: mednafen_pce_fast
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/PCE.pak/launch.sh:3"
note: "any folder named PCE or ending in '(PCE)' starts PCE.pak. Devices: h700, m21, miyoomini, my282,\
\ r36s, rg35xx"
- folder: "Virtual Boy (VB)"
name: VB
aliases:
- VB
core: mednafen_vb
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/VB.pak/launch.sh:3"
note: "any folder named VB or ending in '(VB)' starts VB.pak. Devices: h700, m21, miyoomini, my282,\
\ r36s, rg35xx"
- folder: WS
core: mednafen_wswan
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/WS.pak/launch.sh:3"
note: "any folder named WS or ending in '(WS)' starts WS.pak. Devices: h700, m21, miyoomini, my282,\
\ r36s, rg35xx"
- folder: "ZX Spectrum (ZXS)"
name: ZXS
aliases:
- ZXS
core: fuse
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/ZXS.pak/launch.sh:3"
note: "any folder named ZXS or ending in '(ZXS)' starts ZXS.pak. Devices: h700, m21, miyoomini, my282,\
\ r36s, rg35xx"
+326
View File
@@ -0,0 +1,326 @@
setup: nextui
name: NextUI
platform: nextui
sources:
os:
repo: "https://github.com/LoveRetro/NextUI"
commit: 5291344b3aceae5fa197437a70824afb41e2d338
roms_root:
path: <SD>/Roms
from_bios: ../../Roms
source_ref: "os workspace/all/common/defines.h:16; os workspace/tg5040/platform/platform.h:156"
case_sensitive: null
case_ref: "os workspace/all/common/utils.c:352-379"
hidden:
- pattern: .*
source_ref: "os workspace/all/common/utils.c:36-38"
- pattern: '*.disabled'
source_ref: "os workspace/all/common/utils.c:36-38"
- name: map.txt
source_ref: "os workspace/all/common/utils.c:36-38"
media:
- name: .media
source_ref: "os workspace/all/nextui/nextui.c:3011-3034"
notes:
- "NextUI has no extension filter. Every file of a Roms folder that is not hidden is listed as a game\
\ (os workspace/all/nextui/nextui.c:535-547), so the rows carry no extensions."
- "A Roms folder starts the pak named by the text inside its last parentheses, or by its whole name without\
\ parentheses (getEmuName, os workspace/all/common/utils.c:352-379)."
- BIOS sits in Bios/<TAG>/, two levels under the card root, so the roms root is ../../Roms from it.
folders:
- folder: "Amiga (PUAE)"
name: PUAE
aliases:
- PUAE
core: puae2021
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/PUAE.pak/launch.sh:3"
note: "any folder named PUAE or ending in '(PUAE)' starts PUAE.pak. Devices: h700, tg5040, tg5050"
- folder: "Amstrad CPC (CPC)"
name: CPC
aliases:
- CPC
core: cap32
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/CPC.pak/launch.sh:3"
note: "any folder named CPC or ending in '(CPC)' starts CPC.pak. Devices: h700, tg5040, tg5050"
- folder: "Arcade (FBN)"
name: FBN
aliases:
- FBN
core: fbneo
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/FBN.pak/launch.sh:3"
note: "any folder named FBN or ending in '(FBN)' starts FBN.pak. Devices: h700, tg5040, tg5050"
- folder: "Atari 2600 (A2600)"
name: A2600
aliases:
- A2600
core: stella2014
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/A2600.pak/launch.sh:3"
note: "any folder named A2600 or ending in '(A2600)' starts A2600.pak. Devices: h700, tg5040, tg5050"
- folder: "Atari 5200 (A5200)"
name: A5200
aliases:
- A5200
core: a5200
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/A5200.pak/launch.sh:3"
note: "any folder named A5200 or ending in '(A5200)' starts A5200.pak. Devices: h700, tg5040, tg5050"
- folder: "Atari 7800 (A7800)"
name: A7800
aliases:
- A7800
core: prosystem
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/A7800.pak/launch.sh:3"
note: "any folder named A7800 or ending in '(A7800)' starts A7800.pak. Devices: h700, tg5040, tg5050"
- folder: "Atari Lynx (LYNX)"
name: LYNX
aliases:
- LYNX
core: handy
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/LYNX.pak/launch.sh:3"
note: "any folder named LYNX or ending in '(LYNX)' starts LYNX.pak. Devices: h700, tg5040, tg5050"
- folder: "Colecovision (COLECO)"
name: COLECO
aliases:
- COLECO
core: gearcoleco
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/COLECO.pak/launch.sh:3"
note: "any folder named COLECO or ending in '(COLECO)' starts COLECO.pak. Devices: h700, tg5040, tg5050"
- folder: "Commodore 128 (C128)"
name: C128
aliases:
- C128
core: vice_x128
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/C128.pak/launch.sh:3"
note: "any folder named C128 or ending in '(C128)' starts C128.pak. Devices: h700, tg5040, tg5050"
- folder: "Commodore 64 (C64)"
name: C64
aliases:
- C64
core: vice_x64
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/C64.pak/launch.sh:3"
note: "any folder named C64 or ending in '(C64)' starts C64.pak. Devices: h700, tg5040, tg5050"
- folder: "Commodore PET (PET)"
name: PET
aliases:
- PET
core: vice_xpet
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/PET.pak/launch.sh:3"
note: "any folder named PET or ending in '(PET)' starts PET.pak. Devices: h700, tg5040, tg5050"
- folder: "Commodore Plus4 (PLUS4)"
name: PLUS4
aliases:
- PLUS4
core: vice_xplus4
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/PLUS4.pak/launch.sh:3"
note: "any folder named PLUS4 or ending in '(PLUS4)' starts PLUS4.pak. Devices: h700, tg5040, tg5050"
- folder: "Commodore VIC20 (VIC)"
name: VIC
aliases:
- VIC
core: vice_xvic
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/VIC.pak/launch.sh:3"
note: "any folder named VIC or ending in '(VIC)' starts VIC.pak. Devices: h700, tg5040, tg5050"
- folder: "Doom (PRBOOM)"
name: PRBOOM
aliases:
- PRBOOM
core: prboom
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/PRBOOM.pak/launch.sh:7"
note: "any folder named PRBOOM or ending in '(PRBOOM)' starts PRBOOM.pak. Devices: h700, tg5040, tg5050"
- folder: "Famicom Disk System (FDS)"
name: FDS
aliases:
- FDS
core: fceumm
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/FDS.pak/launch.sh:3"
note: "any folder named FDS or ending in '(FDS)' starts FDS.pak. Devices: h700, tg5040, tg5050"
- folder: "Game Boy (GB)"
name: GB
aliases:
- GB
core: gambatte
emulator: minarch
source_ref: "os skeleton/SYSTEM/desktop/paks/Emus/GB.pak/launch.sh:3"
note: "any folder named GB or ending in '(GB)' starts GB.pak. Devices: desktop, h700, tg5040, tg5050"
- folder: "Game Boy Advance (GBA)"
name: GBA
aliases:
- GBA
core: gpsp
emulator: minarch
source_ref: "os skeleton/SYSTEM/desktop/paks/Emus/GBA.pak/launch.sh:3"
note: "any folder named GBA or ending in '(GBA)' starts GBA.pak. Devices: desktop, h700, tg5040, tg5050"
- folder: "Game Boy Advance (MGBA)"
name: MGBA
aliases:
- MGBA
core: mgba
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/MGBA.pak/launch.sh:3"
note: "any folder named MGBA or ending in '(MGBA)' starts MGBA.pak. Devices: h700, tg5040, tg5050"
- folder: "Game Boy Color (GBC)"
name: GBC
aliases:
- GBC
core: gambatte
emulator: minarch
source_ref: "os skeleton/SYSTEM/desktop/paks/Emus/GBC.pak/launch.sh:3"
note: "any folder named GBC or ending in '(GBC)' starts GBC.pak. Devices: desktop, h700, tg5040, tg5050"
- folder: "Microsoft MSX (MSX)"
name: MSX
aliases:
- MSX
core: bluemsx
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/MSX.pak/launch.sh:3"
note: "any folder named MSX or ending in '(MSX)' starts MSX.pak. Devices: h700, tg5040, tg5050"
- folder: "Neo Geo Pocket (NGP)"
name: NGP
aliases:
- NGP
core: race
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/NGP.pak/launch.sh:3"
note: "any folder named NGP or ending in '(NGP)' starts NGP.pak. Devices: h700, tg5040, tg5050"
- folder: "Neo Geo Pocket Color (NGPC)"
name: NGPC
aliases:
- NGPC
core: race
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/NGPC.pak/launch.sh:3"
note: "any folder named NGPC or ending in '(NGPC)' starts NGPC.pak. Devices: h700, tg5040, tg5050"
- folder: "Nintendo Entertainment System (FC)"
name: FC
aliases:
- FC
core: fceumm
emulator: minarch
source_ref: "os skeleton/SYSTEM/desktop/paks/Emus/FC.pak/launch.sh:3"
note: "any folder named FC or ending in '(FC)' starts FC.pak. Devices: desktop, h700, tg5040, tg5050"
- folder: "Pico-8 (P8)"
name: P8
aliases:
- P8
core: fake08
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/P8.pak/launch.sh:3"
note: "any folder named P8 or ending in '(P8)' starts P8.pak. Devices: h700, tg5040, tg5050"
- folder: "Pokémon mini (PKM)"
name: PKM
aliases:
- PKM
core: pokemini
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/PKM.pak/launch.sh:3"
note: "any folder named PKM or ending in '(PKM)' starts PKM.pak. Devices: h700, tg5040, tg5050"
- folder: "Sega 32X (32X)"
name: 32X
aliases:
- 32X
core: picodrive
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/32X.pak/launch.sh:3"
note: "any folder named 32X or ending in '(32X)' starts 32X.pak. Devices: h700, tg5040, tg5050"
- folder: "Sega CD (SEGACD)"
name: SEGACD
aliases:
- SEGACD
core: picodrive
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/SEGACD.pak/launch.sh:3"
note: "any folder named SEGACD or ending in '(SEGACD)' starts SEGACD.pak. Devices: h700, tg5040, tg5050"
- folder: "Sega Game Gear (GG)"
name: GG
aliases:
- GG
core: picodrive
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/GG.pak/launch.sh:3"
note: "any folder named GG or ending in '(GG)' starts GG.pak. Devices: h700, tg5040, tg5050"
- folder: "Sega Genesis (MD)"
name: MD
aliases:
- MD
core: picodrive
emulator: minarch
source_ref: "os skeleton/SYSTEM/desktop/paks/Emus/MD.pak/launch.sh:3"
note: "any folder named MD or ending in '(MD)' starts MD.pak. Devices: desktop, h700, tg5040, tg5050"
- folder: "Sega Master System (SMS)"
name: SMS
aliases:
- SMS
core: picodrive
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/SMS.pak/launch.sh:3"
note: "any folder named SMS or ending in '(SMS)' starts SMS.pak. Devices: h700, tg5040, tg5050"
- folder: "Sega SG-1000 (SG1000)"
name: SG1000
aliases:
- SG1000
core: picodrive
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/SG1000.pak/launch.sh:3"
note: "any folder named SG1000 or ending in '(SG1000)' starts SG1000.pak. Devices: h700, tg5040, tg5050"
- folder: "Sony PlayStation (PS)"
name: PS
aliases:
- PS
core: pcsx_rearmed
emulator: minarch
source_ref: "os skeleton/SYSTEM/desktop/paks/Emus/PS.pak/launch.sh:3"
note: "any folder named PS or ending in '(PS)' starts PS.pak. Devices: desktop, h700, tg5040, tg5050"
- folder: "Super Game Boy (SGB)"
name: SGB
aliases:
- SGB
core: mgba
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/SGB.pak/launch.sh:3"
note: "any folder named SGB or ending in '(SGB)' starts SGB.pak. Devices: h700, tg5040, tg5050"
- folder: "Super Nintendo Entertainment System (SFC)"
name: SFC
aliases:
- SFC
core: snes9x
emulator: minarch
source_ref: "os skeleton/SYSTEM/desktop/paks/Emus/SFC.pak/launch.sh:3"
note: "any folder named SFC or ending in '(SFC)' starts SFC.pak. Devices: desktop, h700, tg5040, tg5050"
- folder: "Super Nintendo Entertainment System (SUPA)"
name: SUPA
aliases:
- SUPA
core: mednafen_supafaust
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/SUPA.pak/launch.sh:3"
note: "any folder named SUPA or ending in '(SUPA)' starts SUPA.pak. Devices: h700, tg5040, tg5050"
- folder: "TurboGrafx-16 (PCE)"
name: PCE
aliases:
- PCE
core: mednafen_pce_fast
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/PCE.pak/launch.sh:3"
note: "any folder named PCE or ending in '(PCE)' starts PCE.pak. Devices: h700, tg5040, tg5050"
- folder: "Virtual Boy (VB)"
name: VB
aliases:
- VB
core: mednafen_vb
emulator: minarch
source_ref: "os skeleton/EXTRAS/Emus/h700/VB.pak/launch.sh:3"
note: "any folder named VB or ending in '(VB)' starts VB.pak. Devices: h700, tg5040, tg5050"
+865
View File
@@ -0,0 +1,865 @@
setup: onion
name: Onion
platform: retroarch
sources:
os:
repo: "https://github.com/OnionUI/Onion"
commit: 07505ea58c7bba698d6b9220ff43946a43cac76b
roms_root:
path: /mnt/SDCARD/Roms
from_bios: ../Roms
source_ref: "os static/packages/Emu/Commodore%20-%20Amiga%20(PUAE%202021)/Emu/AMIGA/config.json:3"
case_sensitive: false
case_ref: "os src/packageManager/fileActions.h:96-118"
hidden:
- pattern: .*
source_ref: "os src/packageManager/fileActions.h:130"
media:
- name: Imgs
source_ref: "os static/packages/Emu/Commodore%20-%20Amiga%20(PUAE%202021)/Emu/AMIGA/config.json:1-13"
notes:
- Each Emu/<SYS>/config.json points rompath at ../../Roms/<SYS> from /mnt/SDCARD/Emu/<SYS>. Emu packages
are optional and PackageManager installs them.
- "The stock MainUI that lists the games is closed source. It reads extlist and hidebios from config.json.\
\ Only Onion's PackageManager rule is readable (os src/packageManager/fileActions.h:120-189)."
- "The gpSP package names its core through default_core in launch.sh and switches to mGBA only after a\
\ save migration (os static/packages/Emu/Nintendo%20-%20GBA%20(gpSP)/Emu/GBA/launch.sh:25-30)."
folders:
- folder: ADVMAME
extensions:
- .7z
- .chd
- .miyoocmd
- .zip
source_ref: "os static/packages/RApp/Arcade%20(AdvanceMame)/RApp/advancemame/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: AMIGA
extensions:
- .7z
- .adf
- .adz
- .ccd
- .chd
- .cue
- .dms
- .fdi
- .hdf
- .hdz
- .info
- .ipf
- .iso
- .lha
- .m3u
- .mds
- .nrg
- .rp9
- .slave
- .uae
- .zip
core: puae2021
emulator: retroarch
source_ref: "os static/packages/Emu/Commodore%20-%20Amiga%20(PUAE%202021)/Emu/AMIGA/config.json:6"
note: "package 'Commodore - Amiga (PUAE 2021)' (Emu/, the stock menu entry). Other packages on this\
\ folder: Commodore - Amiga (PUAE 2021 xtreme), Commodore - Amiga (uae4arm)"
- folder: AMIGACD
source_ref: "os static/packages/RApp/Commodore%20-%20Amiga%20CD32%20(uae4arm)/RApp/uae4arm_cd32/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: ARCADE
extensions:
- .zip
core: mame2003_plus
emulator: retroarch
source_ref: "os static/packages/Emu/Arcade%20(MAME%202003-Plus)/Emu/ARCADE/config.json:6"
note: "package 'Arcade (MAME 2003-Plus)' (Emu/, the stock menu entry). Other packages on this folder:\
\ Arcade (MAME 2003-xtreme)"
- folder: ARDUBOY
source_ref: "os static/packages/RApp/Arduboy%20(Arduous)/RApp/arduous/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: ATARI
extensions:
- .7z
- .a26
- .bin
- .zip
core: stella2014
emulator: retroarch
source_ref: "os static/packages/Emu/Atari%20-%202600%20(Stella%202014)/Emu/ATARI/config.json:6"
note: "package 'Atari - 2600 (Stella 2014)' (Emu/, the stock menu entry)"
- folder: ATARIST
source_ref: "os static/packages/RApp/Atari%20-%20ST%20(hatari)/RApp/ATARIST/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: CHAI
source_ref: "os static/packages/RApp/Game%20engine%20-%20ChaiLove%20(ChaiLove)/RApp/chai/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: COLECO
extensions:
- .7z
- .cas
- .col
- .dsk
- .m3u
- .mx1
- .mx2
- .ri
- .rom
- .sc
- .sg
- .zip
core: bluemsx
emulator: retroarch
source_ref: "os static/packages/Emu/Coleco%20-%20ColecoVision%20(blueMSX)/Emu/COLECO/config.json:6"
note: "package 'Coleco - ColecoVision (blueMSX)' (Emu/, the stock menu entry)"
- folder: COMMODORE
extensions:
- .7z
- .crt
- .d64
- .nib
- .prg
- .t64
- .tap
- .zip
core: vice_x64
emulator: retroarch
source_ref: "os static/packages/Emu/Commodore%20-%20C64%20(VICE%20x64)/Emu/COMMODORE/config.json:6"
note: "package 'Commodore - C64 (VICE x64)' (Emu/, the stock menu entry). Other packages on this folder:\
\ Commodore - C64 (Frodo)"
- folder: CPC
extensions:
- .7z
- .bin
- .dsk
- .kcr
- .sna
- .zip
core: crocods
emulator: retroarch
source_ref: "os static/packages/Emu/Amstrad%20-%20CPC%20(CrocoDS)/Emu/CPC/config.json:6"
note: "package 'Amstrad - CPC (CrocoDS)' (Emu/, the stock menu entry). Other packages on this folder:\
\ Amstrad - CPC (Caprice32)"
- folder: CPS1
extensions:
- .7z
- .cue
- .zip
core: fbalpha2012_cps1
emulator: retroarch
source_ref: "os static/packages/Emu/Capcom%20-%20CPS1%20(FB%20Alpha%202012%20CPS-1)/Emu/CPS1/config.json:6"
note: "package 'Capcom - CPS1 (FB Alpha 2012 CPS-1)' (Emu/, the stock menu entry)"
- folder: CPS2
extensions:
- .7z
- .cue
- .zip
core: fbalpha2012_cps2
emulator: retroarch
source_ref: "os static/packages/Emu/Capcom%20-%20CPS2%20(FB%20Alpha%202012%20CPS-2)/Emu/CPS2/config.json:6"
note: "package 'Capcom - CPS2 (FB Alpha 2012 CPS-2)' (Emu/, the stock menu entry)"
- folder: CPS3
extensions:
- .7z
- .cue
- .zip
core: fbalpha2012_cps3
emulator: retroarch
source_ref: "os static/packages/Emu/Capcom%20-%20CPS3%20(FB%20Alpha%202012%20CPS-3)/Emu/CPS3/config.json:6"
note: "package 'Capcom - CPS3 (FB Alpha 2012 CPS-3)' (Emu/, the stock menu entry)"
- folder: DAPHNE
source_ref: "os static/packages/RApp/Arcade%20-%20LaserDisk%20(Daphne)/RApp/DAPHNE/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: DOS
extensions:
- .bat
- .com
- .conf
- .dosz
- .exe
- .ima
- .img
- .ins
- .iso
- .jrc
- .m3u
- .m3u8
- .tc
- .vhd
- .zip
core: dosbox_pure
emulator: retroarch
source_ref: "os static/packages/Emu/Microsoft%20-%20DOS%20(DOSBox-Pure)/Emu/DOS/config.json:6"
note: "package 'Microsoft - DOS (DOSBox-Pure)' (Emu/, the stock menu entry). Other packages on this\
\ folder: Microsoft - DOS (DOSBox-Pure 0.9.7)"
- folder: EASYRPG
source_ref: "os static/packages/RApp/Game%20engine%20-%20EasyRPG%20(EasyRPG)/RApp/easyrpg/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: EBK
source_ref: "os static/packages/RApp/BK%20-%200010%20(BK)/RApp/bk/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: EIGHTHUNDRED
source_ref: "os static/packages/RApp/Atari%20-%20800%20(atari800)/RApp/atari800/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: FAIRCHILD
extensions:
- .bin
- .chf
- .rom
- .zip
core: freechaf
emulator: retroarch
source_ref: "os static/packages/Emu/Fairchild%20-%20ChannelF%20(FreeChaF)/Emu/FAIRCHILD/config.json:6"
note: "package 'Fairchild - ChannelF (FreeChaF)' (Emu/, the stock menu entry)"
- folder: FBA2012
source_ref: "os static/packages/RApp/Arcade%20(FB%20Alpha%202012)/RApp/FBA2012/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: FBALPHA
extensions:
- .7z
- .cue
- .zip
source_ref: "os static/packages/RApp/.Arcade%20(Final%20Burn%20Alpha)/RApp/ARCADE/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: FBNEO
extensions:
- .zip
source_ref: "os static/packages/RApp/Arcade%20(Final%20Burn%20Neo)/RApp/fbneo/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: FC
extensions:
- .7z
- .fds
- .nes
- .unf
- .unif
- .zip
core: fceumm
emulator: retroarch
source_ref: "os static/packages/Emu/Nintendo%20-%20NES%20(FCEUmm)/Emu/FC/config.json:6"
note: "package 'Nintendo - NES (FCEUmm)' (Emu/, the stock menu entry). Other packages on this folder:\
\ Nintendo - NES (Nestopia)"
- folder: FDS
extensions:
- .7z
- .fds
- .nes
- .unf
- .unif
- .zip
core: fceumm
emulator: retroarch
source_ref: "os static/packages/Emu/Nintendo%20-%20Famicom%20Disk%20Syst.%20(FCEUmm)/Emu/FDS/config.json:6"
note: "package 'Nintendo - Famicom Disk Syst. (FCEUmm)' (Emu/, the stock menu entry)"
- folder: FIFTYTWOHUNDRED
extensions:
- .7z
- .a52
- .bin
- .zip
core: a5200
emulator: retroarch
source_ref: "os static/packages/Emu/Atari%20-%205200%20(a5200)/Emu/FIFTYTWOHUNDRED/config.json:6"
note: "package 'Atari - 5200 (a5200)' (Emu/, the stock menu entry). Other packages on this folder: Atari\
\ - 5200 (atari800)"
- folder: GB
extensions:
- .7z
- .bin
- .dmg
- .gb
- .gbc
- .zip
core: gambatte
emulator: retroarch
source_ref: "os static/packages/Emu/Nintendo%20-%20Game%20Boy%20(Gambatte)/Emu/GB/config.json:6"
note: "package 'Nintendo - Game Boy (Gambatte)' (Emu/, the stock menu entry). Other packages on this\
\ folder: Nintendo - GB (Gearboy), Nintendo - GB (TGB Dual)"
- folder: GBA
extensions:
- .7z
- .bin
- .gba
- .zip
core: gpsp
emulator: retroarch
source_ref: "os static/packages/Emu/Nintendo%20-%20GBA%20(gpSP)/Emu/GBA/config.json:6"
note: "package 'Nintendo - GBA (gpSP)' (Emu/, the stock menu entry). Other packages on this folder:\
\ Nintendo - GBA (Mednafen GBA), Nintendo - GBA (Meteor), Nintendo - GBA (VBA Next), Nintendo - GBA\
\ (VBA-M)"
- folder: GBC
extensions:
- .7z
- .bin
- .dmg
- .gb
- .gbc
- .zip
core: gambatte
emulator: retroarch
source_ref: "os static/packages/Emu/Nintendo%20-%20Game%20Boy%20Color%20(Gambatte)/Emu/GBC/config.json:6"
note: "package 'Nintendo - Game Boy Color (Gambatte)' (Emu/, the stock menu entry). Other packages on\
\ this folder: Nintendo - GBC (Gearboy), Nintendo - GBC (TGB Dual)"
- folder: GG
extensions:
- .7z
- .bin
- .gg
- .zip
core: picodrive
emulator: retroarch
source_ref: "os static/packages/Emu/Sega%20-%20Game%20Gear%20(PicoDrive)/Emu/GG/config.json:6"
note: "package 'Sega - Game Gear (PicoDrive)' (Emu/, the stock menu entry). Other packages on this folder:\
\ Sega - Game Gear (Gearsystem), Sega - Game Gear (Genesis Plus GX)"
- folder: GME
source_ref: "os static/packages/RApp/Game%20Music%20Emu%20(GME)/RApp/gme/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: GNGEO
extensions:
- .gno
source_ref: "os static/packages/RApp/SNK%20-%20Neo%20Geo%20(GnGeo)/RApp/gngeo/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: GW
extensions:
- .7z
- .mgw
- .zip
core: gw
emulator: retroarch
source_ref: "os static/packages/Emu/Nintendo%20-%20Game%20&%20Watch%20(gw)/Emu/GW/config.json:6"
note: "package 'Nintendo - Game & Watch (gw)' (Emu/, the stock menu entry)"
- folder: INTELLIVISION
extensions:
- .7z
- .bin
- .int
- .zip
core: freeintv
emulator: retroarch
source_ref: "os static/packages/Emu/Mattel%20-%20Intellivision%20(FreeIntv)/Emu/INTELLIVISION/config.json:6"
note: "package 'Mattel - Intellivision (FreeIntv)' (Emu/, the stock menu entry)"
- folder: JAGUAR
source_ref: "os static/packages/RApp/Atari%20-%20Jaguar%20(Virtual%20Jaguar)/RApp/JAGUAR/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: JAVA
source_ref: "os static/packages/RApp/.Java%20-%20J2ME%20(SquirrelJME)/RApp/sqirreljme/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: LOWRESNX
extensions:
- .7z
- .nx
- .zip
source_ref: "os static/packages/RApp/Game%20engine%20-%20LowRes%20NX%20(LowRes%20NX)/RApp/lowresnx/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: LUTRO
source_ref: "os static/packages/RApp/Game%20engine%20-%20LÖVE%20(Lutro)/RApp/lutro/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: LYNX
extensions:
- .7z
- .lnx
- .zip
core: handy
emulator: retroarch
source_ref: "os static/packages/Emu/Atari%20-%20Lynx%20(Handy)/Emu/LYNX/config.json:6"
note: "package 'Atari - Lynx (Handy)' (Emu/, the stock menu entry). Other packages on this folder: Atari\
\ - Lynx (Mednafen Lynx)"
- folder: MAME2000
source_ref: "os static/packages/RApp/Arcade%20(MAME%202000)/RApp/mame2000/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: MAME2003
extensions:
- .zip
source_ref: "os static/packages/RApp/.Arcade%20(MAME%202003)/RApp/mame2003/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: MBA
source_ref: "os static/packages/RApp/Arcade%20(M.B.A-mini)/RApp/mba-mini/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: MD
extensions:
- .32x
- .68k
- .7z
- .bin
- .chd
- .gen
- .iso
- .md
- .smd
- .sms
- .zip
core: picodrive
emulator: retroarch
source_ref: "os static/packages/Emu/Sega%20-%20Genesis%20(PicoDrive)/Emu/MD/config.json:6"
note: "package 'Sega - Genesis (PicoDrive)' (Emu/, the stock menu entry). Other packages on this folder:\
\ Sega - Genesis (Genesis Plus GX)"
- folder: MDHACKS
source_ref: "os static/packages/RApp/Sega%20-%20Roms%20Hacks%20(Genesis%20Plus%20GX)/RApp/genesis_plus_gx_hacks/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: MEGADUCK
extensions:
- .7z
- .bin
- .zip
core: sameduck
emulator: retroarch
source_ref: "os static/packages/Emu/Mega%20Duck%20(SameDuck)/Emu/MEGADUCK/config.json:6"
note: "package 'Mega Duck (SameDuck)' (Emu/, the stock menu entry)"
- folder: MICROW8
extensions:
- .uw8
- .wasm
source_ref: "os static/packages/RApp/Game%20engine%20-%20MicroW8%20(Uw8)/RApp/UW8/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: MS
extensions:
- .32x
- .68k
- .7z
- .bin
- .chd
- .gen
- .iso
- .md
- .smd
- .sms
- .zip
core: picodrive
emulator: retroarch
source_ref: "os static/packages/Emu/Sega%20-%20Master%20System%20(PicoDrive)/Emu/MS/config.json:6"
note: "package 'Sega - Master System (PicoDrive)' (Emu/, the stock menu entry). Other packages on this\
\ folder: Sega - Master System (Gearsystem), Sega - Master System (Genesis Plus GX)"
- folder: MSX
extensions:
- .7z
- .cas
- .dsk
- .m3u
- .mx1
- .mx2
- .rom
- .zip
core: bluemsx
emulator: retroarch
source_ref: "os static/packages/Emu/Microsoft%20-%20MSX%20(blueMSX)/Emu/MSX/config.json:6"
note: "package 'Microsoft - MSX (blueMSX)' (Emu/, the stock menu entry). Other packages on this folder:\
\ .Microsoft - MSX (blueMSX), Microsoft - MSX (fMSX)"
- folder: NDS
extensions:
- .7z
- .nds
- .rar
- .zip
emulator: standalone
source_ref: "os static/packages/Emu/Nintendo%20-%20DS%20(Drastic)/Emu/NDS/config.json:5"
note: "package 'Nintendo - DS (Drastic)' (Emu/, the stock menu entry), launches static/packages/Emu/Nintendo\
\ - DS (Drastic)/Emu/NDS/launch.sh"
- folder: NEOCD
extensions:
- .chd
- .cue
- .m3u
core: neocd
emulator: retroarch
source_ref: "os static/packages/Emu/SNK%20-%20Neo%20Geo%20CD%20(NeoCD)/Emu/NEOCD/config.json:6"
note: "package 'SNK - Neo Geo CD (NeoCD)' (Emu/, the stock menu entry)"
- folder: NEOGEO
extensions:
- .7z
- .zip
core: fbalpha2012_neogeo
emulator: retroarch
source_ref: "os static/packages/Emu/SNK%20-%20Neo%20Geo%20(fbalpha2012%20neogeo)/Emu/NEOGEO/config.json:6"
note: "package 'SNK - Neo Geo (fbalpha2012 neogeo)' (Emu/, the stock menu entry)"
- folder: NGP
extensions:
- .7z
- .ngc
- .ngp
- .zip
core: mednafen_ngp
emulator: retroarch
source_ref: "os static/packages/Emu/SNK%20-%20Neo%20Geo%20Pocket%20Color%20(B.%20NeoPop)/Emu/NGP/config.json:6"
note: "package 'SNK - Neo Geo Pocket Color (B. NeoPop)' (Emu/, the stock menu entry)"
- folder: ODYSSEY
extensions:
- .7z
- .bin
- .zip
core: o2em
emulator: retroarch
source_ref: "os static/packages/Emu/Magnavox%20-%20Odyssey2%20(O2EM)/Emu/ODYSSEY/config.json:6"
note: "package 'Magnavox - Odyssey2 (O2EM)' (Emu/, the stock menu entry)"
- folder: OPENBOR
source_ref: "os static/packages/RApp/Game%20engine%20-%20Open%20Beats%20of%20Rage/RApp/OpenBOR/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: PALM
source_ref: "os static/packages/RApp/Palm%20OS%20-%20m515%20(mu)/RApp/mu/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: PANASONIC
source_ref: "os static/packages/RApp/3DO%20(Opera)/RApp/opera/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: PCE
extensions:
- .7z
- .ccd
- .chd
- .cue
- .img
- .iso
- .pce
- .zip
core: mednafen_pce_fast
emulator: retroarch
source_ref: "os static/packages/Emu/NEC%20-%20TurboGrafx-16%20(Beetle%20PCE%20FAST)/Emu/PCE/config.json:6"
note: "package 'NEC - TurboGrafx-16 (Beetle PCE FAST)' (Emu/, the stock menu entry). Other packages\
\ on this folder: NEC - TurboGrafx-16 (Beetle PCE)"
- folder: PCECD
extensions:
- .7z
- .ccd
- .chd
- .cue
- .img
- .iso
- .pce
- .zip
core: mednafen_pce_fast
emulator: retroarch
source_ref: "os static/packages/Emu/NEC%20-%20TurboGrafx%20CD%20(Beetle%20PCE%20FAST)/Emu/PCECD/config.json:6"
note: "package 'NEC - TurboGrafx CD (Beetle PCE FAST)' (Emu/, the stock menu entry)"
- folder: PCEIGHTYEIGHT
source_ref: "os static/packages/RApp/NEC%20-%20PC-8000%20(Quasi88)/RApp/quasi88/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: PCFX
source_ref: "os static/packages/RApp/NEC%20-%20PC-FX%20(Mednafen%20PC-FX)/RApp/mednafen_pcfx/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: PCNINETYEIGHT
source_ref: "os static/packages/RApp/NEC%20-%20PC-98%20(Neko%20Project%20II%20Kai)/RApp/nekop2kai/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core. Other packages on this folder:\
\ NEC - PC-98 (Neko Project II)"
- folder: PICO
extensions:
- .p8
- .png
core: fake08
emulator: retroarch
source_ref: "os static/packages/Emu/PICO-8%20(Fake8)/Emu/PICO/config.json:6"
note: "package 'PICO-8 (Fake8)' (Emu/, the stock menu entry). Other packages on this folder: PICO-8\
\ (Fake8 standalone), PICO-8 (PICO-8 standalone)"
- folder: POKE
extensions:
- .min
- .zip
core: pokemini
emulator: retroarch
source_ref: "os static/packages/Emu/Nintendo%20-%20Pokemon%20Mini%20(PokeMini)/Emu/POKE/config.json:6"
note: "package 'Nintendo - Pokemon Mini (PokeMini)' (Emu/, the stock menu entry)"
- folder: PORTS/Shortcuts
extensions:
- .miyoocmd
- .port
emulator: standalone
source_ref: "os static/packages/Emu/Ports%20Collection/Emu/PORTS/config.json:6"
note: "package 'Ports Collection' (Emu/, the stock menu entry), launches static/packages/Emu/Ports Collection/Emu/PORTS/launch.sh"
- folder: PS
extensions:
- .cbn
- .ccd
- .chd
- .cue
- .img
- .iso
- .m3u
- .mdf
- .pbp
- .toc
core: pcsx_rearmed
emulator: retroarch
source_ref: "os static/packages/Emu/Sony%20-%20PlayStation%20(PCSX%20ReARMed)/Emu/PSX/config.json:6"
note: "package 'Sony - PlayStation (PCSX ReARMed)' (Emu/, the stock menu entry). Other packages on this\
\ folder: Sony - PlayStation (PCSX standalone), Sony - PlayStation (SwanStation)"
- folder: PUZZLE
extensions:
- .pz
source_ref: "os static/packages/RApp/Game%20engine%20-%20PuzzleScript%20(PuzzleScript)/RApp/PuzzleScript/config.json:5"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: SATELLAVIEW
extensions:
- .7z
- .bs
- .fig
- .sfc
- .smc
- .st
- .swc
- .zip
core: snes9x
emulator: retroarch
source_ref: "os static/packages/Emu/Nintendo%20-%20Satellaview%20(Snes9x)/Emu/SATELLAVIEW/config.json:6"
note: "package 'Nintendo - Satellaview (Snes9x)' (Emu/, the stock menu entry)"
- folder: SCUMMVM/Shortcuts
extensions:
- .miyoocmd
- .scummvm
- .target
core: scummvm
emulator: retroarch
source_ref: "os static/packages/Emu/SCUMM%20(ScummVM)/Emu/SCUMMVM/config.json:6"
note: "package 'SCUMM (ScummVM)' (Emu/, the stock menu entry)"
- folder: SCUMMVM/Shortcuts_Standalone
extensions:
- .miyoocmd
- .scummvm
source_ref: "os static/packages/RApp/SCUMM%20(ScummVM%20standalone)/RApp/scummvm/config.json:5"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: SEGACD
extensions:
- .32x
- .68k
- .7z
- .chd
- .cue
- .gen
- .iso
- .m3u
- .md
- .smd
- .sms
- .zip
core: picodrive
emulator: retroarch
source_ref: "os static/packages/Emu/Sega%20-%20CD%20(PicoDrive)/Emu/SEGACD/config.json:6"
note: "package 'Sega - CD (PicoDrive)' (Emu/, the stock menu entry). Other packages on this folder:\
\ Sega - Sega CD (Genesis Plus GX)"
- folder: SEGASGONE
extensions:
- .7z
- .bin
- .gg
- .mv
- .rom
- .sg
- .sms
- .zip
core: gearsystem
emulator: retroarch
source_ref: "os static/packages/Emu/Sega%20-%20SG-1000%20(Gearsystem)/Emu/SEGASGONE/config.json:6"
note: "package 'Sega - SG-1000 (Gearsystem)' (Emu/, the stock menu entry)"
- folder: SEVENTYEIGHTHUNDRED
extensions:
- .a78
- .zip
core: prosystem
emulator: retroarch
source_ref: "os static/packages/Emu/Atari%20-%207800%20(ProSystem)/Emu/SEVENTYEIGHTHUNDRED/config.json:6"
note: "package 'Atari - 7800 (ProSystem)' (Emu/, the stock menu entry)"
- folder: SFC
extensions:
- .7z
- .bs
- .fig
- .sfc
- .smc
- .st
- .zip
core: mednafen_supafaust
emulator: retroarch
source_ref: "os static/packages/Emu/Nintendo%20-%20SNES%20(Beetle%20Supafaust)/Emu/SFC/config.json:6"
note: "package 'Nintendo - SNES (Beetle Supafaust)' (Emu/, the stock menu entry). Other packages on\
\ this folder: Nintendo - SNES (ChimeraSNES), Nintendo - SNES (Snes9x 2002), Nintendo - SNES (Snes9x\
\ 2005 Plus), Nintendo - SNES (Snes9x 2005), Nintendo - SNES (Snes9x 2010), Nintendo - SNES (Snes9x)"
- folder: SGB
extensions:
- .7z
- .bin
- .gb
- .gba
- .gbc
- .zip
core: mgba
emulator: retroarch
source_ref: "os static/packages/Emu/Nintendo%20-%20Super%20Game%20Boy%20(mGBA)/Emu/SGB/config.json:6"
note: "package 'Nintendo - Super Game Boy (mGBA)' (Emu/, the stock menu entry)"
- folder: SGFX
extensions:
- .7z
- .ccd
- .chd
- .cue
- .pce
- .sgx
- .zip
core: mednafen_supergrafx
emulator: retroarch
source_ref: "os static/packages/Emu/NEC%20-%20SuperGrafx%20(Beetle%20SuperGrafx)/Emu/SGFX/config.json:6"
note: "package 'NEC - SuperGrafx (Beetle SuperGrafx)' (Emu/, the stock menu entry)"
- folder: SUFAMI
extensions:
- .7z
- .smc
- .zip
core: snes9x
emulator: retroarch
source_ref: "os static/packages/Emu/Bandai%20-%20Sufami%20Turbo%20(snes9x)/Emu/SUFAMI/config.json:6"
note: "package 'Bandai - Sufami Turbo (snes9x)' (Emu/, the stock menu entry)"
- folder: SUPERVISION
extensions:
- .7z
- .bin
- .sv
- .zip
core: potator
emulator: retroarch
source_ref: "os static/packages/Emu/Watara%20-%20Supervision%20(Potator)/Emu/SUPERVISION/config.json:6"
note: "package 'Watara - Supervision (Potator)' (Emu/, the stock menu entry)"
- folder: THIRTYTWOX
extensions:
- .32x
- .68k
- .7z
- .bin
- .chd
- .gen
- .iso
- .md
- .smd
- .sms
- .zip
core: picodrive
emulator: retroarch
source_ref: "os static/packages/Emu/Sega%20-%2032X%20(PicoDrive)/Emu/THIRTYTWOX/config.json:6"
note: "package 'Sega - 32X (PicoDrive)' (Emu/, the stock menu entry)"
- folder: THOMSON
source_ref: "os static/packages/RApp/Thomson%20-%20MOTO%20(Theodore)/RApp/theodore/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: TI83
extensions:
- .8xg
- .8xk
- .8xp
source_ref: "os static/packages/RApp/Texas%20Instruments%20TI-83%20(Numero)/RApp/TI-83/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: TIC
extensions:
- .7z
- .fd
- .k7
- .m7
- .rom
- .sap
- .tic
- .zip
core: tic80
emulator: retroarch
source_ref: "os static/packages/Emu/TIC-80%20(TIC-80)/Emu/TIC/config.json:6"
note: "package 'TIC-80 (TIC-80)' (Emu/, the stock menu entry)"
- folder: UZEBOX
source_ref: "os static/packages/RApp/Uzebox%20(Uzem)/RApp/uzem/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: VB
extensions:
- .7z
- .vb
- .vboy
- .zip
core: mednafen_vb
emulator: retroarch
source_ref: "os static/packages/Emu/Nintendo%20-%20Virtual%20Boy%20(Beetle%20VB)/Emu/VB/config.json:6"
note: "package 'Nintendo - Virtual Boy (Beetle VB)' (Emu/, the stock menu entry)"
- folder: VECTREX
extensions:
- .7z
- .vec
- .zip
core: vecx
emulator: retroarch
source_ref: "os static/packages/Emu/GCE%20-%20Vectrex%20(vecx)/Emu/VECTREX/config.json:6"
note: "package 'GCE - Vectrex (vecx)' (Emu/, the stock menu entry)"
- folder: VIC20
extensions:
- '.20'
- '.40'
- '.60'
- .7z
- .a0
- .b0
- .bin
- .cmd
- .crt
- .d2m
- .d4m
- .d64
- .d6z
- .d71
- .d7z
- .d80
- .d81
- .d82
- .d8z
- .g41
- .g4z
- .g64
- .g6z
- .gz
- .m3u
- .nbz
- .nib
- .p00
- .prg
- .rom
- .t64
- .tap
- .tcrt
- .vfl
- .vsf
- .x64
- .x6z
- .zip
core: vice_xvic
emulator: retroarch
source_ref: "os static/packages/Emu/Commodore%20-%20VIC-20%20(VICE%20xvic)/Emu/VIC20/config.json:6"
note: "package 'Commodore - VIC-20 (VICE xvic)' (Emu/, the stock menu entry)"
- folder: VIDEOPAC
extensions:
- .7z
- .bin
- .zip
core: o2em
emulator: retroarch
source_ref: "os static/packages/Emu/Phillips%20-%20Videopac+%20(O2EM)/Emu/VIDEOPAC/config.json:6"
note: "package 'Phillips - Videopac+ (O2EM)' (Emu/, the stock menu entry)"
- folder: VMU
source_ref: "os static/packages/RApp/Sega%20-%20Visual%20Memory%20Unit%20(VeMUlator)/RApp/vemulator/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: WS
extensions:
- .7z
- .pc2
- .ws
- .wsc
- .zip
core: mednafen_wswan
emulator: retroarch
source_ref: "os static/packages/Emu/Bandai%20-%20WonderSwanColor%20(B.%20Cygne)/Emu/WS/config.json:6"
note: "package 'Bandai - WonderSwanColor (B. Cygne)' (Emu/, the stock menu entry)"
- folder: X68000
source_ref: "os static/packages/RApp/Sharp%20-%20X68000%20(PX68k)/RApp/X68000/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: XONE
source_ref: "os static/packages/RApp/Commodore%20-%20Sharp%20X1%20(x1)/RApp/x1/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: ZXEIGHTYONE
source_ref: "os static/packages/RApp/Sinclair%20-%20ZX81%20(81)/RApp/zx81/config.json:6"
note: "only RetroArch-section packages (RApp/), the user picks the core"
- folder: ZXS
extensions:
- .7z
- .rzx
- .scl
- .tap
- .trd
- .tzx
- .z80
- .zip
core: fuse
emulator: retroarch
source_ref: "os static/packages/Emu/Sinclair%20-%20ZX%20Spectrum%20(Fuse)/Emu/ZXS/config.json:6"
note: "package 'Sinclair - ZX Spectrum (Fuse)' (Emu/, the stock menu entry)"
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+20
View File
@@ -0,0 +1,20 @@
setup: retroarch
name: RetroArch
platform: retroarch
sources:
os:
repo: "https://github.com/libretro/RetroArch"
commit: 69a4f0ea1e8aaf442ae4858f2e7f2b31a1776576
tag: v1.22.2
roms_root:
path: none
from_bios: null
source_ref: "os configuration.c:3126,3295-3298"
case_sensitive: null
notes:
- "RetroArch alone defines no rom folder. rgui_browser_directory starts empty and only a platform default\
\ fills it, which no desktop driver sets (os configuration.c:3126,3295-3298). The path none says so."
- "Content reaches a core through playlists built by scanning against the content databases (os tasks/task_database.c),\
\ or from the file browser with a core the user picks. The system can only come from the game itself\
\ or from a folder the user names."
folders: []
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+863
View File
@@ -0,0 +1,863 @@
setup: retropie
name: RetroPie
platform: retropie
sources:
os:
repo: "https://github.com/RetroPie/RetroPie-Setup"
commit: 46128cd252cdecae852a4d0bafa2aaf9d03ab563
es:
repo: "https://github.com/RetroPie/EmulationStation"
commit: a31c36a77b385a6ea3f6667e75ef468ff79678a6
note: branch stable, the one scriptmodules/supplementary/emulationstation.sh builds
roms_root:
path: ~/RetroPie/roms
from_bios: ../roms
source_ref: "os retropie_packages.sh:47-49; os scriptmodules/helpers.sh:1412"
case_sensitive: true
case_ref: "os scriptmodules/helpers.sh:1435-1437"
hidden:
- pattern: .*
source_ref: "es es-app/src/SystemData.cpp:102-104"
notes:
- "addSystem appends the upper-case form of each extension because EmulationStation compares them as written\
\ (os scriptmodules/helpers.sh:1435-1437)."
- "Each folder is <romdir>/<system> for a system platforms.cfg lists (os scriptmodules/helpers.sh:1406-1413).\
\ A folder appears only once a module calls addSystem for it."
- "The default is the first module installed that calls addEmulator with 1 (os scriptmodules/helpers.sh:1565-1570).\
\ Rows give it for a basic install on x86_64, the core section then the main one, in registration order\
\ (os scriptmodules/admin/setup.sh:606-611; os scriptmodules/packages.sh:1037-1038; flags from os scriptmodules/system.sh:537,673-683).\
\ A system no basic-install module serves takes the first optional (opt, then exp) module."
folders:
- folder: 3do
extensions:
- .chd
- .cue
- .iso
- .zip
core: lr-opera
emulator: retroarch
source_ref: "os platforms.cfg:1; os scriptmodules/libretrocores/lr-opera.sh:43"
- folder: ags
extensions:
- .exe
core: ags
emulator: ags
source_ref: "os platforms.cfg:4; os scriptmodules/emulators/ags.sh:54"
- folder: amiga
extensions:
- .adf
- .adz
- .chd
- .cue
- .dms
- .hdf
- .hdz
- .ipf
- .lha
- .m3u
- .sh
- .uae
- .zip
core: amiberry
emulator: amiberry
source_ref: "os platforms.cfg:7; os scriptmodules/emulators/amiberry.sh:111"
- folder: amstradcpc
extensions:
- .cdt
- .cpc
- .cpr
- .dsk
- .m3u
- .tap
- .zip
core: lr-caprice32
emulator: retroarch
source_ref: "os platforms.cfg:10; os scriptmodules/libretrocores/lr-caprice32.sh:44"
- folder: apple2
extensions:
- .dsk
- .nib
- .po
core: linapple
emulator: linapple
source_ref: "os platforms.cfg:13; os scriptmodules/emulators/linapple.sh:51"
- folder: arcade
extensions:
- .7z
- .cue
- .fba
- .iso
- .zip
core: advmame
emulator: advmame
source_ref: "os platforms.cfg:16; os scriptmodules/emulators/advmame.sh:144"
- folder: arcadia
extensions:
- .bin
- .zip
source_ref: "os platforms.cfg:19"
- folder: atari2600
extensions:
- .7z
- .a26
- .bin
- .gz
- .rom
- .zip
core: lr-stella2014
emulator: retroarch
source_ref: "os platforms.cfg:22; os scriptmodules/libretrocores/lr-stella2014.sh:41"
- folder: atari5200
extensions:
- .7z
- .a52
- .bin
- .car
- .zip
core: lr-atari800
emulator: retroarch
source_ref: "os platforms.cfg:25; os scriptmodules/libretrocores/lr-atari800.sh:47"
- folder: atari7800
extensions:
- .7z
- .a78
- .bin
- .zip
core: lr-prosystem
emulator: retroarch
source_ref: "os platforms.cfg:28; os scriptmodules/libretrocores/lr-prosystem.sh:41"
- folder: atari800
extensions:
- .7z
- .atr
- .atr.gz
- .atx
- .bas
- .bin
- .car
- .cas
- .com
- .dcm
- .rom
- .xex
- .xfd
- .xfd.gz
- .zip
core: lr-atari800
emulator: retroarch
source_ref: "os platforms.cfg:31; os scriptmodules/libretrocores/lr-atari800.sh:46"
- folder: atarijaguar
extensions:
- .j64
- .jag
- .zip
core: lr-virtualjaguar
emulator: retroarch
source_ref: "os platforms.cfg:34; os scriptmodules/libretrocores/lr-virtualjaguar.sh:43"
- folder: atarilynx
extensions:
- .7z
- .lnx
- .zip
core: lr-handy
emulator: retroarch
source_ref: "os platforms.cfg:37; os scriptmodules/libretrocores/lr-handy.sh:40"
- folder: atarist
extensions:
- .ctr
- .img
- .ipf
- .m3u
- .raw
- .rom
- .st
- .stx
- .zip
core: hatari-fast
emulator: hatari-fast
source_ref: "os platforms.cfg:40; os scriptmodules/emulators/hatari.sh:88"
- folder: c64
extensions:
- .cmd
- .crt
- .d64
- .d71
- .d80
- .d81
- .g64
- .m3u
- .prg
- .t64
- .tap
- .vsf
- .x64
- .zip
core: vice-x64
emulator: vice-x64
source_ref: "os platforms.cfg:43; os scriptmodules/emulators/vice.sh:76"
- folder: channelf
extensions:
- .7z
- .bin
- .rom
- .zip
core: lr-freechaf
emulator: retroarch
source_ref: "os platforms.cfg:46; os scriptmodules/libretrocores/lr-freechaf.sh:41"
- folder: coco
extensions:
- .asc
- .bas
- .bin
- .cas
- .ccc
- .dmk
- .dsk
- .jvc
- .os9
- .rom
- .sna
- .vdk
- .wav
core: xroar-cocous
emulator: xroar-cocous
source_ref: "os platforms.cfg:49; os scriptmodules/emulators/xroar.sh:59"
- folder: coleco
extensions:
- .bin
- .col
- .rom
- .zip
core: lr-bluemsx
emulator: retroarch
source_ref: "os platforms.cfg:52; os scriptmodules/libretrocores/lr-bluemsx.sh:42"
- folder: crvision
extensions:
- .rom
- .zip
source_ref: "os platforms.cfg:57"
- folder: daphne
extensions:
- .daphne
- .ogv
source_ref: "os platforms.cfg:60"
- folder: dragon32
extensions:
- .asc
- .bas
- .bin
- .cas
- .ccc
- .dmk
- .dsk
- .jvc
- .os9
- .rom
- .sna
- .vdk
- .wav
core: xroar-dragon32
emulator: xroar-dragon32
source_ref: "os platforms.cfg:63; os scriptmodules/emulators/xroar.sh:58"
- folder: dreamcast
extensions:
- .cdi
- .chd
- .cue
- .gdi
- .m3u
- .sh
- .zip
core: "reicast-audio-${backend}"
emulator: "reicast-audio-${backend}"
source_ref: "os platforms.cfg:66; os scriptmodules/emulators/reicast.sh:143"
- folder: enterprise
extensions:
- '.128'
- .bas
- .com
- .dsk
- .dtf
- .img
- .tap
- .trn
- .wav
core: lr-ep128emu
emulator: retroarch
source_ref: "os platforms.cfg:69; os scriptmodules/libretrocores/lr-ep128emu.sh:41"
- folder: fba
extensions:
- .7z
- .cue
- .fba
- .iso
- .zip
source_ref: "os platforms.cfg:72"
- folder: fds
extensions:
- .7z
- .fds
- .nes
- .zip
core: lr-nestopia
emulator: retroarch
source_ref: "os platforms.cfg:76; os scriptmodules/libretrocores/lr-nestopia.sh:46"
- folder: fm7
extensions:
- .2d
- .d77
- .d88
- .t77
core: xm7
emulator: xm7
source_ref: "os platforms.cfg:79; os scriptmodules/emulators/xm7.sh:66"
- folder: gameandwatch
extensions:
- .mgw
core: lr-gw
emulator: retroarch
source_ref: "os platforms.cfg:82; os scriptmodules/libretrocores/lr-gw.sh:41"
- folder: gamegear
extensions:
- .7z
- .bin
- .gg
- .sms
- .zip
source_ref: "os platforms.cfg:85"
- folder: gb
extensions:
- .7z
- .gb
- .zip
core: lr-gambatte
emulator: retroarch
source_ref: "os platforms.cfg:91; os scriptmodules/libretrocores/lr-gambatte.sh:49"
- folder: gba
extensions:
- .7z
- .gba
- .zip
source_ref: "os platforms.cfg:88"
- folder: gbc
extensions:
- .7z
- .gbc
- .zip
core: lr-gambatte
emulator: retroarch
source_ref: "os platforms.cfg:94; os scriptmodules/libretrocores/lr-gambatte.sh:50"
- folder: gc
extensions:
- .ciso
- .gcm
- .gcz
- .iso
- .m3u
- .rvz
core: dolphin-gui
emulator: dolphin-gui
source_ref: "os platforms.cfg:97; os scriptmodules/emulators/dolphin.sh:83"
- folder: intellivision
extensions:
- .7z
- .bin
- .int
- .itv
- .rom
- .zip
core: jzintv
emulator: jzintv
source_ref: "os platforms.cfg:100; os scriptmodules/emulators/jzintv.sh:123"
- folder: love
extensions:
- .love
source_ref: "os platforms.cfg:103"
- folder: macintosh
extensions:
- .dsk
- .txt
core: basilisk
emulator: basilisk
source_ref: "os platforms.cfg:106; os scriptmodules/emulators/basilisk.sh:56"
- folder: mame
extensions:
- .7z
- .zip
source_ref: "os platforms.cfg:109"
- folder: mame-advmame
extensions:
- .zip
core: advmame
emulator: advmame
source_ref: "os platforms.cfg:114; os scriptmodules/emulators/advmame.sh:145"
- folder: mame-libretro
extensions:
- .zip
source_ref: "os platforms.cfg:119"
- folder: mame-mame4all
extensions:
- .zip
source_ref: "os platforms.cfg:124"
- folder: mastersystem
extensions:
- .7z
- .bin
- .sms
- .zip
source_ref: "os platforms.cfg:129"
- folder: megadrive
extensions:
- .7z
- .bin
- .gen
- .md
- .sg
- .smd
- .zip
source_ref: "os platforms.cfg:132"
- folder: moto
extensions:
- .fd
- .k7
- .m5
- .m7
- .rom
- .sap
core: lr-theodore
emulator: retroarch
source_ref: "os platforms.cfg:140; os scriptmodules/libretrocores/lr-theodore.sh:43"
- folder: msx
extensions:
- .cas
- .col
- .dsk
- .m3u
- .mx1
- .mx2
- .rom
- .zip
core: lr-bluemsx
emulator: retroarch
source_ref: "os platforms.cfg:137; os scriptmodules/libretrocores/lr-bluemsx.sh:39"
- folder: n64
extensions:
- .n64
- .v64
- .z64
- .zip
core: mupen64plus-auto
emulator: mupen64plus-auto
source_ref: "os platforms.cfg:143; os scriptmodules/emulators/mupen64plus.sh:297"
- folder: nds
extensions:
- .nds
- .zip
source_ref: "os platforms.cfg:146"
- folder: neogeo
extensions:
- .7z
- .chd
- .cue
- .fba
- .iso
- .zip
source_ref: "os platforms.cfg:149"
- folder: nes
extensions:
- .7z
- .nes
- .zip
source_ref: "os platforms.cfg:152"
- folder: ngp
extensions:
- .7z
- .ngp
- .zip
core: lr-beetle-ngp
emulator: retroarch
source_ref: "os platforms.cfg:155; os scriptmodules/libretrocores/lr-beetle-ngp.sh:45"
- folder: ngpc
extensions:
- .7z
- .ngc
- .zip
core: lr-beetle-ngp
emulator: retroarch
source_ref: "os platforms.cfg:158; os scriptmodules/libretrocores/lr-beetle-ngp.sh:45"
- folder: np2pi
extensions:
- .2hd
- .88d
- .98d
- .d88
- .d98
- .dup
- .fdi
- .hdd
- .hdi
- .hdm
- .nhd
- .tfd
- .thd
- .xdf
source_ref: "os platforms.cfg:161"
- folder: oric
extensions:
- .dsk
- .tap
source_ref: "os platforms.cfg:164"
- folder: pc
extensions:
- .bat
- .com
- .conf
- .cue
- .dosz
- .exe
- .ima
- .img
- .ins
- .iso
- .m3u
- .m3u8
- .sh
- .vhd
- .zip
source_ref: "os platforms.cfg:173"
- folder: pc88
extensions:
- .cmt
- .d88
- .m3u
- .t88
core: quasi88
emulator: quasi88
source_ref: "os platforms.cfg:167; os scriptmodules/emulators/quasi88.sh:52"
- folder: pc98
extensions:
- .2hd
- .88d
- .98d
- .cmd
- .d88
- .d98
- .dup
- .fdd
- .fdi
- .hdd
- .hdi
- .hdm
- .nhd
- .tfd
- .thd
- .xdf
- .zip
core: lr-np2kai
emulator: retroarch
source_ref: "os platforms.cfg:170; os scriptmodules/libretrocores/lr-np2kai.sh:40"
- folder: pcengine
extensions:
- .7z
- .ccd
- .chd
- .cue
- .pce
- .zip
core: lr-beetle-pce-fast
emulator: retroarch
source_ref: "os platforms.cfg:176; os scriptmodules/libretrocores/lr-beetle-pce-fast.sh:46"
- folder: pcfx
extensions:
- .ccd
- .chd
- .cue
- .iso
- .pce
core: lr-beetle-pcfx
emulator: retroarch
source_ref: "os platforms.cfg:180; os scriptmodules/libretrocores/lr-beetle-pcfx.sh:39"
- folder: pico8
extensions:
- .p8
- .png
- .zip
core: lr-retro8
emulator: retroarch
source_ref: "os platforms.cfg:183; os scriptmodules/libretrocores/lr-retro8.sh:40"
- folder: pokemini
extensions:
- .min
- .zip
core: lr-pokemini
emulator: retroarch
source_ref: "os platforms.cfg:186; os scriptmodules/libretrocores/lr-pokemini.sh:39"
- folder: ports
extensions:
- .sh
source_ref: "os platforms.cfg:189"
- folder: ps2
extensions:
- .bin
- .bz2
- .chd
- .cso
- .dump
- .gz
- .ima
- .img
- .iso
- .mdf
- .z
- .z2
core: pcsx2-nogui
emulator: pcsx2-nogui
source_ref: "os platforms.cfg:193; os scriptmodules/emulators/pcsx2.sh:78"
- folder: psp
extensions:
- .chd
- .cso
- .iso
- .pbp
core: lr-ppsspp
emulator: retroarch
source_ref: "os platforms.cfg:196; os scriptmodules/libretrocores/lr-ppsspp.sh:65"
- folder: psx
extensions:
- .cbn
- .chd
- .cue
- .img
- .iso
- .m3u
- .mdf
- .pbp
- .toc
- .z
- .znx
source_ref: "os platforms.cfg:199"
- folder: samcoupe
extensions:
- .dsk
- .mgt
- .sad
- .sbt
core: simcoupe
emulator: simcoupe
source_ref: "os platforms.cfg:202; os scriptmodules/emulators/simcoupe.sh:64"
- folder: saturn
extensions:
- .chd
- .cue
- .m3u
- .mdf
- .zip
core: lr-beetle-saturn
emulator: retroarch
source_ref: "os platforms.cfg:205; os scriptmodules/libretrocores/lr-beetle-saturn.sh:40"
- folder: scummvm
extensions:
- .sh
- .svm
core: scummvm
emulator: scummvm
source_ref: "os platforms.cfg:208; os scriptmodules/emulators/scummvm.sh:97"
- folder: sega32x
extensions:
- .32x
- .7z
- .bin
- .md
- .smd
- .zip
source_ref: "os platforms.cfg:211"
- folder: segacd
extensions:
- .chd
- .cue
- .iso
- .m3u
source_ref: "os platforms.cfg:214"
- folder: sg-1000
extensions:
- .7z
- .bin
- .sg
- .zip
source_ref: "os platforms.cfg:217"
- folder: snes
extensions:
- .7z
- .bin
- .bs
- .fig
- .mgd
- .sfc
- .smc
- .swc
- .zip
core: lr-bsnes
emulator: retroarch
source_ref: "os platforms.cfg:220; os scriptmodules/libretrocores/lr-bsnes.sh:45"
- folder: solarus
extensions:
- .solarus
- .zip
source_ref: "os platforms.cfg:223"
- folder: ti99
extensions:
- .ctg
core: ti99sim
emulator: ti99sim
source_ref: "os platforms.cfg:226; os scriptmodules/emulators/ti99sim.sh:53"
- folder: tic80
extensions:
- .tic
- .zip
core: lr-tic80
emulator: retroarch
source_ref: "os platforms.cfg:229; os scriptmodules/libretrocores/lr-tic80.sh:48"
- folder: trs-80
extensions:
- .dsk
core: sdltrs-model1
emulator: sdltrs-model1
source_ref: "os platforms.cfg:232; os scriptmodules/emulators/sdltrs.sh:49"
- folder: tvc
extensions:
- .cas
- .dsk
- .img
- .tvcwav
core: lr-ep128emu
emulator: retroarch
source_ref: "os platforms.cfg:235; os scriptmodules/libretrocores/lr-ep128emu.sh:41"
- folder: vectrex
extensions:
- .7z
- .bin
- .gam
- .vec
- .zip
core: lr-vecx
emulator: retroarch
source_ref: "os platforms.cfg:238; os scriptmodules/libretrocores/lr-vecx.sh:61"
- folder: videopac
extensions:
- .7z
- .bin
- .zip
core: lr-o2em
emulator: retroarch
source_ref: "os platforms.cfg:241; os scriptmodules/libretrocores/lr-o2em.sh:40"
- folder: virtualboy
extensions:
- .7z
- .vb
- .zip
core: lr-beetle-vb
emulator: retroarch
source_ref: "os platforms.cfg:244; os scriptmodules/libretrocores/lr-beetle-vb.sh:42"
- folder: wii
extensions:
- .ciso
- .gcm
- .gcz
- .iso
- .m3u
- .rvz
- .wad
- .wbfs
core: dolphin-gui
emulator: dolphin-gui
source_ref: "os platforms.cfg:247; os scriptmodules/emulators/dolphin.sh:85"
- folder: wonderswan
extensions:
- .7z
- .ws
- .zip
core: lr-beetle-wswan
emulator: retroarch
source_ref: "os platforms.cfg:250; os scriptmodules/libretrocores/lr-beetle-wswan.sh:46"
- folder: wonderswancolor
extensions:
- .7z
- .wsc
- .zip
core: lr-beetle-wswan
emulator: retroarch
source_ref: "os platforms.cfg:253; os scriptmodules/libretrocores/lr-beetle-wswan.sh:47"
- folder: x1
extensions:
- .2d
- .2hd
- .88d
- .cmd
- .d88
- .dup
- .dx1
- .hdm
- .tfd
- .xdf
- .zip
core: lr-x1
emulator: retroarch
source_ref: "os platforms.cfg:256; os scriptmodules/libretrocores/lr-x1.sh:40"
- folder: x68000
extensions:
- .2hd
- .d88
- .dim
- .hdf
- .hdm
- .m3u
- .xdf
core: px68k
emulator: px68k
source_ref: "os platforms.cfg:259; os scriptmodules/emulators/px68k.sh:61"
- folder: zmachine
extensions:
- .dat
- .z1
- .z2
- .z3
- .z4
- .z5
- .z6
- .z7
- .z8
- .zip
core: frotz
emulator: frotz
source_ref: "os platforms.cfg:262; os scriptmodules/emulators/frotz.sh:52"
- folder: zx81
extensions:
- .7z
- .p
- .t81
- .tzx
- .zip
core: lr-81
emulator: retroarch
source_ref: "os platforms.cfg:265; os scriptmodules/libretrocores/lr-81.sh:40"
- folder: zxspectrum
extensions:
- .7z
- .dsk
- .gz
- .img
- .mgt
- .rzx
- .scl
- .sh
- .sna
- .szx
- .tap
- .trd
- .tzx
- .udi
- .z80
- .zip
core: lr-fuse
emulator: retroarch
source_ref: "os platforms.cfg:268; os scriptmodules/libretrocores/lr-fuse.sh:44"
File diff suppressed because it is too large. Load diff
+465
View File
@@ -0,0 +1,465 @@
setup: romm
name: RomM
platform: romm
sources:
os:
repo: "https://github.com/rommapp/romm"
commit: 68f71259f7c6de39fbeedff9cc9ac114c18ee250
tag: 5.4.0
roms_root:
path: /romm/library/roms
from_bios: ../roms
source_ref: "os backend/config/__init__.py:46-48; os backend/config/config_manager.py:57-58"
case_sensitive: true
skip:
- name: assets
source_ref: "os backend/config/config_manager.py:288-300"
- name: __MACOSX
source_ref: "os backend/config/config_manager.py:288-300"
- name: System Volume Information
source_ref: "os backend/config/config_manager.py:288-300"
hidden:
- pattern: .*
source_ref: "os backend/handler/filesystem/roms_handler.py:530-545"
- pattern: '*.db'
source_ref: "os backend/config/config_manager.py:267-276"
- pattern: '*.tmp'
source_ref: "os backend/config/config_manager.py:267-276"
- pattern: '*.bak'
source_ref: "os backend/config/config_manager.py:267-276"
- pattern: '*.lock'
source_ref: "os backend/config/config_manager.py:267-276"
- pattern: '*.log'
source_ref: "os backend/config/config_manager.py:267-276"
- pattern: '*.cache'
source_ref: "os backend/config/config_manager.py:267-276"
- pattern: '*.crdownload'
source_ref: "os backend/config/config_manager.py:267-276"
- name: gamelist.xml
source_ref: "os backend/config/config_manager.py:277-286"
- name: metadata.pegasus.txt
source_ref: "os backend/config/config_manager.py:277-286"
media:
- name: images
source_ref: "os backend/config/config_manager.py:303-324"
- name: covers
source_ref: "os backend/config/config_manager.py:303-324"
- name: manuals
source_ref: "os backend/config/config_manager.py:303-324"
- name: screenshots
source_ref: "os backend/config/config_manager.py:303-324"
- name: videos
source_ref: "os backend/config/config_manager.py:303-324"
notes:
- "The default layout is roms/{platform}/{game} and bios/{platform} under /romm/library (os backend/config/config_manager.py:57-58).\
\ config.yml can switch to {platform}/roms and {platform}/bios (os backend/config/config_manager.py:1121-1122)."
- RomM has no extension allow-list. Every file is a ROM except the excluded extensions and names, and
config.yml extends both lists.
- "A folder is any IGDB or RomM platform slug. The rows are the slugs RomM plays in the browser (_EJS_CORES_MAP)\
\ or keeps BIOS for (known_bios_files.json), and the core is the first EmulatorJS core listed."
folders:
- folder: 3do
core: opera
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:406"
- folder: 3ds
core: azahar
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:494"
note: core only with EmulatorJS nightly cores
- folder: 64dd
source_ref: os backend/models/fixtures/known_bios_files.json
note: no EmulatorJS core, RomM keeps BIOS for it
- folder: acpc
core: cap32
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:407"
- folder: amiga
core: puae
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:408"
- folder: amiga-cd32
core: puae
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:409"
- folder: arcade
core: mame2003_plus
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:410"
- folder: atari-2600-plus
core: stella2014
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:420"
- folder: atari-lynx-mkii
core: handy
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:434"
- folder: atari-st
source_ref: os backend/models/fixtures/known_bios_files.json
note: no EmulatorJS core, RomM keeps BIOS for it
- folder: atari2600
core: stella2014
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:419"
- folder: atari5200
core: a5200
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:421"
- folder: atari7800
core: prosystem
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:422"
- folder: atari8bit
source_ref: os backend/models/fixtures/known_bios_files.json
note: no EmulatorJS core, RomM keeps BIOS for it
- folder: c-plus-4
core: vice_xplus4
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:423"
- folder: c128
core: vice_x128
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:427"
- folder: c64
core: vice_x64sc
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:424"
- folder: colecovision
core: gearcoleco
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:429"
- folder: commmodore-128
core: vice_x128
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:428"
- folder: commodore-64c
core: vice_x64sc
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:426"
- folder: cpet
core: vice_xpet
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:425"
- folder: dc
source_ref: os backend/models/fixtures/known_bios_files.json
note: no EmulatorJS core, RomM keeps BIOS for it
- folder: doom
core: prboom
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:430"
- folder: dos
core: dosbox_pure
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:431"
- folder: enterprise
source_ref: os backend/models/fixtures/known_bios_files.json
note: no EmulatorJS core, RomM keeps BIOS for it
- folder: fairchild-channel-f
source_ref: os backend/models/fixtures/known_bios_files.json
note: no EmulatorJS core, RomM keeps BIOS for it
- folder: famicom
core: fceumm
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:438"
- folder: fds
core: fceumm
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:439"
- folder: game-boy-adavance-sp
core: mgba
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:452"
- folder: game-boy-light
core: gambatte
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:450"
- folder: game-boy-micro
core: mgba
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:453"
- folder: game-boy-pocket
core: gambatte
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:449"
- folder: game-televisison
core: fceumm
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:440"
- folder: gamegear
core: genesis_plus_gx
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:461"
- folder: gb
core: gambatte
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:448"
- folder: gba
core: mgba
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:451"
- folder: gbc
core: gambatte
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:454"
- folder: genesis
core: genesis_plus_gx
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:468"
- folder: intellivision
core: freeintv
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:496"
note: core only with EmulatorJS nightly cores
- folder: ique-player
core: mupen64plus_next
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:443"
- folder: j2me
source_ref: os backend/models/fixtures/known_bios_files.json
note: no EmulatorJS core, RomM keeps BIOS for it
- folder: jaguar
core: virtualjaguar
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:432"
- folder: lynx
core: handy
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:433"
- folder: mac
source_ref: os backend/models/fixtures/known_bios_files.json
note: no EmulatorJS core, RomM keeps BIOS for it
- folder: master-system-girl
core: genesis_plus_gx
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:467"
- folder: master-system-super-compact
core: genesis_plus_gx
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:466"
- folder: mega-pc
core: genesis_plus_gx
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:471"
- folder: msx
source_ref: os backend/models/fixtures/known_bios_files.json
note: no EmulatorJS core, RomM keeps BIOS for it
- folder: msx2
source_ref: os backend/models/fixtures/known_bios_files.json
note: no EmulatorJS core, RomM keeps BIOS for it
- folder: n64
core: mupen64plus_next
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:442"
- folder: nds
core: melonds
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:444"
- folder: neo-geo-cd
source_ref: os backend/models/fixtures/known_bios_files.json
note: no EmulatorJS core, RomM keeps BIOS for it
- folder: neo-geo-pocket
core: mednafen_ngp
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:435"
- folder: neo-geo-pocket-color
core: mednafen_ngp
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:436"
- folder: neogeoaes
core: fbneo
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:417"
- folder: neogeomvs
core: fbneo
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:418"
- folder: nes
core: fceumm
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:437"
- folder: new-nintendo-3ds
core: azahar
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:495"
note: core only with EmulatorJS nightly cores
- folder: new-style-nes
core: fceumm
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:441"
- folder: new-style-super-nes-model-sns-101
core: snes9x
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:480"
- folder: ngc
source_ref: os backend/models/fixtures/known_bios_files.json
note: no EmulatorJS core, RomM keeps BIOS for it
- folder: nintendo-ds-lite
core: melonds
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:445"
- folder: nintendo-dsi
core: melonds
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:446"
- folder: nintendo-dsi-xl
core: melonds
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:447"
- folder: odyssey-2-slash-videopac-g7000
source_ref: os backend/models/fixtures/known_bios_files.json
note: no EmulatorJS core, RomM keeps BIOS for it
- folder: pc-9800-series
source_ref: os backend/models/fixtures/known_bios_files.json
note: no EmulatorJS core, RomM keeps BIOS for it
- folder: pc-fx
core: mednafen_pcfx
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:455"
- folder: philips-cd-i
core: same_cdi
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:457"
- folder: pokemon-mini
source_ref: os backend/models/fixtures/known_bios_files.json
note: no EmulatorJS core, RomM keeps BIOS for it
- folder: ps2
source_ref: os backend/models/fixtures/known_bios_files.json
note: no EmulatorJS core, RomM keeps BIOS for it
- folder: psp
core: ppsspp
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:458"
- folder: psx
core: pcsx_rearmed
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:456"
- folder: satellaview
source_ref: os backend/models/fixtures/known_bios_files.json
note: no EmulatorJS core, RomM keeps BIOS for it
- folder: saturn
core: yabause
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:474"
- folder: scummvm
source_ref: os backend/models/fixtures/known_bios_files.json
note: no EmulatorJS core, RomM keeps BIOS for it
- folder: sega-game-box-9
core: genesis_plus_gx
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:464"
- folder: sega-mark-iii
core: genesis_plus_gx
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:463"
- folder: sega-master-system-ii
core: genesis_plus_gx
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:465"
- folder: sega-mega-drive-2-slash-genesis
core: genesis_plus_gx
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:469"
- folder: sega-mega-jet
core: genesis_plus_gx
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:470"
- folder: sega-nomad
core: genesis_plus_gx
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:473"
- folder: sega32
core: picodrive
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:460"
- folder: segacd
core: genesis_plus_gx
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:459"
- folder: sfam
core: snes9x
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:476"
- folder: sharp-x68000
source_ref: os backend/models/fixtures/known_bios_files.json
note: no EmulatorJS core, RomM keeps BIOS for it
- folder: sms
core: genesis_plus_gx
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:462"
- folder: snes
core: snes9x
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:475"
- folder: sufami-turbo
source_ref: os backend/models/fixtures/known_bios_files.json
note: no EmulatorJS core, RomM keeps BIOS for it
- folder: super-famicom-jr-model-shvc-101
core: snes9x
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:479"
- folder: super-famicom-shvc-001
core: snes9x
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:478"
- folder: super-gb
source_ref: os backend/models/fixtures/known_bios_files.json
note: no EmulatorJS core, RomM keeps BIOS for it
- folder: super-nintendo-original-european-version
core: snes9x
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:477"
- folder: supergrafx
core: mednafen_pce
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:483"
- folder: swancrystal
core: mednafen_wswan
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:487"
- folder: tera-drive
core: genesis_plus_gx
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:472"
- folder: tg16
core: mednafen_pce
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:481"
- folder: turbografx-cd
core: mednafen_pce
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:482"
- folder: tvc
source_ref: os backend/models/fixtures/known_bios_files.json
note: no EmulatorJS core, RomM keeps BIOS for it
- folder: vic-20
core: vice_xvic
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:484"
- folder: videopac-g7400
source_ref: os backend/models/fixtures/known_bios_files.json
note: no EmulatorJS core, RomM keeps BIOS for it
- folder: virtualboy
core: beetle_vb
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:485"
- folder: wolfenstein
source_ref: os backend/models/fixtures/known_bios_files.json
note: no EmulatorJS core, RomM keeps BIOS for it
- folder: wonderswan
core: mednafen_wswan
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:486"
- folder: wonderswan-color
core: mednafen_wswan
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:488"
- folder: x1
source_ref: os backend/models/fixtures/known_bios_files.json
note: no EmulatorJS core, RomM keeps BIOS for it
- folder: xbox
source_ref: os backend/models/fixtures/known_bios_files.json
note: no EmulatorJS core, RomM keeps BIOS for it
- folder: zxs
core: fuse
emulator: emulatorjs
source_ref: "os frontend/src/utils/index.ts:489"
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+123
View File
@@ -0,0 +1,123 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://abdess.github.io/retrobios/api/v1/schemas/romfolders.schema.json",
"title": "RetroBIOS rom folders of one setup",
"description": "What a frontend's own source says about its game folders, read at pinned revisions (platforms/romfolders/<setup>.yml, written by python -m scripts.scraper.romfolders). Names are the OS's own: scripts/romfolders.py resolves them to repository systems and profiles.",
"type": "object",
"additionalProperties": false,
"required": ["setup", "name", "platform", "sources", "roms_root", "case_sensitive", "folders"],
"$defs": {
"ref": {
"type": "string",
"description": "'<source key> <path>:<line>[-<line>]', several joined by '; '. The key names an entry of sources.",
"pattern": "^[a-z0-9][a-z0-9-]* \\S+(?:; [a-z0-9][a-z0-9-]* \\S+)*$"
},
"named_rule": {
"type": "object",
"additionalProperties": false,
"required": ["source_ref"],
"properties": {
"name": { "type": "string", "minLength": 1 },
"pattern": { "type": "string", "minLength": 1 },
"reason": { "type": "string", "minLength": 1 },
"source_ref": { "$ref": "#/$defs/ref" }
},
"oneOf": [{ "required": ["name"] }, { "required": ["pattern"] }]
},
"board_default": {
"type": "object",
"additionalProperties": false,
"required": ["core", "source_ref"],
"properties": {
"core": { "type": "string", "minLength": 1 },
"emulator": { "type": "string", "minLength": 1 },
"source_ref": { "$ref": "#/$defs/ref" }
}
}
},
"properties": {
"setup": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]*$" },
"name": { "type": "string", "minLength": 1 },
"platform": {
"type": "string",
"description": "The install manifest (install/<platform>.json) the installer uses on this setup, as install.py's OS rules choose it. Empty for a setup the installer lays out with no manifest."
},
"sources": {
"type": "object",
"minProperties": 1,
"additionalProperties": {
"type": "object",
"additionalProperties": false,
"required": ["repo", "commit"],
"properties": {
"repo": { "type": "string", "pattern": "^https://" },
"commit": { "type": "string", "pattern": "^[0-9a-f]{40}$" },
"tag": { "type": "string" },
"note": { "type": "string" }
}
}
},
"roms_root": {
"type": "object",
"additionalProperties": false,
"required": ["path", "from_bios", "source_ref"],
"properties": {
"path": { "type": ["string", "null"], "minLength": 1, "description": "Null for a setup with no rom folder of its own." },
"from_bios": {
"type": ["string", "null"],
"description": "The roms root relative to the BIOS folder the installer already knows. Null when no fixed relation exists."
},
"source_ref": { "$ref": "#/$defs/ref" }
}
},
"case_sensitive": {
"type": ["boolean", "null"],
"description": "Whether the OS opens a folder only under the spelling it lists. Null when the source does not settle it (filesystem dependent)."
},
"case_ref": { "$ref": "#/$defs/ref" },
"skip": {
"type": "array",
"description": "Folders under the roms root the scan never enters (the ELEC family's bios folder, the OS's own data).",
"items": { "$ref": "#/$defs/named_rule" }
},
"hidden": {
"type": "array",
"description": "File and folder name patterns (fnmatch, case-insensitive) the OS hides from its game list.",
"items": { "$ref": "#/$defs/named_rule" }
},
"media": {
"type": "array",
"description": "Folders inside a system folder that hold artwork, never games.",
"items": { "$ref": "#/$defs/named_rule" }
},
"notes": { "type": "array", "items": { "type": "string", "minLength": 1 } },
"folders": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": ["folder", "source_ref"],
"properties": {
"folder": { "type": "string", "minLength": 1, "description": "Path under the roms root, as the OS writes it." },
"name": { "type": "string", "minLength": 1, "description": "The OS's own system id when it differs from the folder." },
"aliases": { "type": "array", "items": { "type": "string", "minLength": 1 }, "uniqueItems": true },
"extensions": {
"type": "array",
"description": "Lowercased, with the dot. Absent when the OS lists every file.",
"items": { "type": "string", "pattern": "^\\.[^A-Z\\s]+$" },
"uniqueItems": true
},
"core": { "type": "string", "minLength": 1, "description": "The core or emulator the OS starts by default, in its own spelling." },
"emulator": { "type": "string", "minLength": 1 },
"source_ref": { "$ref": "#/$defs/ref" },
"board_defaults": {
"type": "object",
"additionalProperties": { "$ref": "#/$defs/board_default" }
},
"arcade": { "type": "boolean" },
"note": { "type": "string", "minLength": 1 }
}
}
}
}
}
+69
View File
@@ -2677,6 +2677,75 @@ SYSTEM_ALIASES: dict[str, str] = {
"cps2": "capcom-cps2",
"cps3": "capcom-cps3",
"pgm": "igs-pgm",
# Rom folder names the setups of platforms/romfolders/ give a machine,
# each proven by the source_ref of the folder row that names it: the
# short tags of Onion, CrossMix-OS, Koriki and the MinUI family, the
# number words of Koriki and plumOS, the region and hack folders of
# ES-DE, the MSU-1 folders of the ES family, the arcade cores named as
# folders.
"a2600": "atari-2600",
"atari2600": "atari-2600",
"fiftytwohundred": "atari-5200",
"seventyeighthundred": "atari-7800",
"atarixegs": "xegs",
"atarijaguarcd": "atari-jaguarcd",
"fc": "nintendo-nes",
"nesh": "nintendo-nes",
"sfc": "nintendo-snes",
"supa": "nintendo-snes",
"snesh": "nintendo-snes",
"snesna": "nintendo-snes",
"snesmsu1": "nintendo-snes",
"snes-msu1": "nintendo-snes",
"msu1": "nintendo-snes",
"vb": "nintendo-virtualboy",
"gc": "nintendo-gamecube",
"gbh": "nintendo-gb",
"gb2players": "nintendo-gb",
"gbch": "nintendo-gbc",
"gbc2players": "nintendo-gbc",
"gbah": "nintendo-gba",
"mgba": "nintendo-gba",
"poke": "nintendo-pokemon-mini",
"pkm": "nintendo-pokemon-mini",
"md": "sega-megadrive",
"genh": "sega-megadrive",
"megadriveh": "sega-megadrive",
"megadrivejp": "sega-megadrive",
"megadrive-japan": "sega-megadrive",
"msumd": "sega-megadrive",
"mdmsu": "sega-megadrive",
"ms": "sega-mastersystem",
"mark3": "sega-mastersystem",
"gamegearh": "sega-gamegear",
"megacdjp": "sega-megacd",
"saturnjp": "sega-saturn",
"sega32xjp": "sega-32x",
"sega32xna": "sega-32x",
"thirtytwox": "sega-32x",
"segasgone": "sega-sg1000",
"ps": "sony-playstation",
"pce": "nec-pc-engine",
"tg16cd": "nec-pc-engine-cd",
"tg-cd": "nec-pc-engine-cd",
"turbografxcd": "nec-pc-engine-cd",
"neocd": "snk-neogeo-cd",
"ngcd": "snk-neogeo-cd",
"neogeocdjp": "snk-neogeo-cd",
"supervision": "watara-supervision",
"cplus4": "commodore-plus4",
"cpet": "commodore-pet",
"cpc": "amstrad-cpc",
"to8": "thomson-to8",
"tic": "tic80",
"fba": "arcade",
"hbmame": "arcade",
"advmame": "arcade",
"mame-advmame": "arcade",
"mame2000": "arcade",
"mame2003": "arcade",
"mame2003plus": "arcade",
"mame2010": "arcade",
}
+194
View File
@@ -0,0 +1,194 @@
"""Rom folders of each setup: where its games live and what each folder holds.
`platforms/romfolders/<setup>.yml` records what a frontend's own source says
about its game folders, read at a pinned revision: the roms root relative to
the BIOS folder, each folder with the system name the OS gives it, the
extensions it lists and the core it starts by default. Those files hold the
OS's facts only. Which repository system a folder is, and which profile its
core is, is decided here, through the one alias table in common.py
(`SYSTEM_ALIASES`, `_norm_system_id`) and the profiles' `cores:` lists, so a
change to either reaches every setup without a rescrape.
"""
from __future__ import annotations
import re
from dataclasses import dataclass, field
from pathlib import Path
from common import (
_norm_system_id,
list_registered_platforms,
load_emulator_profiles,
load_platform_config,
native_layer,
preferred_profile,
upstream_profile_index,
)
from safeparse import yaml_load
ROMFOLDERS_DIR = Path("platforms") / "romfolders"
SOURCES_DIR = ROMFOLDERS_DIR / "_sources"
# "<source key> <path>:<line>[-<line>]", several joined by "; ".
_REF_PART = re.compile(r"^(?P<key>[a-z0-9][a-z0-9-]*) (?P<path>\S+?)(?::(?P<lines>\d+(?:-\d+)?(?:,\d+(?:-\d+)?)*))?$")
def split_refs(source_ref: str) -> list[tuple[str, str, str | None]]:
"""Each (source key, path, lines) a source_ref names, or ValueError."""
parts: list[tuple[str, str, str | None]] = []
for raw in source_ref.split("; "):
match = _REF_PART.match(raw.strip())
if not match:
raise ValueError(f"source_ref part {raw!r} is not '<source> <path>:<line>'")
parts.append((match["key"], match["path"], match["lines"]))
return parts
def setup_paths(directory: Path = ROMFOLDERS_DIR) -> list[Path]:
"""The setup files of a directory, without the sources file."""
return sorted(p for p in Path(directory).glob("*.yml") if not p.name.startswith("_"))
def load_setup(path: Path) -> dict:
with Path(path).open(encoding="utf-8") as handle:
return yaml_load(handle)
def load_setups(directory: Path = ROMFOLDERS_DIR) -> dict[str, dict]:
"""Every setup document of a directory, keyed by its `setup:` id."""
return {doc["setup"]: doc for doc in (load_setup(p) for p in setup_paths(directory))}
@dataclass
class Resolution:
"""What a folder resolved to, and how."""
systems: list[str]
basis: str
@dataclass
class SystemResolver:
"""Folder and system names to repository system ids.
The universe is every system a profile or a platform file names. A name
resolves, in this order, as one of those ids, as a name a platform's own
file gives a system (`native_system`, the folder Batocera calls `psx`),
or through `_norm_system_id`, which applies SYSTEM_ALIASES then drops the
maker prefix and separators. A name nothing matches stays unresolved:
a new abbreviation goes into SYSTEM_ALIASES, never into a table here.
Ids that normalize alike are one machine spelled several ways
(`sega-megadrive`, `sega-mega-drive`, `mega-drive`). Each class answers
with one canonical id, the spelling most profiles use, and
`equivalents()` gives the whole class back to whoever matches a
profile's `systems:` or a manifest's `systems`.
"""
ids: set[str]
profile_use: dict[str, int]
native: dict[str, dict[str, set[str]]]
by_norm: dict[str, set[str]] = field(default_factory=dict)
canonical_of: dict[str, str] = field(default_factory=dict)
def __post_init__(self) -> None:
for sid in self.ids:
self.by_norm.setdefault(_norm_system_id(sid), set()).add(sid)
for members in self.by_norm.values():
best = min(members, key=lambda s: (-self.profile_use.get(s, 0), -len(s), s))
for sid in members:
self.canonical_of[sid] = best
@classmethod
def from_repo(
cls, emulators_dir: str = "emulators", platforms_dir: str = "platforms"
) -> SystemResolver:
profiles = load_emulator_profiles(emulators_dir)
use: dict[str, int] = {}
for profile in profiles.values():
for sid in profile.get("systems") or []:
use[str(sid)] = use.get(str(sid), 0) + 1
ids = set(use)
native: dict[str, dict[str, set[str]]] = {}
for platform in list_registered_platforms(platforms_dir, include_archived=True):
config = load_platform_config(platform, platforms_dir)
ids.update(config.get("systems", {}))
names: dict[str, set[str]] = {}
for sys_id, system in (native_layer(config) or {}).get("systems", {}).items():
for entry in system.get("files", []):
name = entry.get("native_system")
if isinstance(name, str) and name.strip():
names.setdefault(name.strip().lower(), set()).add(sys_id)
native[platform] = names
return cls(ids=ids, profile_use=use, native=native)
def canonical(self, sid: str) -> str:
return self.canonical_of.get(sid, sid)
def equivalents(self, sid: str) -> set[str]:
"""Every id spelling the same machine as sid, sid included."""
return set(self.by_norm.get(_norm_system_id(sid), ())) | {sid}
def _answer(self, found: set[str], basis: str) -> Resolution:
return Resolution(sorted({self.canonical(s) for s in found}), basis)
def resolve(self, names: list[str], platform: str = "") -> Resolution:
"""The systems the first name that resolves designates."""
for name in names:
if not name:
continue
lowered = name.strip().lower()
if lowered in self.ids:
return self._answer({lowered}, "id")
own = self.native.get(platform, {}).get(lowered)
if own and len(own) == 1:
return self._answer(own, f"native name of {platform}")
norm = self.by_norm.get(_norm_system_id(lowered))
if norm:
return self._answer(norm, "normalized id")
claimed = [
(plat, owners) for plat, table in sorted(self.native.items())
if (owners := table.get(lowered)) and len(owners) == 1
]
if claimed:
plat, owners = claimed[0]
return self._answer(owners, f"native name of {plat}")
return Resolution([], "unresolved")
@dataclass
class ProfileResolver:
"""An OS's core name to the repository profile that documents it."""
index: dict[str, set[str]]
@classmethod
def from_repo(cls, emulators_dir: str = "emulators") -> ProfileResolver:
return cls(upstream_profile_index(load_emulator_profiles(emulators_dir)))
def resolve(self, core: str | None) -> str | None:
if not core:
return None
# RetroPie names a libretro package lr-<core> (scriptmodules/libretrocores).
bare = core.removeprefix("lr-")
spellings = (core, core.lower(), bare, bare.replace("-", "_"), bare.lower().replace("-", "_"))
for name in dict.fromkeys(spellings):
found = preferred_profile(self.index, name)
if found:
return found
return None
_TAG = re.compile(r"\(([^()]+)\)\s*$")
def folder_names(row: dict) -> list[str]:
"""The names a folder row is known by, the OS's system name first.
A folder named for people and tagged for the frontend, `Sony PlayStation
(PS)` on CrossMix-OS, is also known by its tag.
"""
names = [row.get("name") or "", row["folder"], *(row.get("aliases") or [])]
names += [m.group(1).strip() for n in list(names) if (m := _TAG.search(n))]
return [n for n in dict.fromkeys(names) if n]
+193
View File
@@ -0,0 +1,193 @@
"""Scrape each setup's rom folders from its own source, at a pinned revision.
`platforms/romfolders/_sources/<setup>.yml` names the repositories and
the commits to read, the format of the system list, and the facts a parser
cannot read from a table (roms root, case rule, folders the OS never scans),
each with its `source_ref`. A format parser reads the system list and returns
one row per folder. The setup file it writes carries the OS's own names only:
`scripts/romfolders.py` resolves them to repository systems and profiles.
Every fetch goes through `upstream.fetch_file`, cached by revision, so a
second run reads nothing from the network and writes the same bytes.
"""
from __future__ import annotations
import importlib
import pkgutil
import sys
from collections.abc import Callable
from dataclasses import dataclass
from pathlib import Path
_SCRIPTS_DIR = str(Path(__file__).resolve().parents[2])
if _SCRIPTS_DIR not in sys.path:
sys.path.insert(0, _SCRIPTS_DIR)
import upstream # noqa: E402
from safeparse import yaml_load # noqa: E402
CACHE_DIR = upstream.CACHE_DIR
# Keys a setup file carries, in the order they are written.
SETUP_KEYS = (
"setup", "name", "platform", "sources", "roms_root", "case_sensitive",
"case_ref", "skip", "hidden", "media", "notes", "folders",
)
ROW_KEYS = (
"folder", "name", "aliases", "extensions", "core", "emulator", "source_ref",
"board_defaults", "arcade", "note",
)
class SourceError(RuntimeError):
"""A pinned file is absent, or its content no longer has the shape read."""
@dataclass
class Fetcher:
"""Reads pinned files of one setup's declared sources."""
sources: dict[str, dict]
cache_dir: str = CACHE_DIR
offline: bool = False
def _repo(self, key: str) -> tuple[upstream.Repo, str]:
if key not in self.sources:
raise SourceError(f"source {key!r} is not declared")
spec = self.sources[key]
repo = upstream.parse_repo(spec["repo"])
if repo is None:
raise SourceError(f"source {key!r}: unsupported forge {spec['repo']}")
return repo, spec["commit"]
def text(self, key: str, path: str) -> str:
"""One file at the pinned commit, or SourceError when absent."""
repo, sha = self._repo(key)
lines = upstream.fetch_file(repo, sha, path, self.cache_dir, self.offline)
if lines is None:
raise SourceError(f"{repo.slug}@{sha[:8]}:{path} does not exist")
return "\n".join(lines) + "\n"
def optional_text(self, key: str, path: str) -> str | None:
repo, sha = self._repo(key)
lines = upstream.fetch_file(repo, sha, path, self.cache_dir, self.offline)
return None if lines is None else "\n".join(lines) + "\n"
def tree(self, key: str, prefix: str = "") -> list[str]:
"""Every blob path under a prefix at the pinned commit."""
repo, sha = self._repo(key)
if repo.family == "gitlab" and prefix.strip("/"):
return self._gitlab_subtree(repo, sha, prefix)
paths, truncated = upstream.list_tree(repo, sha, self.cache_dir, self.offline)
if truncated:
raise SourceError(f"{repo.slug}@{sha[:8]}: the forge truncated the tree")
return sorted(p for p in paths if p.startswith(prefix))
def entries(self, key: str, directory: str) -> list[str]:
"""Paths of the files and folders directly under one directory."""
repo, sha = self._repo(key)
if repo.family != "gitlab":
prefix = directory.strip("/") + "/"
return sorted({prefix + p[len(prefix):].split("/", 1)[0] for p in self.tree(key, prefix)})
return self._gitlab_listing(repo, sha, directory, recursive=False, blobs=False)
def _gitlab_subtree(self, repo: upstream.Repo, sha: str, prefix: str) -> list[str]:
"""GitLab pages its tree 100 entries at a time and Recalbox's whole
tree outruns the page cap: list only the directory asked for."""
paths = self._gitlab_listing(repo, sha, prefix, recursive=True, blobs=True)
return sorted(p for p in paths if p.startswith(prefix))
def _gitlab_listing(
self, repo: upstream.Repo, sha: str, directory: str, *, recursive: bool, blobs: bool
) -> list[str]:
directory = directory.strip("/")
paths: list[str] = []
for page in range(1, upstream.MAX_TREE_PAGES + 1):
url = (
f"{repo.api_base}/projects/{upstream._project(repo)}/repository/tree"
f"?ref={sha}&path={directory}&recursive={'true' if recursive else 'false'}"
f"&per_page={upstream.TREE_PAGE_SIZE}&page={page}"
)
payload = upstream._api(url, self.cache_dir, self.offline)
if not isinstance(payload, list):
raise SourceError(f"{repo.slug}@{sha[:8]}: {directory} could not be listed")
paths.extend(
entry["path"] for entry in payload
if isinstance(entry, dict) and entry.get("path")
and (entry.get("type") == "blob" or not blobs)
)
if len(payload) < upstream.TREE_PAGE_SIZE:
return sorted(paths)
raise SourceError(f"{repo.slug}@{sha[:8]}: {directory} outruns the page cap")
Parser = Callable[[dict, Fetcher], list[dict]]
FORMATS: dict[str, Parser] = {}
def register(name: str) -> Callable[[Parser], Parser]:
def wrap(func: Parser) -> Parser:
if name in FORMATS:
raise ValueError(f"format {name!r} registered twice")
FORMATS[name] = func
return func
return wrap
def load_formats() -> dict[str, Parser]:
"""Import every parser module of this package once."""
if not FORMATS:
for info in pkgutil.iter_modules([str(Path(__file__).parent)]):
if not info.name.startswith("_"):
importlib.import_module(f"{__name__}.{info.name}")
return FORMATS
def load_sources(directory: Path) -> dict[str, dict]:
"""Each setup's declared sources and facts, keyed by its file name."""
out: dict[str, dict] = {}
for path in sorted(Path(directory).glob("*.yml")):
with path.open(encoding="utf-8") as handle:
out[path.stem] = yaml_load(handle) or {}
return out
def _clean_row(row: dict) -> dict:
unknown = set(row) - set(ROW_KEYS)
if unknown:
raise ValueError(f"folder {row.get('folder')!r}: unknown keys {sorted(unknown)}")
out = {key: row[key] for key in ROW_KEYS if row.get(key) not in (None, [], {}, "")}
if out.get("name") == out["folder"]:
del out["name"]
if "extensions" in out:
out["extensions"] = sorted({e.lower() for e in out["extensions"]})
if "aliases" in out:
out["aliases"] = sorted(set(out["aliases"]) - {out["folder"]})
if not out["aliases"]:
del out["aliases"]
return out
def scrape_setup(setup: str, spec: dict, fetcher: Fetcher) -> dict:
"""The setup document: declared facts, then the parsed folders."""
formats = load_formats()
fmt = spec.get("format")
rows: list[dict] = []
if fmt:
if fmt not in formats:
raise SourceError(f"{setup}: no parser for format {fmt!r}")
rows = formats[fmt](spec, fetcher)
if not rows and not spec.get("allow_empty"):
raise SourceError(f"{setup}: format {fmt} read no folder")
folders: dict[str, dict] = {}
for row in rows:
clean = _clean_row(row)
key = clean["folder"]
if key in folders:
raise SourceError(f"{setup}: folder {key!r} read twice")
folders[key] = clean
doc = {"setup": setup, **{k: spec[k] for k in SETUP_KEYS[1:-1] if k in spec}}
doc["folders"] = [folders[k] for k in sorted(folders, key=lambda f: (f.lower(), f))]
return doc
+71
View File
@@ -0,0 +1,71 @@
"""Write platforms/romfolders/<setup>.yml from each setup's pinned source.
python -m scripts.scraper.romfolders --all
python -m scripts.scraper.romfolders --setup batocera --dry-run
python -m scripts.scraper.romfolders --all --offline # cache only
"""
from __future__ import annotations
import argparse
import sys
from pathlib import Path
import yaml
from . import Fetcher, SourceError, load_sources, scrape_setup
from ..base_scraper import _PlatformDumper
DEFAULT_DIR = Path("platforms") / "romfolders"
def dump_setup(doc: dict) -> str:
return yaml.dump(
doc, Dumper=_PlatformDumper, sort_keys=False, allow_unicode=True, width=100
)
def main() -> int:
parser = argparse.ArgumentParser(allow_abbrev=False, description=__doc__.splitlines()[0])
which = parser.add_mutually_exclusive_group(required=True)
which.add_argument("--setup", action="append", help="setup id (repeatable)")
which.add_argument("--all", action="store_true", help="every setup of the sources file")
which.add_argument("--list", action="store_true", help="list the setups and their format")
parser.add_argument("--sources", type=Path, default=DEFAULT_DIR / "_sources")
parser.add_argument("--output-dir", type=Path, default=DEFAULT_DIR)
parser.add_argument("--offline", action="store_true", help="read the revision cache only")
parser.add_argument("--dry-run", action="store_true", help="print counts, write nothing")
args = parser.parse_args()
sources = load_sources(args.sources)
if args.list:
for setup, spec in sources.items():
print(f"{setup:16} {spec.get('format') or '-':14} {spec.get('name', '')}")
return 0
wanted = list(sources) if args.all else args.setup
unknown = [s for s in wanted if s not in sources]
if unknown:
print(f"Error: unknown setup(s): {', '.join(unknown)}", file=sys.stderr)
return 2
failed = 0
for setup in wanted:
spec = sources[setup]
fetcher = Fetcher(spec.get("sources", {}), offline=args.offline)
try:
doc = scrape_setup(setup, spec, fetcher)
except (SourceError, ValueError, KeyError, OSError) as exc:
print(f"FAIL {setup}: {exc}", file=sys.stderr)
failed += 1
continue
print(f"{setup}: {len(doc['folders'])} folders")
if not args.dry_run:
args.output_dir.mkdir(parents=True, exist_ok=True)
target = args.output_dir / f"{setup}.yml"
text = dump_setup(doc)
if not target.exists() or target.read_text(encoding="utf-8") != text:
target.write_text(text, encoding="utf-8")
return 1 if failed else 0
if __name__ == "__main__":
sys.exit(main())
+628
View File
@@ -0,0 +1,628 @@
"""Rom folder parsers for handheld card OSes and the frontends without a menu.
Each parser reads the system list the OS ships at the pinned commit and
returns one row per folder, in the OS's own spelling:
- `onion`: Onion's optional packages, `Emu/<SYS>/config.json` and the
`launch.sh` beside it. RetroArch-section packages (`RApp/`) add cores on the
same folder, the stock menu starts the `Emu/` one.
- `spruce`: spruceOS `Emu/<SYS>/config.json`, `default_emulator`.
- `crossmix`: CrossMix-OS `Emus/<SYS>/config.json`, first `launchlist` entry
with a script, as `load_launcher.sh` picks it.
- `koriki`: SimpleMenu section groups, first launcher of `execs`.
- `allium`: Allium `consoles.toml`, first entry of `cores`.
- `minui`: MinUI, MyMinUI and NextUI paks. A Roms folder starts the pak named
by the text in its last parentheses (`getEmuName`), so the folder of a row
is the one the skeleton ships, else the tag alone.
- `plumos`: plumOS `systems.json`, `directory_aliases` by priority.
- `muos`: muOS `core.json`, every `friendly` name of a system.
- `gmenu2x`: MiyooCFW, the folders its image ships and the gmenu2x links
whose text a repository holds.
- `mister`: MiSTer, one `games/<core>/` folder per core the distribution ships.
- `romm`: RomM, one library folder per platform slug it plays or keeps BIOS for.
- `bizhawk`: BizHawk's per-system base folders.
"""
from __future__ import annotations
import json
import re
from collections.abc import Iterable
from configparser import ConfigParser
from pathlib import PurePosixPath
from . import Fetcher, SourceError, register
_LIBRETRO = re.compile(r"([A-Za-z0-9_+.\-${}]+?)_libretro\.so")
_EMU_EXE = re.compile(r"^\s*EMU_EXE=[\"']?([A-Za-z0-9_+.\-]+)", re.M)
def line_of(text: str, needle: str, start: int = 0) -> int:
"""1-based line of the first needle at or after start, 0 when absent."""
idx = text.find(needle, start)
return text.count("\n", 0, idx) + 1 if idx >= 0 else 0
def ref(key: str, path: str, line: int | str | None = None) -> str:
"""A source_ref part. A space in a path is written %20, as in a URL:
the ref grammar ends a path at the first space."""
path = path.replace("%", "%25").replace(" ", "%20")
return f"{key} {path}:{line}" if line else f"{key} {path}"
def extensions(raw: str | Iterable[str] | None) -> list[str]:
"""Lowercased extensions with the dot, from a list or a `|`/`,` string."""
items = re.split(r"[|,]", raw) if isinstance(raw, str) else list(raw or [])
out: list[str] = []
for item in items:
ext = str(item).strip().lower().lstrip(".")
if ext and f".{ext}" not in out:
out.append(f".{ext}")
return out
def _shell_value(script: str, name: str) -> str | None:
match = re.search(rf"^\s*{re.escape(name)}=[\"']?([A-Za-z0-9_+.\-]+)", script, re.M)
return match.group(1) if match else None
def libretro_core(script: str) -> str | None:
"""The core a launch script names: `<core>_libretro.so`, a shell variable
assigned in the same script, or `EMU_EXE=`."""
for match in _LIBRETRO.finditer(script):
name = match.group(1).split("/")[-1]
if "$" not in name:
return name
var = re.fullmatch(r"\$\{?(\w+)\}?", name)
if var:
value = _shell_value(script, var.group(1))
if value:
return value
exe = _EMU_EXE.search(script)
return exe.group(1) if exe else None
def _json(fetcher: Fetcher, key: str, path: str) -> tuple[dict, str]:
text = fetcher.text(key, path)
try:
return json.loads(text), text
except ValueError as exc:
raise SourceError(f"{path}: {exc}") from exc
def _rompath_folder(rompath: str) -> str:
"""The folder under Roms/ a stock-menu config.json points at."""
path = rompath.strip().replace("\\", "/")
for prefix in ("../../Roms/", "/mnt/SDCARD/Roms/"):
if path.startswith(prefix):
return path[len(prefix):].strip("/")
raise SourceError(f"rompath {rompath!r} is not under Roms/")
# Onion
@register("onion")
def parse_onion(spec: dict, fetcher: Fetcher) -> list[dict]:
params = spec["params"]
key = params["source"]
pattern = re.compile(r"^static/packages/(Emu|RApp)/([^/]+)/\1/([^/]+)/config\.json$")
packages: dict[str, list[dict]] = {}
for path in fetcher.tree(key, "static/packages/"):
match = pattern.match(path)
if not match:
continue
layer, package = match.group(1), match.group(2)
config, text = _json(fetcher, key, path)
script_path = f"{path.rsplit('/', 1)[0]}/{config.get('launch', 'launch.sh')}"
script = fetcher.optional_text(key, script_path) or ""
packages.setdefault(_rompath_folder(config.get("rompath", "")), []).append({
"layer": layer, "package": package, "config": config,
"core": libretro_core(script), "ref": ref(key, path, line_of(text, '"rompath"')),
"script": script_path,
})
rows = []
for folder, found in packages.items():
found.sort(key=lambda p: (p["layer"] != "Emu", p["package"]))
emu = [p for p in found if p["layer"] == "Emu"]
first = emu[0] if emu else found[0]
others = [p["package"] for p in found if p is not first]
row = {
"folder": folder,
"extensions": extensions(first["config"].get("extlist")),
"source_ref": first["ref"],
}
if emu:
row["core"] = first["core"]
row["emulator"] = "retroarch" if first["core"] else "standalone"
note = f"package '{first['package']}' (Emu/, the stock menu entry)"
if not first["core"]:
note += f", launches {first['script']}"
else:
note = "only RetroArch-section packages (RApp/), the user picks the core"
if others:
note += f". Other packages on this folder: {', '.join(others)}"
row["note"] = note
rows.append(row)
return rows
# spruceOS
@register("spruce")
def parse_spruce(spec: dict, fetcher: Fetcher) -> list[dict]:
params = spec["params"]
key = params["source"]
skip = set(params.get("skip", []))
rows = []
for path in fetcher.tree(key, "Emu/"):
parts = path.split("/")
if len(parts) != 3 or parts[2] != "config.json" or parts[1] in skip:
continue
config, text = _json(fetcher, key, path)
notes = []
if config.get("devices"):
notes.append(f"only on devices {', '.join(map(str, config['devices']))}")
if config.get("ignoreList"):
notes.append(f"ignoreList {', '.join(map(str, config['ignoreList']))}")
rows.append({
"folder": parts[1],
"aliases": [str(a) for a in config.get("alternativeFolderNames") or []],
"extensions": extensions(config.get("extlist")),
"core": config.get("default_emulator"),
"source_ref": ref(key, path, line_of(text, '"default_emulator"') or 1),
"note": ". ".join(notes),
})
return rows
# CrossMix-OS
@register("crossmix")
def parse_crossmix(spec: dict, fetcher: Fetcher) -> list[dict]:
params = spec["params"]
key = params["source"]
rows = []
for path in fetcher.tree(key, "Emus/"):
parts = path.split("/")
if len(parts) != 3 or parts[2] != "config.json" or parts[1].startswith("_"):
continue
config, text = _json(fetcher, key, path)
launchers = [e for e in config.get("launchlist") or [] if e.get("launch")]
script_name = launchers[0]["launch"] if launchers else config.get("launch", "launch.sh")
script_path = f"Emus/{parts[1]}/{script_name}"
script = fetcher.optional_text(key, script_path) or ""
core = libretro_core(script)
note = f"default launcher {launchers[0].get('name') if launchers else script_name} ({script_path})"
folder = _rompath_folder(config.get("rompath", ""))
rows.append({
"folder": folder,
"name": parts[1] if parts[1] != folder else None,
"extensions": extensions(config.get("extlist")),
"core": core,
"emulator": "retroarch" if core else "standalone",
"source_ref": ref(key, path, line_of(text, '"rompath"') or 1),
"note": note if core else f"{note}, names no libretro core",
})
return rows
# Koriki
@register("koriki")
def parse_koriki(spec: dict, fetcher: Fetcher) -> list[dict]:
params = spec["params"]
key = params["source"]
path = params["sections"]
text = fetcher.text(key, path)
parser = ConfigParser(interpolation=None, strict=False)
parser.optionxform = str # type: ignore[assignment]
parser.read_string(text)
skip = set(params.get("skip", []))
rows = []
for section in parser.sections():
if section in skip:
continue
body = parser[section]
dirs = [d.strip() for d in body.get("romDirs", "").split(",") if d.strip()]
if not dirs:
continue
rel = [d.replace(params["roms_prefix"], "").strip("/") for d in dirs]
execs = [PurePosixPath(e.strip()).name for e in body.get("execs", "").split(",") if e.strip()]
core = None
if execs:
launcher = fetcher.optional_text(key, f"{params['launchers']}/{execs[0]}")
core = libretro_core(launcher or "")
note = f"launchers {', '.join(execs)}"
if len(rel) > 1 or "/" in rel[0]:
note += f". romDirs {', '.join(rel)}"
rows.append({
"folder": rel[0].split("/")[0],
"name": section,
"extensions": extensions(body.get("romExts")),
"core": core or (execs[0] if execs else None),
"emulator": "retroarch" if core else "standalone",
"source_ref": ref(key, path, line_of(text, f"[{section}]")),
"note": note,
})
return rows
# Allium
_TOML_KEY = r'(?:"[^"]*"|[A-Za-z0-9_\-]+)'
def _toml_value(raw: str) -> object:
raw = raw.strip()
if raw.startswith('"') and raw.endswith('"'):
return raw[1:-1]
if raw.startswith("["):
return re.findall(r'"([^"]*)"', raw)
if raw in ("true", "false"):
return raw == "true"
if re.fullmatch(r"-?\d+", raw):
return int(raw)
raise SourceError(f"TOML value {raw!r} is outside the subset Allium's files use")
def parse_toml_subset(text: str) -> dict:
"""The TOML Allium writes: `[[array]]`, `[a.b]` tables, string, integer,
boolean and string-array values, arrays that may span lines. Anything
else is refused rather than guessed. Each table records the line it
starts on under `__line__`."""
root: dict = {}
current: dict = root
lines = text.splitlines()
i = 0
while i < len(lines):
line = lines[i].split("#", 1)[0].strip() if '"' not in lines[i] else lines[i].strip()
i += 1
if not line or line.startswith("#"):
continue
if line.startswith("[["):
name = line.strip("[]").strip()
current = {"__line__": i}
root.setdefault(name, []).append(current)
continue
if line.startswith("["):
current = root
for part in re.findall(_TOML_KEY, line.strip("[]")):
current = current.setdefault(part.strip('"'), {})
current["__line__"] = i
continue
match = re.match(rf"({_TOML_KEY})\s*=\s*(.*)$", line)
if not match:
raise SourceError(f"TOML line {i}: {line!r} is outside the subset Allium's files use")
value = match.group(2)
while value.count("[") > value.count("]") and i < len(lines):
value += lines[i].strip()
i += 1
current[match.group(1).strip('"')] = _toml_value(value)
return root
@register("allium")
def parse_allium(spec: dict, fetcher: Fetcher) -> list[dict]:
params = spec["params"]
key = params["source"]
consoles = parse_toml_subset(fetcher.text(key, params["consoles"]))["consoles"]
cores = parse_toml_subset(fetcher.text(key, params["cores"])).get("cores", {})
rows = []
for console in consoles:
patterns = [str(p) for p in console.get("patterns") or []]
if not patterns:
continue
first = (console.get("cores") or [None])[0]
core_def = cores.get(first, {}) if first else {}
core = core_def.get("retroarch") if isinstance(core_def, dict) else None
rows.append({
"folder": patterns[0],
"name": console["name"],
"aliases": patterns[1:],
"extensions": extensions(console.get("extensions")),
"core": core or first,
"emulator": "retroarch" if core else "standalone",
"source_ref": ref(key, params["consoles"], console["__line__"]),
"note": "a folder named any pattern, or ending in '(<pattern>)', is this console. A file's own extension wins over its folder",
})
return rows
# MinUI, MyMinUI, NextUI
_PAK = re.compile(r"^skeleton/(?:[^/]+/)+(?:Emus|paks/Emus)/(?:[^/]+/)?([^/]+)\.pak/launch\.sh$")
def _pak_device(path: str) -> str:
"""The device directory a pak sits under (`Emus/<device>/X.pak`,
`SYSTEM/<device>/paks/Emus/X.pak`)."""
parts = path.split("/")
if "paks" in parts:
return parts[parts.index("paks") - 1]
idx = parts.index("Emus")
return parts[idx + 1] if not parts[idx + 1].endswith(".pak") else parts[1]
@register("minui")
def parse_minui(spec: dict, fetcher: Fetcher) -> list[dict]:
params = spec["params"]
key = params["source"]
tree = fetcher.tree(key, "skeleton/")
shipped: dict[str, str] = {}
for path in tree:
match = re.match(r"^skeleton/[^/]+/Roms/([^/]+)/", path)
if match:
name = match.group(1)
tag = re.search(r"\(([^()]*)\)\s*$", name)
shipped.setdefault(tag.group(1) if tag else name, name)
paks: dict[str, dict[str, tuple[str, str]]] = {}
for path in tree:
match = _PAK.match(path)
if not match:
continue
script = fetcher.text(key, path)
core = libretro_core(script)
line = line_of(script, "EMU_EXE=") or line_of(script, "_libretro.so") or 1
paks.setdefault(match.group(1), {})[_pak_device(path)] = (core or "", ref(key, path, line))
rows = []
for tag, devices in sorted(paks.items()):
counts: dict[str, int] = {}
for core, _ in devices.values():
counts[core] = counts.get(core, 0) + 1
core = min(counts, key=lambda c: (-counts[c], c == "", c))
default_ref = next(r for c, r in sorted(devices.values()) if c == core)
boards = {
device: {"core": c, "source_ref": r}
for device, (c, r) in sorted(devices.items()) if c != core and c
}
folder = shipped.get(tag, tag)
rows.append({
"folder": folder,
"name": tag,
"aliases": [tag] if folder != tag else [],
"core": core or None,
"emulator": "minarch" if core else "standalone",
"source_ref": default_ref,
"board_defaults": boards,
"note": (f"any folder named {tag} or ending in '({tag})' starts {tag}.pak. "
f"Devices: {', '.join(sorted(devices))}"),
})
return rows
# plumOS
@register("plumos")
def parse_plumos(spec: dict, fetcher: Fetcher) -> list[dict]:
params = spec["params"]
key = params["source"]
text = fetcher.text(key, params["path"])
systems = json.loads(text)["systems"]
taken: dict[str, str] = {}
rows = []
pos = 0
for system in systems:
needle = f'"id": "{system["id"]}"'
line = line_of(text, needle, pos)
pos = max(pos, text.find(needle, pos) + 1)
aliases = [a["name"] for a in sorted(system.get("directory_aliases") or [],
key=lambda a: a.get("priority", 0))]
free = [a for a in aliases if a not in taken]
if not free:
continue
folder = free[0]
taken[folder] = system["id"]
kind, _, core = (system.get("default_launch_profile") or "").partition(":")
notes = [] if system.get("enabled") else ["disabled by default"]
shared = [f"{a} (also {taken[a]})" for a in aliases if a in taken and taken[a] != system["id"]]
if shared:
notes.append(f"shares {', '.join(shared)}, the extension decides")
rows.append({
"folder": folder,
"name": system["id"],
"aliases": [a for a in aliases if a != folder],
"extensions": extensions(system.get("extensions")),
"core": core or None,
"emulator": kind or None,
"source_ref": ref(key, params["path"], line),
"note": ". ".join(notes),
})
return rows
# muOS
def _muos_norm(name: str) -> str:
"""The key muOS looks a folder up by (common.c: lowercase, drop ' -_+')."""
return re.sub(r"[ \-_+]", "", name.lower())
@register("muos")
def parse_muos(spec: dict, fetcher: Fetcher) -> list[dict]:
params = spec["params"]
key = params["source"]
text = fetcher.text(key, params["path"])
data = json.loads(text)
rows = []
for system, entry in data.items():
friendly = [str(f) for f in entry.get("friendly") or []]
if not friendly:
continue
want = _muos_norm(entry.get("catalogue") or system)
folder = next((f for f in friendly if f == want), friendly[0])
default = entry.get("default")
libretro = entry.get("libretro") or {}
so = (libretro.get(default) or {}).get("core") if default in libretro else None
core = so[: -len("_libretro.so")] if so and so.endswith("_libretro.so") else default
rows.append({
"folder": folder,
"name": system,
"aliases": friendly,
"core": core,
"emulator": "retroarch" if so else "external",
"source_ref": ref(key, params["path"], line_of(text, json.dumps(system) + ":")),
"note": "a folder matches when its name, lowercased without ' -_+', is one of the friendly names",
})
return rows
# MiyooCFW
@register("gmenu2x")
def parse_gmenu2x(spec: dict, fetcher: Fetcher) -> list[dict]:
params = spec["params"]
rows: dict[str, dict] = {}
for link in params.get("links", []):
text = fetcher.text(link["source"], link["path"])
fields = dict(
line.split("=", 1) for line in text.splitlines() if "=" in line
)
selector = fields.get("selectordir", "").rstrip("/")
prefix = params["link_roms_prefix"]
if not selector.startswith(prefix):
raise SourceError(f"{link['path']}: selectordir {selector!r} is not under {prefix}")
folder = selector[len(prefix):].strip("/")
rows[folder] = {
"folder": folder,
"extensions": extensions(fields.get("selectorfilter")),
"core": link["core"],
"emulator": "standalone",
"source_ref": ref(link["source"], link["path"], line_of(text, "selectordir=")),
"note": f"gmenu2x link of the {link['core']} package",
}
key = params["source"]
for path in fetcher.tree(key, params["shipped_roms"] + "/"):
folder = path[len(params["shipped_roms"]) + 1:].split("/")
if len(folder) < 2 or folder[0] in rows:
continue
rows[folder[0]] = {
"folder": folder[0],
"source_ref": ref(key, f"{params['shipped_roms']}/{folder[0]}"),
"note": "folder the image ships. Its emulator link lives in a release package no repository holds",
}
return list(rows.values())
# MiSTer
@register("mister")
def parse_mister(spec: dict, fetcher: Fetcher) -> list[dict]:
params = spec["params"]
key = params["source"]
arcade = set(params.get("arcade", []))
folders = sorted({p.split("/")[1] for p in fetcher.tree(key, "games/") if p.count("/") >= 2})
return [
{
"folder": folder,
"emulator": "mister-core",
"source_ref": ref(key, f"games/{folder}/"),
"arcade": folder in arcade or None,
"note": params["arcade_note"] if folder in arcade else None,
}
for folder in folders
if folder not in params.get("skip", [])
]
# RomM
@register("romm")
def parse_romm(spec: dict, fetcher: Fetcher) -> list[dict]:
params = spec["params"]
key = params["source"]
text = fetcher.text(key, params["cores_map"])
lines = text.splitlines()
maps: dict[str, dict[str, tuple[list[str], int]]] = {}
block = None
entry = None
for number, line in enumerate(lines, 1):
start = re.match(r"const (_EJS_(?:NIGHTLY_)?CORES_MAP)\b", line)
if start:
block = start.group(1)
continue
if block and line.startswith("}"):
block = None
continue
if not block:
continue
head = re.match(r'\s+"?([\w-]+)"?:\s*\[(.*)$', line)
if head:
entry = (head.group(1), number)
maps.setdefault(block, {})[entry[0]] = (re.findall(r'"([\w-]+)"', head.group(2)), number)
if "]" in head.group(2):
entry = None
elif entry:
maps[block][entry[0]][0].extend(re.findall(r'"([\w-]+)"', line))
if "]" in line:
entry = None
stable = maps.get("_EJS_CORES_MAP", {})
nightly = maps.get("_EJS_NIGHTLY_CORES_MAP", {})
if not stable:
raise SourceError(f"{params['cores_map']}: _EJS_CORES_MAP not found")
bios = json.loads(fetcher.text(key, params["bios_fixture"]))
bios_slugs = {name.split(":", 1)[0] for name in bios}
rows = []
for slug in sorted(set(stable) | set(nightly) | bios_slugs):
found = stable.get(slug) or nightly.get(slug)
if found:
note = None if slug in stable else "core only with EmulatorJS nightly cores"
rows.append({"folder": slug, "core": found[0][0], "emulator": "emulatorjs",
"source_ref": ref(key, params["cores_map"], found[1]), "note": note})
else:
rows.append({"folder": slug, "source_ref": ref(key, params["bios_fixture"]),
"note": "no EmulatorJS core, RomM keeps BIOS for it"})
return rows
# BizHawk
@register("bizhawk")
def parse_bizhawk(spec: dict, fetcher: Fetcher) -> list[dict]:
params = spec["params"]
key = params["source"]
entries = fetcher.text(key, params["paths"])
loader = fetcher.text(key, params["rom_loader"])
config = fetcher.text(key, params["config"])
combined = {
m.group(1): re.findall(r"VSystemID\.Raw\.(\w+)", m.group(2))
for m in re.finditer(r"string (COMBINED_SYSIDS_\w+) = string\.Join\(\"_\", ([^)]*)\)", entries)
}
ext_fields: dict[str, tuple[list[str], int]] = {}
for number, line in enumerate(loader.splitlines(), 1):
clean = re.sub(r"/\*.*?\*/", "", line)
match = re.search(r"IReadOnlyCollection<string> (\w+) = new\[\] \{ (.*?) \}", clean)
if match:
ext_fields[match.group(1)] = (re.findall(r'"([^"]+)"', match.group(2)), number)
preferred: dict[str, str] = {}
picker = config[config.find("CorePickerUIData"):]
for match in re.finditer(r"\(\[([^\]]+)\],\s*\[\s*CoreNames\.(\w+)", picker):
for sid in re.findall(r"VSystemID\.Raw\.(\w+)", match.group(1)):
preferred.setdefault(sid, match.group(2))
rows = []
for number, line in enumerate(entries.splitlines(), 1):
match = re.search(
r"CommonEntriesFor\((?:VSystemID\.Raw\.(\w+)|(COMBINED_SYSIDS_\w+)), "
r"basePath: Path\.Combine\(\"\.\", \"([^\"]+)\"\)", line)
if not match:
continue
sids = [match.group(1)] if match.group(1) else combined.get(match.group(2), [])
exts: list[str] = []
refs = [ref(key, params["paths"], number)]
for sid in sids:
if sid in ext_fields:
exts.extend(ext_fields[sid][0])
refs.append(ref(key, params["rom_loader"], ext_fields[sid][1]))
cores = [preferred[s] for s in sids if s in preferred]
note = "the open dialog starts here, nothing is scanned"
if cores:
note += f". Default core {cores[0]} (CorePickerUIData, CoreNames[0])"
rows.append({
"folder": match.group(3),
"name": sids[0] if sids else None,
"aliases": sids[1:],
"extensions": extensions(exts),
"emulator": "EmuHawk",
"source_ref": "; ".join(refs),
"note": note,
})
return rows
+781
View File
@@ -0,0 +1,781 @@
"""EmulationStation family: the system lists each OS builds its menu from.
Every parser returns one row per folder under the roms root, with the
extensions the list accepts, the core the OS starts by default and the
line of the list that says so. Systems the list keeps outside the roms root
(an absolute path elsewhere) or marks as no game system are left out: the
installer never scans them.
Formats, by the shape of the source:
- `batocera-es`: es_systems.yml plus configgen-defaults.yml and its per-board
files (Batocera, KNULLI).
- `es-xml`: a static es_systems.cfg (AmberELEC, CHAos, PAN4ELEC, ArkOS,
dArkOS, RetroBat).
- `es-json`: EmuELEC's es_systems.json, turned into the XML at build time.
- `elec-conf`: config/emulators/<system>.conf plus the add_emu_core and
add_es_system calls of the emulators package (ROCKNIX, JELOS, KOLOS,
UnofficialOS, ArchR).
- `esde`: ES-DE's es_systems.xml, with the alternative emulators and custom
systems an installer writes over it (EmuDeck, RetroDECK).
- `recalbox`: one system.ini per system (Recalbox).
- `retropie`: platforms.cfg and the addEmulator calls of the scriptmodules.
"""
from __future__ import annotations
import json
import re
import shlex
from collections.abc import Iterator
from safeparse import parse_untrusted_xml, yaml_load_upstream
from . import Fetcher, SourceError, register
def _ref(key: str, path: str, *lines: int | str | None) -> str:
kept = [str(n) for n in lines if n not in (None, "")]
return f"{key} {path}:{','.join(kept)}" if kept else f"{key} {path}"
def _board(core: str | None, emulator: str | None, source_ref: str) -> dict:
out = {"core": core or emulator, "emulator": emulator, "source_ref": source_ref}
return {k: str(v) for k, v in out.items() if v}
def _top_key_lines(text: str) -> dict[str, int]:
"""First line of each top-level YAML key."""
out: dict[str, int] = {}
for number, line in enumerate(text.splitlines(), 1):
match = re.match(r"^([A-Za-z0-9_+.\-]+):", line)
if match:
out.setdefault(match.group(1), number)
return out
def _strip_prefix(path: str, prefixes: list[str]) -> str | None:
"""The folder under the roms root, or None for a path outside it."""
for prefix in prefixes:
if path.startswith(prefix):
rest = path[len(prefix):].strip("/\\")
return rest.replace("\\", "/") or None
return None
def _extensions(raw: str | list | None) -> list[str]:
words = raw.split() if isinstance(raw, str) else [str(w) for w in raw or []]
return [w if w.startswith(".") else f".{w}" for w in words if w]
# ---------------------------------------------------------------------------
# Batocera and KNULLI
def _yaml_or_link(fetcher: Fetcher, key: str, directory: str, name: str) -> tuple[dict, str, str]:
"""A configgen file, following a git symlink the raw route serves as text."""
path = f"{directory}/{name}"
text = fetcher.text(key, path)
data = yaml_load_upstream(text)
if isinstance(data, str) and data.strip().endswith(".yml"):
path = f"{directory}/{data.strip()}"
text = fetcher.text(key, path)
data = yaml_load_upstream(text)
if not isinstance(data, dict):
raise SourceError(f"{path} is not a mapping")
return data, text, path
@register("batocera-es")
def batocera_es(spec: dict, fetcher: Fetcher) -> list[dict]:
"""es_systems.yml read the way batocera-es-system writes the XML.
A system with no emulator and no `force` is never written
(es_systems.py `_system_dict_to_xml`), `path` defaults to the key and an
absolute path leaves the roms root. The default core is configgen's:
the board file first, then configgen-defaults.yml (shared.py
ConfiggenDefaults.get).
"""
params = spec["params"]
key = params.get("source", "os")
es_path = params["es_systems"]
es_text = fetcher.text(key, es_path)
systems = yaml_load_upstream(es_text)
if not isinstance(systems, dict):
raise SourceError(f"{es_path} is not a mapping")
es_lines = _top_key_lines(es_text)
directory = params["configgen_dir"]
defaults, def_text, def_path = _yaml_or_link(fetcher, key, directory, "configgen-defaults.yml")
def_lines = _top_key_lines(def_text)
boards: dict[str, tuple[dict, dict[str, int], str]] = {}
for path in fetcher.tree(key, f"{directory}/configgen-defaults-"):
name = path.rsplit("/", 1)[-1]
if not name.endswith(".yml"):
continue
data, text, real = _yaml_or_link(fetcher, key, directory, name)
boards[name[len("configgen-defaults-"):-len(".yml")]] = (data, _top_key_lines(text), real)
rows: list[dict] = []
for name, system in systems.items():
if not isinstance(system, dict):
continue
if not system.get("emulators") and not system.get("force"):
continue
path = system.get("path", name)
if not path or str(path).startswith("/"):
continue
base = defaults.get(name) or {}
emulator, core = base.get("emulator"), base.get("core")
board_defaults: dict[str, dict] = {}
for board, (data, lines, real) in sorted(boards.items()):
override = data.get(name) or {}
b_emu, b_core = override.get("emulator", emulator), override.get("core", core)
if (b_emu, b_core) != (emulator, core) and b_core:
board_defaults[board] = _board(b_core, b_emu, _ref(key, real, lines.get(name)))
refs = [_ref(key, es_path, es_lines.get(name))]
if name in def_lines:
refs.append(_ref(key, def_path, def_lines[name]))
rows.append({
"folder": str(path),
"name": name,
"extensions": _extensions(system.get("extensions")),
"core": str(core) if core else None,
"emulator": str(emulator) if emulator else None,
"source_ref": "; ".join(refs),
"board_defaults": board_defaults,
"arcade": system.get("hardware") == "arcade" or None,
})
return rows
# ---------------------------------------------------------------------------
# Static es_systems.cfg (XML) and EmuELEC's es_systems.json
def _first_lines(text: str, pattern: str) -> dict[str, int]:
out: dict[str, int] = {}
for number, line in enumerate(text.splitlines(), 1):
match = re.search(pattern, line)
if match:
out.setdefault(match.group(1).strip(), number)
return out
def _all_lines(text: str, pattern: str) -> dict[str, list[int]]:
"""Every line each name is declared on, in file order."""
out: dict[str, list[int]] = {}
for number, line in enumerate(text.splitlines(), 1):
match = re.search(pattern, line)
if match:
out.setdefault(match.group(1).strip(), []).append(number)
return out
def _name_once(row: dict, lines: dict[str, list[int]], seen: dict[str, int]) -> dict:
"""A system name the list gives twice designates neither: the row keeps
its folder and the line of its own occurrence."""
name = row["name"]
index = seen.get(name, 0)
seen[name] = index + 1
found = lines.get(name, [])
row["line"] = found[index] if index < len(found) else None
if len(found) > 1:
row["note"] = "; ".join(filter(None, [row.get("note"), f"the list names {len(found)} systems {name}"]))
row["name"] = None
return row
def _pick_default(emulators: list[tuple[str, list[tuple[str, bool]]]], rule: str) -> tuple[str | None, str | None]:
"""The emulator and core the frontend starts when the user chose none.
`flagged`: the core marked default, else the first emulator's first
core. `first`: the first emulator's first core, whatever is flagged.
"""
if rule == "flagged":
for emulator, cores in emulators:
for core, default in cores:
if default:
return emulator, core
for emulator, cores in emulators:
if cores:
return emulator, cores[0][0]
return emulator, None
return None, None
_LIBRETRO_SO = re.compile(r"-L\s+\S*?[/\\]([\w.+-]+?)_libretro\.(?:so|dll|dylib)")
def _libretro_in_command(command: str) -> tuple[str | None, str | None]:
match = _LIBRETRO_SO.search(command)
return ("retroarch", match.group(1)) if match else (None, None)
def _is_arcade(hardware: str | None, platform: str | None) -> bool | None:
words = set(re.split(r"[\s,]+", (platform or "").lower()))
return (hardware or "").lower() == "arcade" or "arcade" in words or None
@register("es-xml")
def es_xml(spec: dict, fetcher: Fetcher) -> list[dict]:
"""A static es_systems.cfg. `boards` names the file another build
installs instead (dArkOS copies es_systems.cfg.<chipset>): a system whose
default differs there gets that board's default."""
params = spec["params"]
key = params.get("source", "os")
rows = _xml_rows(fetcher.text(key, params["file"]), key, params["file"], params)
for board, path in sorted((params.get("boards") or {}).items()):
other = {r["name"]: r for r in _xml_rows(fetcher.text(key, path), key, path, params)}
for row in rows:
alt = other.get(row["name"])
if alt and alt["core"] and (alt["core"], alt["emulator"]) != (row["core"], row["emulator"]):
row.setdefault("board_defaults", {})[board] = _board(
alt["core"], alt["emulator"], alt["source_ref"])
return rows
_BARE_AMPERSAND = re.compile(r"&(?!(?:[A-Za-z]+|#\d+|#x[0-9A-Fa-f]+);)")
_COMMENT = re.compile(r"<!--.*?-->", re.DOTALL)
def _lenient_xml(text: str) -> str:
"""The list as EmulationStation's pugixml reads it, lines kept in place.
pugixml keeps a bare `&` as text (ArkOS ships `2>&1` in a command) and
accepts `--` inside a comment (EmuDeck comments out a command holding
`--no-gui`). A comment is blanked to its newlines, so a system left in
a comment neither parses nor lends its line to a citation.
"""
text = _COMMENT.sub(lambda m: "\n" * m.group(0).count("\n"), text)
return _BARE_AMPERSAND.sub("&amp;", text)
def _xml_rows(text: str, key: str, path: str, params: dict) -> list[dict]:
text = _lenient_xml(text)
root = parse_untrusted_xml(text, path)
lines = _all_lines(text, r"<name>([^<]+)</name>")
seen: dict[str, int] = {}
rule = params.get("default", "flagged")
rows: list[dict] = []
for system in root.iter("system"):
name = (system.findtext("name") or "").strip()
command = (system.findtext("command") or "").strip()
platform = (system.findtext("platform") or "").strip()
row = _name_once({"name": name}, lines, seen)
if not name or "ignore" in (command, platform):
continue
folder = _strip_prefix((system.findtext("path") or "").strip(), params["path_prefixes"])
if not folder:
continue
emulators = [
(emulator.get("name") or "",
[((core.text or "").strip(), core.get("default") == "true")
for core in emulator.iter("core") if (core.text or "").strip()])
for emulator in system.iter("emulator")
]
emulator, core = _pick_default(emulators, rule)
if not emulators:
# No <emulators>: the command starts the core itself (ArkOS
# `retroarch -L .../mess_libretro.so %ROM%`).
emulator, core = _libretro_in_command(command)
rows.append({
"folder": folder,
"name": row["name"],
"extensions": _extensions(system.findtext("extension")),
"core": core or emulator,
"emulator": emulator,
"source_ref": _ref(key, path, row["line"]),
"arcade": _is_arcade(system.findtext("hardware"), platform),
"note": row.get("note"),
})
return rows
@register("es-json")
def es_json(spec: dict, fetcher: Fetcher) -> list[dict]:
params = spec["params"]
key = params.get("source", "os")
path = params["file"]
text = fetcher.text(key, path)
lines = _all_lines(text, r'^\s{4,6}"name":\s*"([^"]+)"')
seen: dict[str, int] = {}
rows: list[dict] = []
for system in json.loads(text).get("systems", []):
name = system.get("name") or ""
row = _name_once({"name": name}, lines, seen)
if "ignore" in (system.get("command"), system.get("platform")):
continue
folder = _strip_prefix(system.get("path") or "", params["path_prefixes"])
if not name or not folder:
continue
emulators = [
(emulator.get("name") or "",
[(c.get("name") or "", bool(c.get("default"))) for c in emulator.get("cores") or []])
for emulator in system.get("emulators") or []
]
emulator, core = _pick_default(emulators, params.get("default", "flagged"))
rows.append({
"folder": folder,
"name": row["name"],
"extensions": _extensions(system.get("extensions")),
"core": core or emulator,
"emulator": emulator,
"source_ref": _ref(key, path, row["line"]),
"arcade": _is_arcade(system.get("hardware"), system.get("platform")),
"note": row.get("note"),
})
return rows
# ---------------------------------------------------------------------------
# ROCKNIX family: config/emulators/<system>.conf and the emulators package
def _conf_values(text: str) -> tuple[dict[str, str], dict[str, int]]:
values: dict[str, str] = {}
lines: dict[str, int] = {}
for number, line in enumerate(text.splitlines(), 1):
match = re.match(r"^\s*(SYSTEM_[A-Z_]+)=(.*)$", line)
if not match:
continue
raw = match.group(2).strip()
try:
value = " ".join(shlex.split(raw))
except ValueError:
value = raw.strip('"')
values[match.group(1)] = value
lines[match.group(1)] = number
return values, lines
def _package_calls(text: str) -> tuple[list[dict], dict[str, list[int]]]:
"""add_emu_core and add_es_system calls of makeinstall_target, each
with the `case` branches it sits under as (variable, pattern) pairs.
An `if` block nests a condition whose truth the build decides: its
calls carry it as a branch the default choice does not count as
unconditional."""
cores: list[dict] = []
systems: dict[str, list[int]] = {}
stack: list[list[str]] = []
inside = False
for number, raw in enumerate(text.splitlines(), 1):
line = raw.split("#", 1)[0].strip()
if raw.startswith("makeinstall_target()"):
inside = True
continue
if not inside or not line:
continue
if raw.startswith("}"):
break
match = re.match(r'case\s+"?\$\{?(\w+)\}?"?\s+in', line)
if match:
stack.append(["case", match.group(1), ""])
continue
if line == "esac":
stack.pop()
continue
if line.startswith("if ") or line.startswith("[") and "&&" not in line and line.endswith("then"):
stack.append(["if", line, ""])
continue
if line in ("fi",):
if stack and stack[-1][0] == "if":
stack.pop()
continue
if line in ("then", "else") or line.startswith("elif "):
continue
ends = line.endswith(";;")
if ends:
line = line[:-2].strip()
if stack and stack[-1][0] == "case":
match = re.match(r"^([^()\s][^()]*)\)\s*(.*)$", line)
if match and not line.startswith(("add_", "[", "sed", "cp", "mkdir")):
stack[-1][2] = match.group(1).strip()
line = match.group(2).strip()
words = line.split()
branches = [(s[1], s[2]) for s in stack]
if words[:1] == ["add_emu_core"] and len(words) >= 4:
cores.append({
"system": words[1], "emulator": words[2], "core": words[3],
"default": len(words) > 4 and words[4] == "true",
"branches": branches, "line": number,
})
elif words[:1] == ["add_es_system"] and len(words) >= 2:
systems.setdefault(words[1], []).append(number)
if ends and stack and stack[-1][0] == "case":
stack[-1][2] = ""
return cores, systems
def _board_key(branches: list[tuple[str, str]]) -> str | None:
"""A default chosen under one `case` on the device names that device."""
if len(branches) == 1 and branches[0][1] and branches[0][1] != "*":
variable, pattern = branches[0]
if not variable.startswith("["):
return f"{variable}={pattern}"
return None
@register("elec-conf")
def elec_conf(spec: dict, fetcher: Fetcher) -> list[dict]:
"""A system ES lists is one add_es_system writes from its conf file
(SYSTEM_PATH, SYSTEM_EXTENSION). The default is the core whose
add_emu_core says true: unconditional, else the `*)` branch of a
device case, the branches for named devices going to board_defaults."""
params = spec["params"]
key = params.get("source", "os")
package = params["package"]
cores, systems = _package_calls(fetcher.text(key, package))
if not systems:
raise SourceError(f"{package}: no add_es_system call")
conf_dir = params["conf_dir"]
rows: list[dict] = []
for name, lines in systems.items():
conf_path = f"{conf_dir}/{name}.conf"
conf_text = fetcher.optional_text(key, conf_path)
if conf_text is None:
continue
values, value_lines = _conf_values(conf_text)
folder = _strip_prefix(values.get("SYSTEM_PATH", ""), params["path_prefixes"])
if not folder:
continue
mine = [c for c in cores if c["system"] == name]
flagged = [c for c in mine if c["default"]]
plain = [c for c in flagged if not c["branches"]]
star = [c for c in flagged if c["branches"] and c["branches"][-1][1] == "*"]
pick = (plain or star or flagged or [None])[0]
if pick is None:
pick = next((c for c in mine if not c["branches"]), mine[0] if mine else None)
board_defaults = {}
for c in flagged:
board = _board_key(c["branches"])
if c is not pick and board and (c["emulator"], c["core"]) != (
pick and pick["emulator"], pick and pick["core"]):
board_defaults[board] = _board(c["core"], c["emulator"], _ref(key, package, c["line"]))
refs = [
_ref(key, conf_path, value_lines.get("SYSTEM_PATH"), value_lines.get("SYSTEM_EXTENSION")),
_ref(key, package, *lines),
]
if pick:
refs.append(_ref(key, package, pick["line"]))
note = None
if pick and pick["branches"] and not _board_key(pick["branches"]) and pick["branches"][-1][1] != "*":
note = "default core chosen under a build condition: " + ", ".join(
f"{v} {p}".strip() for v, p in pick["branches"])
rows.append({
"folder": folder,
"name": name,
"extensions": _extensions(values.get("SYSTEM_EXTENSION")),
"core": pick["core"] if pick else None,
"emulator": pick["emulator"] if pick else None,
"source_ref": "; ".join(refs),
"board_defaults": board_defaults,
"arcade": values.get("SYSTEM_HARDWARE") == "arcade" or None,
"note": note,
})
return rows
# ---------------------------------------------------------------------------
# ES-DE (EmuDeck, RetroDECK)
_RA_CORE = re.compile(r"%CORE_RETROARCH%[/\\]([\w.+-]+?)_libretro")
_EMULATOR = re.compile(r"%EMULATOR_([A-Za-z0-9_-]+)%")
def _command_core(command: str) -> tuple[str | None, str | None]:
match = _RA_CORE.search(command)
if match:
return "retroarch", match.group(1)
match = _EMULATOR.search(command)
if match:
name = match.group(1).lower()
return name, name
return None, None
def _esde_systems(text: str, path: str) -> Iterator[tuple[str, str, list[str], list[tuple[str, str]]]]:
root = parse_untrusted_xml(_lenient_xml(text), path)
for system in root.iter("system"):
name = (system.findtext("name") or "").strip()
rom_path = (system.findtext("path") or "").strip()
commands = [((c.get("label") or "").strip(), (c.text or "").strip())
for c in system.findall("command")]
yield name, rom_path, _extensions(system.findtext("extension")), commands
def _alternative_emulators(text: str, function: str) -> dict[str, tuple[str, int]]:
"""`ESDE_setEmu '<label>' <system>` calls inside one function."""
out: dict[str, tuple[str, int]] = {}
inside = False
for number, line in enumerate(text.splitlines(), 1):
if re.search(rf"\b{re.escape(function)}\b\s*\(\)|function\s+{re.escape(function)}\b", line):
inside = True
continue
if not inside:
continue
if line.rstrip() == "}":
break
match = re.search(r"ESDE_setEmu\s+['\"]([^'\"]+)['\"]\s+([\w.-]+)", line)
if match:
out[match.group(2)] = (match.group(1), number)
return out
@register("esde")
def esde(spec: dict, fetcher: Fetcher) -> list[dict]:
"""Each system of ES-DE's list whose path is %ROMPATH%/<folder>.
The default emulator is the first <command> (FileData.cpp), unless an
alternativeEmulator label is written for the system: an installer that
sets one names a command of that system by its label. A custom system
file replaces the bundled definition of the same name.
"""
params = spec["params"]
systems: dict[str, dict] = {}
for item in [params["systems"], *params.get("custom", [])]:
key, path = item["source"], item["path"]
text = _lenient_xml(fetcher.text(key, path))
lines = _first_lines(text, r"<name>([^<]+)</name>")
for name, rom_path, extensions, commands in _esde_systems(text, path):
folder = _strip_prefix(rom_path, ["%ROMPATH%/", "%ROMPATH%\\"])
if not name or not folder:
continue
systems[name] = {
"folder": folder, "extensions": extensions, "commands": commands,
"ref": _ref(key, path, lines.get(name)),
}
alternatives: dict[str, tuple[str, int]] = {}
alt = params.get("alternatives")
if alt:
alternatives = _alternative_emulators(fetcher.text(alt["source"], alt["path"]), alt["function"])
if not alternatives:
raise SourceError(f"{alt['path']}: no ESDE_setEmu call in {alt['function']}")
rows: list[dict] = []
for name, system in systems.items():
commands = system["commands"]
refs = [system["ref"]]
chosen = commands[0] if commands else ("", "")
note = None
if name in alternatives:
label, line = alternatives[name]
match = next((c for c in commands if c[0] == label), None)
refs.append(_ref(alt["source"], alt["path"], line))
if match:
chosen = match
else:
note = f"alternative emulator '{label}' names no command of this system"
emulator, core = _command_core(chosen[1])
extensions = system["extensions"]
if "." in extensions:
# ES-DE's "." is a file without an extension (SystemData.cpp
# getExtension), not a suffix the schema can hold.
extensions = [e for e in extensions if e != "."]
note = "; ".join(filter(None, [note, "files without an extension are games too ('.' in the list)"]))
rows.append({
"folder": system["folder"],
"name": name,
"extensions": extensions,
"core": core,
"emulator": emulator,
"source_ref": "; ".join(refs),
"note": note,
})
return rows
# ---------------------------------------------------------------------------
# Recalbox
def _ini_sections(text: str) -> tuple[dict[str, dict[str, str]], dict[str, int]]:
sections: dict[str, dict[str, str]] = {}
lines: dict[str, int] = {}
current: dict[str, str] | None = None
name = ""
for number, raw in enumerate(text.splitlines(), 1):
line = raw.strip()
if not line or line.startswith((";", "#")):
continue
if line.startswith("[") and line.endswith("]"):
name = line[1:-1]
current = sections.setdefault(name, {})
lines.setdefault(name, number)
elif current is not None and "=" in line:
k, v = line.split("=", 1)
current[k.strip()] = v.strip().strip('"')
lines.setdefault(f"{name}/{k.strip()}", number)
return sections, lines
@register("recalbox")
def recalbox(spec: dict, fetcher: Fetcher) -> list[dict]:
"""One system.ini per system. The default core is the lowest
`priority` (EmulatorManager), and `priority.<board>` changes it on that
board. A `.ext!` extension is an archive the frontend hands over
unopened."""
params = spec["params"]
key = params.get("source", "os")
rows: list[dict] = []
for entry in fetcher.entries(key, params["systems_dir"]):
path = f"{entry}/system.ini"
text = fetcher.optional_text(key, path)
if text is None:
continue
sections, lines = _ini_sections(text)
system = sections.get("system", {})
folder = _strip_prefix(system.get("roms.folder", ""), ["%ROOT%/"])
if not folder:
continue
cores = []
for section, values in sections.items():
parts = section.split(".")
if parts[0] != "core" or len(parts) != 2:
continue
cores.append({
"section": section, "emulator": values.get("emulator"), "core": values.get("core"),
"priority": int(values.get("priority", "255")),
"boards": {k.split(".", 1)[1]: int(v) for k, v in values.items() if k.startswith("priority.")},
"extensions": values.get("extensions", "").split(),
})
if not cores:
continue
# EmulatorManager walks the cores from the last and keeps a strictly
# lower priority: on a tie the last core listed wins.
pick = min(reversed(cores), key=lambda c: c["priority"])
board_defaults: dict[str, dict] = {}
for board in sorted({b for c in cores for b in c["boards"]}):
best = min(reversed(cores), key=lambda c: c["boards"].get(board, c["priority"]))
if best is not pick:
board_defaults[board] = _board(
best["core"], best["emulator"],
_ref(key, path, lines.get(f"{best['section']}/priority.{board}")))
extensions = sorted({e for c in cores for e in c["extensions"]})
archive = any(e.endswith("!") for e in extensions)
rows.append({
"folder": folder,
"name": system.get("name"),
"extensions": [e.rstrip("!") for e in extensions],
"core": pick["core"],
"emulator": pick["emulator"],
"source_ref": "; ".join([
_ref(key, path, lines.get("system/roms.folder")),
_ref(key, path, lines.get(f"{pick['section']}/priority"),
lines.get(f"{pick['section']}/core")),
]),
"board_defaults": board_defaults,
"arcade": sections.get("properties", {}).get("type") == "arcade" or None,
"note": "an extension ending in ! is an archive the frontend does not open" if archive else None,
})
return rows
# ---------------------------------------------------------------------------
# RetroPie
_MODULE_FIELD = re.compile(r'^rp_module_(id|section|flags)="([^"]*)"', re.MULTILINE)
_ADD_EMULATOR = re.compile(r'^\s*addEmulator\s+(\S+)\s+("[^"]*"|\S+)\s+("[^"]*"|\S+)')
_LIST = re.compile(r'(?:local\s+)?(\w+)=\(([^)]*)\)')
_LOOP = re.compile(r'for (\w+) in (.+?); do')
def _module_valid(flags: list[str], platform: set[str]) -> bool:
"""packages.sh rp_registerModule: flags read in order, `!all` drops
the module, a platform flag keeps it, `!<platform flag>` drops it."""
valid = True
for flag in flags:
if flag == "!all":
valid = False
elif flag in platform:
valid = True
elif flag.startswith("!") and flag[1:] in platform:
valid = False
return valid
def _emulator_calls(text: str) -> Iterator[tuple[int, str, str, list[str]]]:
"""(line, default flag, emulator id, systems) of each addEmulator call,
a system variable expanded through the loop or array that sets it."""
lines = text.splitlines()
arrays = {m.group(1): m.group(2).replace('"', "").split() for m in _LIST.finditer(text)}
loops: list[tuple[int, str, list[str]]] = []
for index, line in enumerate(lines):
match = _LOOP.search(line)
if match:
items = match.group(2).strip()
array = re.fullmatch(r'"?\$\{(\w+)\[@\]\}"?', items)
loops.append((index, match.group(1),
arrays.get(array.group(1), []) if array else items.replace('"', "").split()))
for index, line in enumerate(lines):
match = _ADD_EMULATOR.match(line)
if not match or "function addEmulator" in line:
continue
flag, emu, system = match.group(1), match.group(2).strip('"'), match.group(3).strip('"')
systems = [system]
var = re.fullmatch(r"\$\{?(\w+)\}?", system)
if var:
found = [items for i, name, items in loops if i < index and name == var.group(1)]
if found:
systems = found[-1]
elif var.group(1) in arrays:
systems = arrays[var.group(1)]
else:
continue
yield index + 1, flag, emu, systems
@register("retropie")
def retropie(spec: dict, fetcher: Fetcher) -> list[dict]:
"""Folders are `<system>` under the roms root (helpers.sh addSystem),
with `<system>_exts` from platforms.cfg. The default is set once, by
the first installed module whose addEmulator passes 1: a basic install
installs the core then the main section in registration order
(setup.sh basic_install_setup, packages.sh rp_registerAllModules). A
system no basic-install module serves gets its folder from an optional
module, so the first opt, then exp, module stands as its default."""
params = spec["params"]
key = params.get("source", "os")
cfg_path = params["platforms_cfg"]
cfg = fetcher.text(key, cfg_path)
exts: dict[str, tuple[str, int]] = {}
for number, line in enumerate(cfg.splitlines(), 1):
match = re.match(r'^([\w-]+)_exts="([^"]*)"', line)
if match:
exts[match.group(1)] = (match.group(2), number)
platform = set(params["platform_flags"])
modules: list[dict] = []
for kind in params["module_dirs"]:
for path in fetcher.tree(key, f"scriptmodules/{kind}/"):
if not path.endswith(".sh") or path.count("/") != 2:
continue
text = fetcher.text(key, path)
fields = dict(_MODULE_FIELD.findall(text))
if not _module_valid(fields.get("flags", "").split(), platform):
continue
modules.append({"path": path, "id": fields.get("id", ""),
"section": fields.get("section", ""), "text": text})
order = [m for section in params["install_sections"] for m in modules if m["section"] == section]
defaults: dict[str, tuple[str, str, int]] = {}
for module in order:
for line, flag, emu, systems in _emulator_calls(module["text"]):
if flag != "1":
continue
emu = emu.replace("${md_id}", module["id"]).replace("$md_id", module["id"])
for system in systems:
defaults.setdefault(system, (emu, module["path"], line))
rows: list[dict] = []
for system, (raw, line) in sorted(exts.items()):
refs = [_ref(key, cfg_path, line)]
core = None
if system in defaults:
core, path, call = defaults[system]
refs.append(_ref(key, path, call))
emulator = "retroarch" if core and core.startswith("lr-") else core
rows.append({
"folder": system,
"extensions": _extensions(raw),
"core": core,
"emulator": emulator,
"source_ref": "; ".join(refs),
})
return rows
@@ -0,0 +1,3 @@
snes:
emulator: libretro
core: pocketsnes
@@ -0,0 +1 @@
configgen-defaults-bcm2835.yml
@@ -0,0 +1,9 @@
default:
emulator:
core:
snes:
emulator: libretro
core: snes9x
mame:
emulator: libretro
core: mame078plus
+25
View File
@@ -0,0 +1,25 @@
snes:
name: Super Nintendo
hardware: console
extensions: [smc, SFC, zip]
emulators:
libretro:
snes9x: { requireAnyOf: [X] }
pocketsnes: { requireAnyOf: [Y] }
mame:
name: MAME
hardware: arcade
extensions: [zip, 7z]
emulators:
libretro:
mame078plus: { requireAnyOf: [Z] }
nogame:
name: Has no emulator
extensions: [txt]
elsewhere:
name: Outside the roms root
path: /userdata/library
extensions: [lnk]
emulators:
flatpak:
flatpak: { requireAnyOf: [W] }
@@ -0,0 +1,4 @@
SYSTEM_NAME="3do"
SYSTEM_HARDWARE="console"
SYSTEM_PATH="/storage/roms/3do"
SYSTEM_EXTENSION=".iso .bin .chd"
@@ -0,0 +1,4 @@
SYSTEM_NAME="psx"
SYSTEM_HARDWARE="console"
SYSTEM_PATH="/storage/roms/psx"
SYSTEM_EXTENSION=".cue .CUE .chd"
@@ -0,0 +1,3 @@
SYSTEM_NAME="tools"
SYSTEM_PATH="/storage/.config/modules"
SYSTEM_EXTENSION=".sh"
+23
View File
@@ -0,0 +1,23 @@
PKG_NAME="emulators"
makeinstall_target() {
add_system_dir /storage/roms/bios
add_emu_core 3do retroarch opera true
add_es_system 3do
case ${DEVICE} in
RK3326)
add_emu_core psx retroarch pcsx_rearmed true
add_emu_core psx retroarch swanstation false
;;
*)
add_emu_core psx retroarch swanstation true
add_emu_core psx retroarch pcsx_rearmed false
;;
esac
add_es_system psx
add_emu_core tools ignore ignore true
add_es_system tools
}
+9
View File
@@ -0,0 +1,9 @@
<?xml version="1.0"?>
<systemList>
<system>
<name>model2</name>
<path>%ROMPATH%/model2/roms</path>
<extension>.zip .ZIP</extension>
<command label="Model 2 (Standalone)">%EMULATOR_MODEL-2% %BASENAME% & exit</command>
</system>
</systemList>
+16
View File
@@ -0,0 +1,16 @@
<?xml version="1.0"?>
<systemList>
<system>
<name>psx</name>
<path>%ROMPATH%/psx</path>
<extension>.cue .CUE .chd .CHD</extension>
<command label="Beetle PSX">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_psx_libretro.so %ROM%</command>
<command label="DuckStation (Standalone)">%EMULATOR_DUCKSTATION% -batch %ROM%</command>
</system>
<system>
<name>model2</name>
<path>%ROMPATH%/model2</path>
<extension>.zip</extension>
<command label="MAME">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so %ROM%</command>
</system>
</systemList>
+5
View File
@@ -0,0 +1,5 @@
ESDE_setDefaultEmulators(){
mkdir -p "$gamelists"
ESDE_setEmu 'DuckStation (Standalone)' psx
ESDE_setEmu 'Missing Label' model2
}
+31
View File
@@ -0,0 +1,31 @@
{
"systems": [
{
"name": "psx",
"path": "/storage/roms/psx",
"extensions": [".cue", ".CUE"],
"emulators": [
{"name": "libretro", "cores": [{"name": "pcsx_rearmed"}, {"name": "duckstation", "default": true}]}
]
},
{
"name": "imageviewer",
"path": "/storage/roms/screenshots",
"platform": "ignore",
"command": "ignore",
"extensions": [".png"]
},
{
"name": "pico8",
"path": "/storage/roms/pico-8",
"extensions": [".p8"],
"emulators": [{"name": "Pico-8", "cores": [{"name": "Pico-8", "default": true}]}]
},
{
"name": "pico8",
"path": "/storage/roms/pico",
"extensions": [".md"],
"emulators": [{"name": "libretro", "cores": [{"name": "genesis_plus_gx", "default": true}]}]
}
]
}
@@ -0,0 +1,12 @@
[system]
name = "mame"
roms.folder = "%ROOT%/mame"
[properties]
type = arcade
[core.0]
priority = 1
emulator = "libretro"
core = "mame2003_plus"
extensions = ".zip!"
@@ -0,0 +1,25 @@
[system]
name = "psx"
roms.folder = "%ROOT%/psx"
[properties]
type = console
[core.0]
priority = 1
emulator = "libretro"
core = "pcsx_rearmed"
extensions = ".cue .chd"
[core.1]
priority = 1
emulator = "libretro"
core = "swanstation"
extensions = ".cue .pbp"
[core.2]
priority = 2
priority.rpi1 = 0
emulator = "libretro"
core = "mednafen_psx"
extensions = ".cue"
+8
View File
@@ -0,0 +1,8 @@
psx_exts=".cue .chd"
psx_fullname="PlayStation"
nes_exts=".nes .zip"
nes_fullname="Nintendo Entertainment System"
vectrex_exts=".vec"
vectrex_fullname="Vectrex"
@@ -0,0 +1,7 @@
rp_module_id="pcsx2"
rp_module_section="exp"
rp_module_flags="!all x86"
function configure_pcsx2() {
addEmulator 1 "$md_id" "psx" "pcsx2 %ROM%"
}
@@ -0,0 +1,9 @@
rp_module_id="lr-fceumm"
rp_module_section="main"
function configure_lr-fceumm() {
local system
for system in nes fds; do
addEmulator 1 "$md_id" "$system" "$md_inst/fceumm_libretro.so"
done
}
@@ -0,0 +1,7 @@
rp_module_id="lr-pcsx-rearmed"
rp_module_section="main"
rp_module_flags="!x86"
function configure_lr-pcsx-rearmed() {
addEmulator 1 "$md_id" "psx" "$md_inst/pcsx_rearmed_libretro.so"
}
@@ -0,0 +1,6 @@
rp_module_id="lr-swanstation"
rp_module_section="opt"
function configure_lr-swanstation() {
addEmulator 1 "$md_id" "psx" "$md_inst/swanstation_libretro.so"
}
+47
View File
@@ -0,0 +1,47 @@
<?xml version="1.0"?>
<systemList>
<system>
<name>psx</name>
<path>/storage/roms/psx</path>
<extension>.cue .CUE .chd</extension>
<command>runemu.py %ROM%</command>
<platform>psx</platform>
<emulators>
<emulator name="retroarch">
<cores>
<core>pcsx_rearmed</core>
<core default="true">duckstation</core>
</cores>
</emulator>
</emulators>
</system>
<!-- <system><name>commented</name><path>/storage/roms/commented</path> --no-gui </system> -->
<system>
<name>advision</name>
<path>/storage/roms/advision/</path>
<extension>.bin .zip</extension>
<command>retroarch -L /cores/mess_libretro.so %ROM% 2>&1 > /dev/null</command>
<platform>advision</platform>
</system>
<system>
<name>tools</name>
<path>/storage/.config/modules</path>
<extension>.sh</extension>
<command>ignore</command>
<platform>ignore</platform>
</system>
<system>
<name>mame</name>
<path>/storage/roms/mame</path>
<extension>.zip</extension>
<command>runemu.py %ROM%</command>
<platform>arcade</platform>
<emulators>
<emulator name="retroarch">
<cores>
<core>mame2003_plus</core>
</cores>
</emulator>
</emulators>
</system>
</systemList>
+47
View File
@@ -0,0 +1,47 @@
<?xml version="1.0"?>
<systemList>
<system>
<name>psx</name>
<path>/storage/roms/psx</path>
<extension>.cue .CUE .chd</extension>
<command>runemu.py %ROM%</command>
<platform>psx</platform>
<emulators>
<emulator name="retroarch">
<cores>
<core>pcsx_rearmed</core>
<core default="true">swanstation</core>
</cores>
</emulator>
</emulators>
</system>
<!-- <system><name>commented</name><path>/storage/roms/commented</path> --no-gui </system> -->
<system>
<name>advision</name>
<path>/storage/roms/advision/</path>
<extension>.bin .zip</extension>
<command>retroarch -L /cores/mess_libretro.so %ROM% 2>&1 > /dev/null</command>
<platform>advision</platform>
</system>
<system>
<name>tools</name>
<path>/storage/.config/modules</path>
<extension>.sh</extension>
<command>ignore</command>
<platform>ignore</platform>
</system>
<system>
<name>mame</name>
<path>/storage/roms/mame</path>
<extension>.zip</extension>
<command>runemu.py %ROM%</command>
<platform>arcade</platform>
<emulators>
<emulator name="retroarch">
<cores>
<core>mame2003_plus</core>
</cores>
</emulator>
</emulators>
</system>
</systemList>
+64
View File
@@ -0,0 +1,64 @@
{
"onion": {
"static/packages/Emu/Nintendo - GBA (gpSP)/Emu/GBA/config.json": "{\n \"label\": \"GBA\",\n \"launch\": \"launch.sh\",\n \"rompath\": \"../../Roms/GBA\",\n \"extlist\": \"gba|GBA|zip|7z\"\n}\n",
"static/packages/Emu/Nintendo - GBA (gpSP)/Emu/GBA/launch.sh": "#!/bin/sh\ndefault_core=gpsp\ncore=\"$default_core\"\nretroarch -L .retroarch/cores/${default_core}_libretro.so \"$1\"\n",
"static/packages/RApp/Nintendo - GBA (VBA-M)/RApp/GBA_VBAM/config.json": "{\n \"label\": \"VBA-M\",\n \"rompath\": \"../../Roms/GBA\",\n \"extlist\": \"gba\"\n}\n",
"static/packages/RApp/Nintendo - GBA (VBA-M)/RApp/GBA_VBAM/launch.sh": "retroarch -L .retroarch/cores/vbam_libretro.so \"$1\"\n",
"static/packages/RApp/NEC - PC-98 (Neko Project II)/RApp/NP2/config.json": "{\n \"rompath\": \"/mnt/SDCARD/Roms/PCNINETYEIGHT\",\n \"extlist\": \"d98|hdi\"\n}\n",
"static/packages/RApp/NEC - PC-98 (Neko Project II)/RApp/NP2/launch.sh": "retroarch -L .retroarch/cores/nekop2_libretro.so \"$1\"\n",
"static/packages/App/Clock/App/Clock/config.json": "{\"label\": \"Clock\"}\n"
},
"spruce": {
"Emu/PS/config.json": "{\n \"label\": \"PlayStation\",\n \"alternativeFolderNames\": [\"psx\", \"PS1\"],\n \"extlist\": \"bin|cue|CHD\",\n \"default_emulator\": \"pcsx_rearmed\",\n \"ignoreList\": [\"neogeo.zip\"]\n}\n",
"Emu/-CUSTOM-SYSTEM-/config.json": "{\"label\": \"template\"}\n",
"Emu/PS/launch.sh": "echo\n"
},
"crossmix": {
"Emus/PS/config.json": "{\n \"rompath\": \"../../Roms/PS\",\n \"extlist\": \"cue|chd\",\n \"launchlist\": [\n {\"name\": \"--- libretro ---\", \"launch\": \"\"},\n {\"name\": \"PCSX ReARMed\", \"launch\": \"pcsx.sh\"}\n ]\n}\n",
"Emus/PS/pcsx.sh": "RA_CORE=\"$HOME/cores/pcsx_rearmed_libretro.so\"\n",
"Emus/_BootLogo/config.json": "{\"rompath\": \"../../Apps/x\"}\n"
},
"koriki": {
"base/.simplemenu/section_groups/apps and games.ini": "[CONSOLES]\nexecs = none\n\n[PS]\nexecs = /mnt/SDCARD/.simplemenu/launchers/pcsx_libretro.sh,/mnt/SDCARD/.simplemenu/launchers/pcsx_standalone.sh\nromDirs = /mnt/SDCARD/Roms/PS/\nromExts = .cue,.CHD,.pbp\n",
"base/.simplemenu/launchers/pcsx_libretro.sh": "retroarch -L /mnt/SDCARD/RetroArch/.retroarch/cores/pcsx_rearmed_libretro.so \"$1\"\n"
},
"allium": {
"consoles.toml": "[[consoles]]\nname = \"Arcade\"\ncores = [\n \"mame2003_plus\",\n \"fbneo\",\n]\npatterns = [\"ARCADE\", \"mame\"]\n\n[[consoles]]\nname = \"Game Boy Advance\"\ncores = [\"gpsp\"]\npatterns = [\"GBA\"]\nextensions = [\"gba\"]\n\n[[consoles]]\nname = \"Native\"\ncores = [\"native\"]\nextensions = [\"pak\"]\n",
"cores.toml": "[cores.native]\npath = \"/mnt/SDCARD/.allium/cores/pak/launch.sh\"\nname = \"Native\"\n\n[cores.\"dosbox_pure_0.9.7\"]\nretroarch = \"dosbox_pure_0.9.7\"\n\n[cores.mame2003_plus]\nretroarch = \"mame2003_plus\"\nname = \"MAME 2003+\"\n\n[cores.gpsp]\nretroarch = \"gpsp\"\n"
},
"minui": {
"skeleton/BASE/Roms/Sony PlayStation (PS)/.keep": "",
"skeleton/SYSTEM/rg35xx/paks/Emus/PS.pak/launch.sh": "#!/bin/sh\nEMU_EXE=pcsx_rearmed\nminarch.elf \"$CORES_PATH/${EMU_EXE}_libretro.so\" \"$1\"\n",
"skeleton/SYSTEM/miyoomini/paks/Emus/PS.pak/launch.sh": "#!/bin/sh\nEMU_EXE=pcsx_rearmed\nminarch.elf \"$CORES_PATH/${EMU_EXE}_libretro.so\" \"$1\"\n",
"skeleton/SYSTEM/tg5040/paks/Emus/PS.pak/launch.sh": "#!/bin/sh\nEMU_EXE=swanstation\nminarch.elf \"$CORES_PATH/${EMU_EXE}_libretro.so\" \"$1\"\n",
"skeleton/EXTRAS/Emus/miyoomini/A2600.pak/launch.sh": "#!/bin/sh\nEMU_EXE=stella2014\nminarch.elf \"$CORES_PATH/${EMU_EXE}_libretro.so\" \"$1\"\n"
},
"plumos": {
"systems.json": "{\n \"systems\": [\n {\n \"id\": \"nes\",\n \"enabled\": true,\n \"directory_aliases\": [\n {\"name\": \"nes\", \"priority\": 20},\n {\"name\": \"FC\", \"priority\": 10, \"shared\": true}\n ],\n \"extensions\": [\"nes\", \"zip\"],\n \"default_launch_profile\": \"retroarch:quicknes\"\n },\n {\n \"id\": \"fds\",\n \"enabled\": false,\n \"directory_aliases\": [\n {\"name\": \"FC\", \"priority\": 10, \"shared\": true},\n {\"name\": \"fds\", \"priority\": 20}\n ],\n \"extensions\": [\"fds\"],\n \"default_launch_profile\": \"standalone:fceux\"\n }\n ]\n}\n"
},
"muos": {
"core.json": "{\n \"Sony PlayStation\": {\n \"catalogue\": \"Sony PlayStation\",\n \"default\": \"psx rearmed\",\n \"friendly\": [\"ps\", \"psx\", \"sonyplaystation\"],\n \"libretro\": {\"psx rearmed\": {\"core\": \"pcsx_rearmed_libretro.so\"}}\n },\n \"Nintendo DS\": {\n \"catalogue\": \"Nintendo DS\",\n \"default\": \"drastic\",\n \"friendly\": [\"nds\", \"nintendods\"],\n \"libretro\": {}\n }\n}\n"
},
"gmenu2x": {
"board/miyoo/roms/GB/a.gb": "",
"board/miyoo/roms/GBA/b.gba": "",
"board/miyoo/roms/autorun.inf": ""
},
"gpsp": {
"miyoo/opkg_assets/gpsp.lnk": "title=gpSP\nexec=/mnt/emus/gpsp/gpsp\nselectordir=/mnt/roms/GBA\nselectorfilter=.gba,.zip\n"
},
"dist": {
"games/SNES/boot.rom": "",
"games/mame/.keep": "",
"games/readme.txt": ""
},
"romm": {
"index.ts": "const _EJS_CORES_MAP: Record<string, string[]> = {\n \"3do\": [\"opera\"],\n arcade: [\n \"mame2003_plus\",\n \"fbneo\",\n ],\n};\n\nconst _EJS_NIGHTLY_CORES_MAP: Record<string, string[]> = {\n \"3ds\": [\"azahar\"],\n};\n",
"known_bios_files.json": "{\"3do:panafz1.bin\": {}, \"64dd:IPL.n64\": {}}\n"
},
"bizhawk": {
"PathEntryCollection.cs": "\t\tprivate static readonly string COMBINED_SYSIDS_GB = string.Join(\"_\", VSystemID.Raw.GB, VSystemID.Raw.GBC, VSystemID.Raw.SGB);\n\t\t\tCommonEntriesFor(VSystemID.Raw.Sega32X, basePath: Path.Combine(\".\", \"32X\")),\n\t\t\tCommonEntriesFor(COMBINED_SYSIDS_GB, basePath: Path.Combine(\".\", \"Gameboy\")),\n\t\t\tCommonEntriesFor(VSystemID.Raw.NES, basePath: Path.Combine(\".\", \"NES\")),\n",
"RomLoader.cs": "\t\t\tpublic static readonly IReadOnlyCollection<string> GB = new[] { \"gb\", \"gbc\", \"sgb\" };\n\t\t\tpublic static readonly IReadOnlyCollection<string> NES = new[] { \"nes\", \"fds\", /*\"x\"*/ \"unf\" };\n",
"Config.cs": "\t\tpublic static readonly IReadOnlyList<(string[] AppliesTo, string[] CoreNames)> CorePickerUIData = new List<(string[], string[])>\n\t\t{\n\t\t\t([ VSystemID.Raw.GB, VSystemID.Raw.GBC ],\n\t\t\t\t[ CoreNames.Gambatte, CoreNames.Sameboy ]),\n\t\t\t([ VSystemID.Raw.NES ],\n\t\t\t\t[ CoreNames.QuickNes, CoreNames.NesHawk ]),\n\t\t};\n"
}
}
Loaded 100 of 102 files, more files were not shown because too many files have changed in this diff. Show more