mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-11-11 12:33:53 -06:00
feat: record config installs in shell extractors
ROCKNIX, EmuELEC, AmberELEC, EmuDeck and RetroDECK records citing a config now carry the code installing it, whether that keeps a file already there, and the launch code rewriting its keys. Rescraped at the pinned revisions. Records the shipped code never reads are no longer written: EmuELEC's mame.ini folders (MAME.opt turns paths off), AmberELEC's atari800.cfg (read only under an option that is off), the six RetroDECK XRoar ROM lists no machine looks up, and the ROCKNIX melonDS DSi BIOS keys (DSiExternalBIOSEnable is set by no shipped ini). Conditions added: ROCKNIX and AmberELEC amiberry kickstarts hold only outside a WHDLoad --autoload boot, ROCKNIX NanoBoyAdvance exits without its BIOS, the EmuELEC scummvm.ini copy runs from an action no launch passes, and the EmuDeck melonDS.toml keys need ExternalBIOSEnable (DS) or ConsoleType 1 (DSi).
This commit is contained in:
1 parent
3129eaf10c
commit
c5d3e85bac
16 files changed
+1153
-418
No files matched your search
+24
-21
@@ -3180,6 +3180,11 @@ launchers:
|
||||
search_dir: ~/roms/bios
|
||||
passes_to: retroarch.cfg system_directory
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: /storage/.config/retroarch/retroarch.cfg
|
||||
source_ref: "packages/sysutils/systemd/scripts/userconfig-setup:20"
|
||||
kept_if_present: true
|
||||
overrides: []
|
||||
source_ref: "packages/games/tools/retroarch/sources/retroarch.cfg:611"
|
||||
- emulator: retrorun
|
||||
build: libretro
|
||||
@@ -3198,25 +3203,6 @@ launchers:
|
||||
fails_when_missing: false
|
||||
depends_on_option: self.emulator == 'mame'
|
||||
source_ref: "packages/amberelec/sources/scripts/runemu.py:233, 252, 255"
|
||||
- emulator: atari800
|
||||
build: libretro
|
||||
kind: fixed_name
|
||||
names:
|
||||
- ATARIOSA.ROM
|
||||
- ATARIXL.ROM
|
||||
- 5200.rom
|
||||
- 5200a.rom
|
||||
- BASIC_Rev_A.rom
|
||||
- BASIC_Rev_B.rom
|
||||
- ATARIBAS.ROM
|
||||
- ATARIOSB.ROM
|
||||
case_insensitive: false
|
||||
search_dir: /storage/roms/bios
|
||||
passes_to: atari800.cfg ROM_OS_A_PAL, ROM_OS_BB01R2, ROM_5200, ROM_5200_A, ROM_BASIC_A,
|
||||
ROM_BASIC_B, ROM_BASIC_C, ROM_400/800_CUSTOM
|
||||
fails_when_missing: false
|
||||
source_ref: "packages/games/libretro/atari800/patches/atari800-01-add-emuelec-platform.patch:27,\
|
||||
\ packages/amberelec/config/distribution/configs/atari800.cfg:3, 8, 16-22"
|
||||
- emulator: scummvm
|
||||
build: libretro
|
||||
kind: passes_path
|
||||
@@ -3291,7 +3277,13 @@ launchers:
|
||||
passes_to: "AmigaA1200-default.uae kickstart_rom_file, $(FILE_PATH) = /storage/.config/amiberry/kickstarts/"
|
||||
fails_when_missing: false
|
||||
depends_on_option: "[ `echo $1 | egrep 'AGA|CD32' | wc -l` -eq 1 -o `echo \"$AMIBERRY_TMP_DIR\"\
|
||||
/* | egrep 'AGA|CD32' | wc -l` -eq 1 ]"
|
||||
/* | egrep 'AGA|CD32' | wc -l` -eq 1 ], content not booted with --autoload, a\
|
||||
\ WHDLoad .lha or .zip (amiberry.sh:83, 122)"
|
||||
installs:
|
||||
path: /tmp/emulation/amiberry/.amiberry_conf.uae
|
||||
source_ref: "packages/games/emulators/amiberry/scripts/amiberry.sh:59"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "packages/amberelec/sources/scripts/runemu.py:111, packages/games/emulators/amiberry/scripts/amiberry.sh:57-59,\
|
||||
\ packages/games/emulators/amiberry/config/conf/AmigaA1200-default.uae:35, 85"
|
||||
- emulator: AMIBERRY
|
||||
@@ -3305,7 +3297,13 @@ launchers:
|
||||
passes_to: "AmigaA500-default.uae kickstart_rom_file, $(FILE_PATH) = /storage/.config/amiberry/kickstarts/"
|
||||
fails_when_missing: false
|
||||
depends_on_option: "not ([ `echo $1 | egrep 'AGA|CD32' | wc -l` -eq 1 -o `echo \"\
|
||||
$AMIBERRY_TMP_DIR\"/* | egrep 'AGA|CD32' | wc -l` -eq 1 ])"
|
||||
$AMIBERRY_TMP_DIR\"/* | egrep 'AGA|CD32' | wc -l` -eq 1 ]), content not booted\
|
||||
\ with --autoload, a WHDLoad .lha or .zip (amiberry.sh:83, 122)"
|
||||
installs:
|
||||
path: /tmp/emulation/amiberry/.amiberry_conf.uae
|
||||
source_ref: "packages/games/emulators/amiberry/scripts/amiberry.sh:62"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "packages/amberelec/sources/scripts/runemu.py:111, packages/games/emulators/amiberry/scripts/amiberry.sh:60-62,\
|
||||
\ packages/games/emulators/amiberry/config/conf/AmigaA500-default.uae:35, 85"
|
||||
- emulator: HATARISA
|
||||
@@ -3317,6 +3315,11 @@ launchers:
|
||||
search_dir: /storage/roms/bios
|
||||
passes_to: "Atari-ST-default.cfg [ROM] szTosImageFileName"
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: /tmp/hatari/.hatari-temp.cfg
|
||||
source_ref: "packages/games/emulators/hatarisa/scripts/hatari.sh:36"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "packages/amberelec/sources/scripts/runemu.py:113, packages/games/emulators/hatarisa/scripts/hatari.sh:36,\
|
||||
\ 66, packages/games/emulators/hatarisa/config/conf/Atari-ST-default.cfg:200"
|
||||
- emulator: pico8
|
||||
|
||||
+105
-2
@@ -937,6 +937,12 @@ launchers:
|
||||
search_dir: "${biosPath}"
|
||||
passes_to: settings.bml ColecoVision/Firmware/BIOS.World
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: "${HOME}/.var/app/dev.ares.ares/data/ares/settings.bml"
|
||||
source_ref: "functions/EmuScripts/emuDeckares.sh:26, 42, functions/configEmuFP.sh:11,\
|
||||
\ 15"
|
||||
kept_if_present: true
|
||||
overrides: []
|
||||
source_ref: "configs/dev.ares.ares/data/ares/settings.bml:270, functions/EmuScripts/emuDeckares.sh:6,\
|
||||
\ 63-64"
|
||||
- emulator: ares
|
||||
@@ -948,6 +954,12 @@ launchers:
|
||||
search_dir: "${biosPath}"
|
||||
passes_to: settings.bml MSX/Firmware/BIOS.Japan
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: "${HOME}/.var/app/dev.ares.ares/data/ares/settings.bml"
|
||||
source_ref: "functions/EmuScripts/emuDeckares.sh:26, 42, functions/configEmuFP.sh:11,\
|
||||
\ 15"
|
||||
kept_if_present: true
|
||||
overrides: []
|
||||
source_ref: "configs/dev.ares.ares/data/ares/settings.bml:278, functions/EmuScripts/emuDeckares.sh:6,\
|
||||
\ 63-64"
|
||||
- emulator: ares
|
||||
@@ -959,6 +971,12 @@ launchers:
|
||||
search_dir: "${biosPath}"
|
||||
passes_to: settings.bml MSX2/Firmware/BIOS.Japan
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: "${HOME}/.var/app/dev.ares.ares/data/ares/settings.bml"
|
||||
source_ref: "functions/EmuScripts/emuDeckares.sh:26, 42, functions/configEmuFP.sh:11,\
|
||||
\ 15"
|
||||
kept_if_present: true
|
||||
overrides: []
|
||||
source_ref: "configs/dev.ares.ares/data/ares/settings.bml:283, functions/EmuScripts/emuDeckares.sh:6,\
|
||||
\ 63-64"
|
||||
- emulator: ares
|
||||
@@ -971,6 +989,12 @@ launchers:
|
||||
search_dir: "${biosPath}"
|
||||
passes_to: settings.bml PCEngineCD/Firmware/BIOS.US, PCEngineCD/Firmware/BIOS.Japan
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: "${HOME}/.var/app/dev.ares.ares/data/ares/settings.bml"
|
||||
source_ref: "functions/EmuScripts/emuDeckares.sh:26, 42, functions/configEmuFP.sh:11,\
|
||||
\ 15"
|
||||
kept_if_present: true
|
||||
overrides: []
|
||||
source_ref: "configs/dev.ares.ares/data/ares/settings.bml:291-292, functions/EmuScripts/emuDeckares.sh:6,\
|
||||
\ 63-64"
|
||||
- emulator: ares
|
||||
@@ -982,6 +1006,12 @@ launchers:
|
||||
search_dir: "${biosPath}"
|
||||
passes_to: settings.bml SuperGrafxCD/Firmware/BIOS.Japan
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: "${HOME}/.var/app/dev.ares.ares/data/ares/settings.bml"
|
||||
source_ref: "functions/EmuScripts/emuDeckares.sh:26, 42, functions/configEmuFP.sh:11,\
|
||||
\ 15"
|
||||
kept_if_present: true
|
||||
overrides: []
|
||||
source_ref: "configs/dev.ares.ares/data/ares/settings.bml:300, functions/EmuScripts/emuDeckares.sh:6,\
|
||||
\ 63-64"
|
||||
- emulator: ares
|
||||
@@ -993,6 +1023,12 @@ launchers:
|
||||
search_dir: "${biosPath}"
|
||||
passes_to: settings.bml FamicomDiskSystem/Firmware/BIOS.Japan
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: "${HOME}/.var/app/dev.ares.ares/data/ares/settings.bml"
|
||||
source_ref: "functions/EmuScripts/emuDeckares.sh:26, 42, functions/configEmuFP.sh:11,\
|
||||
\ 15"
|
||||
kept_if_present: true
|
||||
overrides: []
|
||||
source_ref: "configs/dev.ares.ares/data/ares/settings.bml:308, functions/EmuScripts/emuDeckares.sh:6,\
|
||||
\ 63-64"
|
||||
- emulator: ares
|
||||
@@ -1007,6 +1043,12 @@ launchers:
|
||||
passes_to: settings.bml Nintendo64DD/Firmware/BIOS.Japan, Nintendo64DD/Firmware/BIOS.US,
|
||||
Nintendo64DD/Firmware/BIOS.DEV
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: "${HOME}/.var/app/dev.ares.ares/data/ares/settings.bml"
|
||||
source_ref: "functions/EmuScripts/emuDeckares.sh:26, 42, functions/configEmuFP.sh:11,\
|
||||
\ 15"
|
||||
kept_if_present: true
|
||||
overrides: []
|
||||
source_ref: "configs/dev.ares.ares/data/ares/settings.bml:319-321, functions/EmuScripts/emuDeckares.sh:6,\
|
||||
\ 63-64"
|
||||
- emulator: ares
|
||||
@@ -1018,6 +1060,12 @@ launchers:
|
||||
search_dir: "${biosPath}"
|
||||
passes_to: settings.bml GameBoyAdvance/Firmware/BIOS.World
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: "${HOME}/.var/app/dev.ares.ares/data/ares/settings.bml"
|
||||
source_ref: "functions/EmuScripts/emuDeckares.sh:26, 42, functions/configEmuFP.sh:11,\
|
||||
\ 15"
|
||||
kept_if_present: true
|
||||
overrides: []
|
||||
source_ref: "configs/dev.ares.ares/data/ares/settings.bml:332, functions/EmuScripts/emuDeckares.sh:6,\
|
||||
\ 63-64"
|
||||
- emulator: ares
|
||||
@@ -1032,6 +1080,12 @@ launchers:
|
||||
passes_to: settings.bml MasterSystem/Firmware/BIOS.US, MasterSystem/Firmware/BIOS.Japan,
|
||||
MasterSystem/Firmware/BIOS.Europe
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: "${HOME}/.var/app/dev.ares.ares/data/ares/settings.bml"
|
||||
source_ref: "functions/EmuScripts/emuDeckares.sh:26, 42, functions/configEmuFP.sh:11,\
|
||||
\ 15"
|
||||
kept_if_present: true
|
||||
overrides: []
|
||||
source_ref: "configs/dev.ares.ares/data/ares/settings.bml:340-342, functions/EmuScripts/emuDeckares.sh:6,\
|
||||
\ 63-64"
|
||||
- emulator: ares
|
||||
@@ -1043,6 +1097,12 @@ launchers:
|
||||
search_dir: "${biosPath}"
|
||||
passes_to: settings.bml GameGear/Firmware/BIOS.World
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: "${HOME}/.var/app/dev.ares.ares/data/ares/settings.bml"
|
||||
source_ref: "functions/EmuScripts/emuDeckares.sh:26, 42, functions/configEmuFP.sh:11,\
|
||||
\ 15"
|
||||
kept_if_present: true
|
||||
overrides: []
|
||||
source_ref: "configs/dev.ares.ares/data/ares/settings.bml:347, functions/EmuScripts/emuDeckares.sh:6,\
|
||||
\ 63-64"
|
||||
- emulator: ares
|
||||
@@ -1056,6 +1116,12 @@ launchers:
|
||||
search_dir: "${biosPath}"
|
||||
passes_to: settings.bml MegaCD/Firmware/BIOS.US, MegaCD/Firmware/BIOS.Japan, MegaCD/Firmware/BIOS.Europe
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: "${HOME}/.var/app/dev.ares.ares/data/ares/settings.bml"
|
||||
source_ref: "functions/EmuScripts/emuDeckares.sh:26, 42, functions/configEmuFP.sh:11,\
|
||||
\ 15"
|
||||
kept_if_present: true
|
||||
overrides: []
|
||||
source_ref: "configs/dev.ares.ares/data/ares/settings.bml:358-360, functions/EmuScripts/emuDeckares.sh:6,\
|
||||
\ 63-64"
|
||||
- emulator: ares
|
||||
@@ -1067,6 +1133,12 @@ launchers:
|
||||
search_dir: "${biosPath}"
|
||||
passes_to: settings.bml NeoGeoAES/Firmware/BIOS.World
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: "${HOME}/.var/app/dev.ares.ares/data/ares/settings.bml"
|
||||
source_ref: "functions/EmuScripts/emuDeckares.sh:26, 42, functions/configEmuFP.sh:11,\
|
||||
\ 15"
|
||||
kept_if_present: true
|
||||
overrides: []
|
||||
source_ref: "configs/dev.ares.ares/data/ares/settings.bml:368, functions/EmuScripts/emuDeckares.sh:6,\
|
||||
\ 63-64"
|
||||
- emulator: ares
|
||||
@@ -1078,6 +1150,12 @@ launchers:
|
||||
search_dir: "${biosPath}"
|
||||
passes_to: settings.bml NeoGeoPocket/Firmware/BIOS.World
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: "${HOME}/.var/app/dev.ares.ares/data/ares/settings.bml"
|
||||
source_ref: "functions/EmuScripts/emuDeckares.sh:26, 42, functions/configEmuFP.sh:11,\
|
||||
\ 15"
|
||||
kept_if_present: true
|
||||
overrides: []
|
||||
source_ref: "configs/dev.ares.ares/data/ares/settings.bml:378, functions/EmuScripts/emuDeckares.sh:6,\
|
||||
\ 63-64"
|
||||
- emulator: ares
|
||||
@@ -1089,6 +1167,12 @@ launchers:
|
||||
search_dir: "${biosPath}"
|
||||
passes_to: settings.bml NeoGeoPocketColor/Firmware/BIOS.World
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: "${HOME}/.var/app/dev.ares.ares/data/ares/settings.bml"
|
||||
source_ref: "functions/EmuScripts/emuDeckares.sh:26, 42, functions/configEmuFP.sh:11,\
|
||||
\ 15"
|
||||
kept_if_present: true
|
||||
overrides: []
|
||||
source_ref: "configs/dev.ares.ares/data/ares/settings.bml:383, functions/EmuScripts/emuDeckares.sh:6,\
|
||||
\ 63-64"
|
||||
- emulator: ares
|
||||
@@ -1103,6 +1187,12 @@ launchers:
|
||||
passes_to: settings.bml PlayStation/Firmware/BIOS.US, PlayStation/Firmware/BIOS.Japan,
|
||||
PlayStation/Firmware/BIOS.Europe
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: "${HOME}/.var/app/dev.ares.ares/data/ares/settings.bml"
|
||||
source_ref: "functions/EmuScripts/emuDeckares.sh:26, 42, functions/configEmuFP.sh:11,\
|
||||
\ 15"
|
||||
kept_if_present: true
|
||||
overrides: []
|
||||
source_ref: "configs/dev.ares.ares/data/ares/settings.bml:388-390, functions/EmuScripts/emuDeckares.sh:6,\
|
||||
\ 63-64"
|
||||
- emulator: melonds
|
||||
@@ -1121,6 +1211,12 @@ launchers:
|
||||
DSiFirmwarePath, DSiNANDPath
|
||||
fails_when_missing: false
|
||||
depends_on_option: ExternalBIOSEnable = 0 in the shipped melonDS.ini
|
||||
installs:
|
||||
path: "${HOME}/.var/app/net.kuribo64.melonDS/config/melonDS/melonDS.ini"
|
||||
source_ref: "functions/EmuScripts/emuDeckMelonDS.sh:29, 48, functions/configEmuFP.sh:11,\
|
||||
\ 15"
|
||||
kept_if_present: true
|
||||
overrides: []
|
||||
source_ref: "functions/EmuScripts/emuDeckMelonDS.sh:7, 62-68, 71-77, configs/net.kuribo64.melonDS/config/melonDS/melonDS.ini:77"
|
||||
- emulator: melonds
|
||||
build: standalone
|
||||
@@ -1137,8 +1233,15 @@ launchers:
|
||||
passes_to: "melonDS.toml [DS] FirmwarePath, BIOS7Path, BIOS9Path [DSi] FirmwarePath,\
|
||||
\ NANDPath, BIOS7Path, BIOS9Path"
|
||||
fails_when_missing: false
|
||||
depends_on_option: ExternalBIOSEnable = false in the shipped melonDS.toml
|
||||
source_ref: "configs/net.kuribo64.melonDS/config/melonDS/melonDS.toml:176, 181-183,\
|
||||
depends_on_option: "[DS] keys: ExternalBIOSEnable = true, false in the shipped melonDS.toml;\
|
||||
\ [DSi] keys: ConsoleType = 1, 0 in the shipped melonDS.toml"
|
||||
installs:
|
||||
path: "${HOME}/.var/app/net.kuribo64.melonDS/config/melonDS/melonDS.toml"
|
||||
source_ref: "functions/EmuScripts/emuDeckMelonDS.sh:29, 48, functions/configEmuFP.sh:11,\
|
||||
\ 15"
|
||||
kept_if_present: true
|
||||
overrides: []
|
||||
source_ref: "configs/net.kuribo64.melonDS/config/melonDS/melonDS.toml:176-178, 181-183,\
|
||||
\ 186-189, functions/EmuScripts/emuDeckMelonDS.sh:8, 32"
|
||||
- emulator: mupen64plus_next
|
||||
build: standalone
|
||||
|
||||
+138
-91
@@ -4241,96 +4241,6 @@ launchers:
|
||||
fails_when_missing: false
|
||||
depends_on_option: /storage/roms/bios/mame/ini/mame.ini absent
|
||||
source_ref: "packages/sx05re/emuelec/bin/emuelecRunEmu.sh:357-358, packages/sx05re/libretro/mame/scripts/mame.sh:21-23"
|
||||
- emulator: mame
|
||||
build: libretro
|
||||
kind: passes_path
|
||||
names: []
|
||||
search_dir: /storage/roms/bios/mame
|
||||
passes_to: mame.ini homepath
|
||||
fails_when_missing: false
|
||||
depends_on_option: mame_read_config = enabled
|
||||
source_ref: "packages/sx05re/libretro/mame/config/ini/mame.ini:10, packages/sx05re/libretro/mame/config/MAME/MAME.opt:19,\
|
||||
\ packages/sx05re/emuelec/bin/emuelecRunEmu.sh:357-358, packages/sx05re/libretro/mame/scripts/mame.sh:21-23"
|
||||
- emulator: mame
|
||||
build: libretro
|
||||
kind: passes_path
|
||||
names: []
|
||||
search_dir: /storage/roms/bios/mame/bios
|
||||
passes_to: mame.ini rompath
|
||||
fails_when_missing: false
|
||||
depends_on_option: mame_read_config = enabled
|
||||
source_ref: "packages/sx05re/libretro/mame/config/ini/mame.ini:11, packages/sx05re/libretro/mame/config/MAME/MAME.opt:19,\
|
||||
\ packages/sx05re/emuelec/bin/emuelecRunEmu.sh:357-358, packages/sx05re/libretro/mame/scripts/mame.sh:21-23"
|
||||
- emulator: mame
|
||||
build: libretro
|
||||
kind: passes_path
|
||||
names: []
|
||||
search_dir: /storage/roms/bios/mame/hash
|
||||
passes_to: mame.ini hashpath
|
||||
fails_when_missing: false
|
||||
depends_on_option: mame_read_config = enabled
|
||||
source_ref: "packages/sx05re/libretro/mame/config/ini/mame.ini:12, packages/sx05re/libretro/mame/config/MAME/MAME.opt:19,\
|
||||
\ packages/sx05re/emuelec/bin/emuelecRunEmu.sh:357-358, packages/sx05re/libretro/mame/scripts/mame.sh:21-23"
|
||||
- emulator: mame
|
||||
build: libretro
|
||||
kind: passes_path
|
||||
names: []
|
||||
search_dir: /storage/roms/bios/mame/samples
|
||||
passes_to: mame.ini samplepath
|
||||
fails_when_missing: false
|
||||
depends_on_option: mame_read_config = enabled
|
||||
source_ref: "packages/sx05re/libretro/mame/config/ini/mame.ini:13, packages/sx05re/libretro/mame/config/MAME/MAME.opt:19,\
|
||||
\ packages/sx05re/emuelec/bin/emuelecRunEmu.sh:357-358, packages/sx05re/libretro/mame/scripts/mame.sh:21-23"
|
||||
- emulator: mame
|
||||
build: libretro
|
||||
kind: passes_path
|
||||
names: []
|
||||
search_dir: /storage/roms/bios/mame/artwork
|
||||
passes_to: mame.ini artpath
|
||||
fails_when_missing: false
|
||||
depends_on_option: mame_read_config = enabled
|
||||
source_ref: "packages/sx05re/libretro/mame/config/ini/mame.ini:14, packages/sx05re/libretro/mame/config/MAME/MAME.opt:19,\
|
||||
\ packages/sx05re/emuelec/bin/emuelecRunEmu.sh:357-358, packages/sx05re/libretro/mame/scripts/mame.sh:21-23"
|
||||
- emulator: mame
|
||||
build: libretro
|
||||
kind: passes_path
|
||||
names: []
|
||||
search_dir: /storage/roms/bios/mame/ini
|
||||
passes_to: mame.ini inipath
|
||||
fails_when_missing: false
|
||||
depends_on_option: mame_read_config = enabled
|
||||
source_ref: "packages/sx05re/libretro/mame/config/ini/mame.ini:16, packages/sx05re/libretro/mame/config/MAME/MAME.opt:19,\
|
||||
\ packages/sx05re/emuelec/bin/emuelecRunEmu.sh:357-358, packages/sx05re/libretro/mame/scripts/mame.sh:21-23"
|
||||
- emulator: mame
|
||||
build: libretro
|
||||
kind: passes_path
|
||||
names: []
|
||||
search_dir: /storage/roms/bios/mame/cheat
|
||||
passes_to: mame.ini cheatpath
|
||||
fails_when_missing: false
|
||||
depends_on_option: mame_read_config = enabled
|
||||
source_ref: "packages/sx05re/libretro/mame/config/ini/mame.ini:18, packages/sx05re/libretro/mame/config/MAME/MAME.opt:19,\
|
||||
\ packages/sx05re/emuelec/bin/emuelecRunEmu.sh:357-358, packages/sx05re/libretro/mame/scripts/mame.sh:21-23"
|
||||
- emulator: mame
|
||||
build: libretro
|
||||
kind: passes_path
|
||||
names: []
|
||||
search_dir: /storage/roms/bios/mame/crosshair
|
||||
passes_to: mame.ini crosshairpath
|
||||
fails_when_missing: false
|
||||
depends_on_option: mame_read_config = enabled
|
||||
source_ref: "packages/sx05re/libretro/mame/config/ini/mame.ini:19, packages/sx05re/libretro/mame/config/MAME/MAME.opt:19,\
|
||||
\ packages/sx05re/emuelec/bin/emuelecRunEmu.sh:357-358, packages/sx05re/libretro/mame/scripts/mame.sh:21-23"
|
||||
- emulator: mame
|
||||
build: libretro
|
||||
kind: passes_path
|
||||
names: []
|
||||
search_dir: /storage/roms/bios/mame/plugins
|
||||
passes_to: mame.ini pluginspath
|
||||
fails_when_missing: false
|
||||
depends_on_option: mame_read_config = enabled
|
||||
source_ref: "packages/sx05re/libretro/mame/config/ini/mame.ini:20, packages/sx05re/libretro/mame/config/MAME/MAME.opt:19,\
|
||||
\ packages/sx05re/emuelec/bin/emuelecRunEmu.sh:357-358, packages/sx05re/libretro/mame/scripts/mame.sh:21-23"
|
||||
- emulator: pico8
|
||||
build: standalone
|
||||
kind: moves
|
||||
@@ -4384,6 +4294,11 @@ launchers:
|
||||
passes_to: "settings.ini [BIOS] SearchDirectory (-settings), [BIOS] PathNTSCU, PathNTSCJ,\
|
||||
\ PathPAL unset"
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: /emuelec/configs/duckstation/settings.ini
|
||||
source_ref: "packages/sx05re/emulators/duckstation/scripts/duckstation.sh:15"
|
||||
kept_if_present: true
|
||||
overrides: []
|
||||
source_ref: "packages/sx05re/emuelec/bin/emuelecRunEmu.sh:207-209, packages/sx05re/emulators/duckstation/config/settings.ini:6-9,\
|
||||
\ packages/sx05re/emulators/duckstation/package.mk:56, packages/sx05re/emulators/duckstation/scripts/duckstation.sh:40"
|
||||
- emulator: yabasanshiroSA
|
||||
@@ -4439,6 +4354,11 @@ launchers:
|
||||
search_dir: /storage/roms/bios
|
||||
passes_to: "Atari-ST-default.cfg [ROM] szTosImageFileName (--configfile)"
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: /tmp/hatari/.hatari-temp.cfg
|
||||
source_ref: "packages/sx05re/emulators/hatarisa/scripts/hatari.start:36"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "packages/sx05re/emuelec/bin/emuelecRunEmu.sh:172-174, packages/sx05re/emulators/hatarisa/config/conf/Atari-ST-default.cfg:200,\
|
||||
\ packages/sx05re/emulators/hatarisa/package.mk:39, packages/sx05re/emulators/hatarisa/scripts/hatari.start:36,\
|
||||
\ 66, 73"
|
||||
@@ -4450,6 +4370,12 @@ launchers:
|
||||
passes_to: advmame.rc dir_artwork
|
||||
fails_when_missing: false
|
||||
depends_on_option: system != arcade
|
||||
installs:
|
||||
path: /emuelec/configs/advmame/advmame.rc
|
||||
source_ref: "packages/sx05re/emulators/advancemame/bin/advmame.sh:17, 21"
|
||||
kept_if_present: false
|
||||
overrides:
|
||||
- "packages/sx05re/emulators/advancemame/bin/advmame.sh:27"
|
||||
source_ref: "packages/sx05re/emuelec/bin/emuelecRunEmu.sh:213-215, packages/sx05re/emulators/advancemame/config/advmame.rc_oga:1-11,\
|
||||
\ packages/sx05re/emulators/advancemame/config/advmame.rc_gf:1-11, packages/sx05re/emulators/advancemame/config/advmame.rc:4-14,\
|
||||
\ packages/sx05re/emulators/advancemame/package.mk:45-49, packages/sx05re/emulators/advancemame/bin/advmame.sh:26-27,\
|
||||
@@ -4463,6 +4389,12 @@ launchers:
|
||||
search_dir: /storage/roms/arcade/artwork
|
||||
passes_to: advmame.rc dir_artwork
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: /emuelec/configs/advmame/advmame.rc
|
||||
source_ref: "packages/sx05re/emulators/advancemame/bin/advmame.sh:17, 21"
|
||||
kept_if_present: false
|
||||
overrides:
|
||||
- "packages/sx05re/emulators/advancemame/bin/advmame.sh:27"
|
||||
source_ref: "packages/sx05re/emuelec/bin/emuelecRunEmu.sh:213-215, packages/sx05re/emulators/advancemame/config/advmame.rc_oga:1-11,\
|
||||
\ packages/sx05re/emulators/advancemame/config/advmame.rc_gf:1-11, packages/sx05re/emulators/advancemame/config/advmame.rc:4-14,\
|
||||
\ packages/sx05re/emulators/advancemame/package.mk:45-49, packages/sx05re/emulators/advancemame/bin/advmame.sh:26-27,\
|
||||
@@ -4475,6 +4407,12 @@ launchers:
|
||||
passes_to: advmame.rc dir_diff
|
||||
fails_when_missing: false
|
||||
depends_on_option: system != arcade
|
||||
installs:
|
||||
path: /emuelec/configs/advmame/advmame.rc
|
||||
source_ref: "packages/sx05re/emulators/advancemame/bin/advmame.sh:17, 21"
|
||||
kept_if_present: false
|
||||
overrides:
|
||||
- "packages/sx05re/emulators/advancemame/bin/advmame.sh:27"
|
||||
source_ref: "packages/sx05re/emuelec/bin/emuelecRunEmu.sh:213-215, packages/sx05re/emulators/advancemame/config/advmame.rc_oga:1-11,\
|
||||
\ packages/sx05re/emulators/advancemame/config/advmame.rc_gf:1-11, packages/sx05re/emulators/advancemame/config/advmame.rc:4-14,\
|
||||
\ packages/sx05re/emulators/advancemame/package.mk:45-49, packages/sx05re/emulators/advancemame/bin/advmame.sh:26-27,\
|
||||
@@ -4488,6 +4426,12 @@ launchers:
|
||||
search_dir: /storage/roms/arcade/diff
|
||||
passes_to: advmame.rc dir_diff
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: /emuelec/configs/advmame/advmame.rc
|
||||
source_ref: "packages/sx05re/emulators/advancemame/bin/advmame.sh:17, 21"
|
||||
kept_if_present: false
|
||||
overrides:
|
||||
- "packages/sx05re/emulators/advancemame/bin/advmame.sh:27"
|
||||
source_ref: "packages/sx05re/emuelec/bin/emuelecRunEmu.sh:213-215, packages/sx05re/emulators/advancemame/config/advmame.rc_oga:1-11,\
|
||||
\ packages/sx05re/emulators/advancemame/config/advmame.rc_gf:1-11, packages/sx05re/emulators/advancemame/config/advmame.rc:4-14,\
|
||||
\ packages/sx05re/emulators/advancemame/package.mk:45-49, packages/sx05re/emulators/advancemame/bin/advmame.sh:26-27,\
|
||||
@@ -4500,6 +4444,12 @@ launchers:
|
||||
passes_to: advmame.rc dir_hi
|
||||
fails_when_missing: false
|
||||
depends_on_option: system != arcade
|
||||
installs:
|
||||
path: /emuelec/configs/advmame/advmame.rc
|
||||
source_ref: "packages/sx05re/emulators/advancemame/bin/advmame.sh:17, 21"
|
||||
kept_if_present: false
|
||||
overrides:
|
||||
- "packages/sx05re/emulators/advancemame/bin/advmame.sh:27"
|
||||
source_ref: "packages/sx05re/emuelec/bin/emuelecRunEmu.sh:213-215, packages/sx05re/emulators/advancemame/config/advmame.rc_oga:1-11,\
|
||||
\ packages/sx05re/emulators/advancemame/config/advmame.rc_gf:1-11, packages/sx05re/emulators/advancemame/config/advmame.rc:4-14,\
|
||||
\ packages/sx05re/emulators/advancemame/package.mk:45-49, packages/sx05re/emulators/advancemame/bin/advmame.sh:26-27,\
|
||||
@@ -4513,6 +4463,12 @@ launchers:
|
||||
search_dir: /storage/roms/arcade/hi
|
||||
passes_to: advmame.rc dir_hi
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: /emuelec/configs/advmame/advmame.rc
|
||||
source_ref: "packages/sx05re/emulators/advancemame/bin/advmame.sh:17, 21"
|
||||
kept_if_present: false
|
||||
overrides:
|
||||
- "packages/sx05re/emulators/advancemame/bin/advmame.sh:27"
|
||||
source_ref: "packages/sx05re/emuelec/bin/emuelecRunEmu.sh:213-215, packages/sx05re/emulators/advancemame/config/advmame.rc_oga:1-11,\
|
||||
\ packages/sx05re/emulators/advancemame/config/advmame.rc_gf:1-11, packages/sx05re/emulators/advancemame/config/advmame.rc:4-14,\
|
||||
\ packages/sx05re/emulators/advancemame/package.mk:45-49, packages/sx05re/emulators/advancemame/bin/advmame.sh:26-27,\
|
||||
@@ -4525,6 +4481,12 @@ launchers:
|
||||
passes_to: advmame.rc dir_image
|
||||
fails_when_missing: false
|
||||
depends_on_option: system != arcade
|
||||
installs:
|
||||
path: /emuelec/configs/advmame/advmame.rc
|
||||
source_ref: "packages/sx05re/emulators/advancemame/bin/advmame.sh:17, 21"
|
||||
kept_if_present: false
|
||||
overrides:
|
||||
- "packages/sx05re/emulators/advancemame/bin/advmame.sh:27"
|
||||
source_ref: "packages/sx05re/emuelec/bin/emuelecRunEmu.sh:213-215, packages/sx05re/emulators/advancemame/config/advmame.rc_oga:1-11,\
|
||||
\ packages/sx05re/emulators/advancemame/config/advmame.rc_gf:1-11, packages/sx05re/emulators/advancemame/config/advmame.rc:4-14,\
|
||||
\ packages/sx05re/emulators/advancemame/package.mk:45-49, packages/sx05re/emulators/advancemame/bin/advmame.sh:26-27,\
|
||||
@@ -4538,6 +4500,12 @@ launchers:
|
||||
search_dir: /storage/roms/arcade/image
|
||||
passes_to: advmame.rc dir_image
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: /emuelec/configs/advmame/advmame.rc
|
||||
source_ref: "packages/sx05re/emulators/advancemame/bin/advmame.sh:17, 21"
|
||||
kept_if_present: false
|
||||
overrides:
|
||||
- "packages/sx05re/emulators/advancemame/bin/advmame.sh:27"
|
||||
source_ref: "packages/sx05re/emuelec/bin/emuelecRunEmu.sh:213-215, packages/sx05re/emulators/advancemame/config/advmame.rc_oga:1-11,\
|
||||
\ packages/sx05re/emulators/advancemame/config/advmame.rc_gf:1-11, packages/sx05re/emulators/advancemame/config/advmame.rc:4-14,\
|
||||
\ packages/sx05re/emulators/advancemame/package.mk:45-49, packages/sx05re/emulators/advancemame/bin/advmame.sh:26-27,\
|
||||
@@ -4550,6 +4518,12 @@ launchers:
|
||||
passes_to: advmame.rc dir_inp
|
||||
fails_when_missing: false
|
||||
depends_on_option: system != arcade
|
||||
installs:
|
||||
path: /emuelec/configs/advmame/advmame.rc
|
||||
source_ref: "packages/sx05re/emulators/advancemame/bin/advmame.sh:17, 21"
|
||||
kept_if_present: false
|
||||
overrides:
|
||||
- "packages/sx05re/emulators/advancemame/bin/advmame.sh:27"
|
||||
source_ref: "packages/sx05re/emuelec/bin/emuelecRunEmu.sh:213-215, packages/sx05re/emulators/advancemame/config/advmame.rc_oga:1-11,\
|
||||
\ packages/sx05re/emulators/advancemame/config/advmame.rc_gf:1-11, packages/sx05re/emulators/advancemame/config/advmame.rc:4-14,\
|
||||
\ packages/sx05re/emulators/advancemame/package.mk:45-49, packages/sx05re/emulators/advancemame/bin/advmame.sh:26-27,\
|
||||
@@ -4563,6 +4537,12 @@ launchers:
|
||||
search_dir: /storage/roms/arcade/inp
|
||||
passes_to: advmame.rc dir_inp
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: /emuelec/configs/advmame/advmame.rc
|
||||
source_ref: "packages/sx05re/emulators/advancemame/bin/advmame.sh:17, 21"
|
||||
kept_if_present: false
|
||||
overrides:
|
||||
- "packages/sx05re/emulators/advancemame/bin/advmame.sh:27"
|
||||
source_ref: "packages/sx05re/emuelec/bin/emuelecRunEmu.sh:213-215, packages/sx05re/emulators/advancemame/config/advmame.rc_oga:1-11,\
|
||||
\ packages/sx05re/emulators/advancemame/config/advmame.rc_gf:1-11, packages/sx05re/emulators/advancemame/config/advmame.rc:4-14,\
|
||||
\ packages/sx05re/emulators/advancemame/package.mk:45-49, packages/sx05re/emulators/advancemame/bin/advmame.sh:26-27,\
|
||||
@@ -4575,6 +4555,12 @@ launchers:
|
||||
passes_to: advmame.rc dir_memcard
|
||||
fails_when_missing: false
|
||||
depends_on_option: system != arcade
|
||||
installs:
|
||||
path: /emuelec/configs/advmame/advmame.rc
|
||||
source_ref: "packages/sx05re/emulators/advancemame/bin/advmame.sh:17, 21"
|
||||
kept_if_present: false
|
||||
overrides:
|
||||
- "packages/sx05re/emulators/advancemame/bin/advmame.sh:27"
|
||||
source_ref: "packages/sx05re/emuelec/bin/emuelecRunEmu.sh:213-215, packages/sx05re/emulators/advancemame/config/advmame.rc_oga:1-11,\
|
||||
\ packages/sx05re/emulators/advancemame/config/advmame.rc_gf:1-11, packages/sx05re/emulators/advancemame/config/advmame.rc:4-14,\
|
||||
\ packages/sx05re/emulators/advancemame/package.mk:45-49, packages/sx05re/emulators/advancemame/bin/advmame.sh:26-27,\
|
||||
@@ -4588,6 +4574,12 @@ launchers:
|
||||
search_dir: /storage/roms/arcade/memcard
|
||||
passes_to: advmame.rc dir_memcard
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: /emuelec/configs/advmame/advmame.rc
|
||||
source_ref: "packages/sx05re/emulators/advancemame/bin/advmame.sh:17, 21"
|
||||
kept_if_present: false
|
||||
overrides:
|
||||
- "packages/sx05re/emulators/advancemame/bin/advmame.sh:27"
|
||||
source_ref: "packages/sx05re/emuelec/bin/emuelecRunEmu.sh:213-215, packages/sx05re/emulators/advancemame/config/advmame.rc_oga:1-11,\
|
||||
\ packages/sx05re/emulators/advancemame/config/advmame.rc_gf:1-11, packages/sx05re/emulators/advancemame/config/advmame.rc:4-14,\
|
||||
\ packages/sx05re/emulators/advancemame/package.mk:45-49, packages/sx05re/emulators/advancemame/bin/advmame.sh:26-27,\
|
||||
@@ -4600,6 +4592,12 @@ launchers:
|
||||
passes_to: advmame.rc dir_nvram
|
||||
fails_when_missing: false
|
||||
depends_on_option: system != arcade
|
||||
installs:
|
||||
path: /emuelec/configs/advmame/advmame.rc
|
||||
source_ref: "packages/sx05re/emulators/advancemame/bin/advmame.sh:17, 21"
|
||||
kept_if_present: false
|
||||
overrides:
|
||||
- "packages/sx05re/emulators/advancemame/bin/advmame.sh:27"
|
||||
source_ref: "packages/sx05re/emuelec/bin/emuelecRunEmu.sh:213-215, packages/sx05re/emulators/advancemame/config/advmame.rc_oga:1-11,\
|
||||
\ packages/sx05re/emulators/advancemame/config/advmame.rc_gf:1-11, packages/sx05re/emulators/advancemame/config/advmame.rc:4-14,\
|
||||
\ packages/sx05re/emulators/advancemame/package.mk:45-49, packages/sx05re/emulators/advancemame/bin/advmame.sh:26-27,\
|
||||
@@ -4613,6 +4611,12 @@ launchers:
|
||||
search_dir: /storage/roms/arcade/nvram
|
||||
passes_to: advmame.rc dir_nvram
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: /emuelec/configs/advmame/advmame.rc
|
||||
source_ref: "packages/sx05re/emulators/advancemame/bin/advmame.sh:17, 21"
|
||||
kept_if_present: false
|
||||
overrides:
|
||||
- "packages/sx05re/emulators/advancemame/bin/advmame.sh:27"
|
||||
source_ref: "packages/sx05re/emuelec/bin/emuelecRunEmu.sh:213-215, packages/sx05re/emulators/advancemame/config/advmame.rc_oga:1-11,\
|
||||
\ packages/sx05re/emulators/advancemame/config/advmame.rc_gf:1-11, packages/sx05re/emulators/advancemame/config/advmame.rc:4-14,\
|
||||
\ packages/sx05re/emulators/advancemame/package.mk:45-49, packages/sx05re/emulators/advancemame/bin/advmame.sh:26-27,\
|
||||
@@ -4625,6 +4629,12 @@ launchers:
|
||||
passes_to: advmame.rc dir_rom
|
||||
fails_when_missing: false
|
||||
depends_on_option: system != arcade
|
||||
installs:
|
||||
path: /emuelec/configs/advmame/advmame.rc
|
||||
source_ref: "packages/sx05re/emulators/advancemame/bin/advmame.sh:17, 21"
|
||||
kept_if_present: false
|
||||
overrides:
|
||||
- "packages/sx05re/emulators/advancemame/bin/advmame.sh:27"
|
||||
source_ref: "packages/sx05re/emuelec/bin/emuelecRunEmu.sh:213-215, packages/sx05re/emulators/advancemame/config/advmame.rc_oga:1-11,\
|
||||
\ packages/sx05re/emulators/advancemame/config/advmame.rc_gf:1-11, packages/sx05re/emulators/advancemame/config/advmame.rc:4-14,\
|
||||
\ packages/sx05re/emulators/advancemame/package.mk:45-49, packages/sx05re/emulators/advancemame/bin/advmame.sh:26-27,\
|
||||
@@ -4638,6 +4648,12 @@ launchers:
|
||||
search_dir: /storage/roms/arcade
|
||||
passes_to: advmame.rc dir_rom
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: /emuelec/configs/advmame/advmame.rc
|
||||
source_ref: "packages/sx05re/emulators/advancemame/bin/advmame.sh:17, 21"
|
||||
kept_if_present: false
|
||||
overrides:
|
||||
- "packages/sx05re/emulators/advancemame/bin/advmame.sh:27"
|
||||
source_ref: "packages/sx05re/emuelec/bin/emuelecRunEmu.sh:213-215, packages/sx05re/emulators/advancemame/config/advmame.rc_oga:1-11,\
|
||||
\ packages/sx05re/emulators/advancemame/config/advmame.rc_gf:1-11, packages/sx05re/emulators/advancemame/config/advmame.rc:4-14,\
|
||||
\ packages/sx05re/emulators/advancemame/package.mk:45-49, packages/sx05re/emulators/advancemame/bin/advmame.sh:26-27,\
|
||||
@@ -4649,6 +4665,12 @@ launchers:
|
||||
search_dir: /storage/roms/bios/advmame/samples
|
||||
passes_to: advmame.rc dir_sample
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: /emuelec/configs/advmame/advmame.rc
|
||||
source_ref: "packages/sx05re/emulators/advancemame/bin/advmame.sh:17, 21"
|
||||
kept_if_present: false
|
||||
overrides:
|
||||
- "packages/sx05re/emulators/advancemame/bin/advmame.sh:27"
|
||||
source_ref: "packages/sx05re/emuelec/bin/emuelecRunEmu.sh:213-215, packages/sx05re/emulators/advancemame/config/advmame.rc_oga:1-11,\
|
||||
\ packages/sx05re/emulators/advancemame/config/advmame.rc_gf:1-11, packages/sx05re/emulators/advancemame/config/advmame.rc:4-14,\
|
||||
\ packages/sx05re/emulators/advancemame/package.mk:45-49, packages/sx05re/emulators/advancemame/bin/advmame.sh:80"
|
||||
@@ -4660,6 +4682,12 @@ launchers:
|
||||
passes_to: advmame.rc dir_snap
|
||||
fails_when_missing: false
|
||||
depends_on_option: system != arcade
|
||||
installs:
|
||||
path: /emuelec/configs/advmame/advmame.rc
|
||||
source_ref: "packages/sx05re/emulators/advancemame/bin/advmame.sh:17, 21"
|
||||
kept_if_present: false
|
||||
overrides:
|
||||
- "packages/sx05re/emulators/advancemame/bin/advmame.sh:27"
|
||||
source_ref: "packages/sx05re/emuelec/bin/emuelecRunEmu.sh:213-215, packages/sx05re/emulators/advancemame/config/advmame.rc_oga:1-11,\
|
||||
\ packages/sx05re/emulators/advancemame/config/advmame.rc_gf:1-11, packages/sx05re/emulators/advancemame/config/advmame.rc:4-14,\
|
||||
\ packages/sx05re/emulators/advancemame/package.mk:45-49, packages/sx05re/emulators/advancemame/bin/advmame.sh:26-27,\
|
||||
@@ -4673,6 +4701,12 @@ launchers:
|
||||
search_dir: /storage/roms/arcade/snap
|
||||
passes_to: advmame.rc dir_snap
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: /emuelec/configs/advmame/advmame.rc
|
||||
source_ref: "packages/sx05re/emulators/advancemame/bin/advmame.sh:17, 21"
|
||||
kept_if_present: false
|
||||
overrides:
|
||||
- "packages/sx05re/emulators/advancemame/bin/advmame.sh:27"
|
||||
source_ref: "packages/sx05re/emuelec/bin/emuelecRunEmu.sh:213-215, packages/sx05re/emulators/advancemame/config/advmame.rc_oga:1-11,\
|
||||
\ packages/sx05re/emulators/advancemame/config/advmame.rc_gf:1-11, packages/sx05re/emulators/advancemame/config/advmame.rc:4-14,\
|
||||
\ packages/sx05re/emulators/advancemame/package.mk:45-49, packages/sx05re/emulators/advancemame/bin/advmame.sh:26-27,\
|
||||
@@ -4685,6 +4719,12 @@ launchers:
|
||||
passes_to: advmame.rc dir_sta
|
||||
fails_when_missing: false
|
||||
depends_on_option: system != arcade
|
||||
installs:
|
||||
path: /emuelec/configs/advmame/advmame.rc
|
||||
source_ref: "packages/sx05re/emulators/advancemame/bin/advmame.sh:17, 21"
|
||||
kept_if_present: false
|
||||
overrides:
|
||||
- "packages/sx05re/emulators/advancemame/bin/advmame.sh:27"
|
||||
source_ref: "packages/sx05re/emuelec/bin/emuelecRunEmu.sh:213-215, packages/sx05re/emulators/advancemame/config/advmame.rc_oga:1-11,\
|
||||
\ packages/sx05re/emulators/advancemame/config/advmame.rc_gf:1-11, packages/sx05re/emulators/advancemame/config/advmame.rc:4-14,\
|
||||
\ packages/sx05re/emulators/advancemame/package.mk:45-49, packages/sx05re/emulators/advancemame/bin/advmame.sh:26-27,\
|
||||
@@ -4698,6 +4738,12 @@ launchers:
|
||||
search_dir: /storage/roms/arcade/nvram
|
||||
passes_to: advmame.rc dir_sta
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: /emuelec/configs/advmame/advmame.rc
|
||||
source_ref: "packages/sx05re/emulators/advancemame/bin/advmame.sh:17, 21"
|
||||
kept_if_present: false
|
||||
overrides:
|
||||
- "packages/sx05re/emulators/advancemame/bin/advmame.sh:27"
|
||||
source_ref: "packages/sx05re/emuelec/bin/emuelecRunEmu.sh:213-215, packages/sx05re/emulators/advancemame/config/advmame.rc_oga:1-11,\
|
||||
\ packages/sx05re/emulators/advancemame/config/advmame.rc_gf:1-11, packages/sx05re/emulators/advancemame/config/advmame.rc:4-14,\
|
||||
\ packages/sx05re/emulators/advancemame/package.mk:45-49, packages/sx05re/emulators/advancemame/bin/advmame.sh:26-27,\
|
||||
@@ -4720,7 +4766,8 @@ launchers:
|
||||
search_dir: /storage/.config/scummvm
|
||||
passes_to: /storage/roms/bios/scummvm.ini
|
||||
fails_when_missing: false
|
||||
depends_on_option: scummvm.start add
|
||||
depends_on_option: "scummvm.start add, an action no launch runs (emuelecRunEmu.sh\
|
||||
\ passes libretro, sa)"
|
||||
source_ref: "packages/sx05re/emulators/scummvmsa/bin/scummvm.start:9, 49-51, 54"
|
||||
- emulator: dolphin
|
||||
build: standalone
|
||||
|
||||
+230
-82
@@ -16763,6 +16763,11 @@ launchers:
|
||||
search_dir: $roms_path/doom
|
||||
passes_to: "gzdoom.ini [IWADSearch.Directories] Path"
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $gzdoom_config
|
||||
source_ref: "gzdoom/component_prepare.sh:23, 26-30"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "gzdoom/rd_assets/rd_config/gzdoom.ini:9, gzdoom/component_prepare.sh:23,\
|
||||
\ 27-28"
|
||||
- emulator: gzdoom
|
||||
@@ -16772,6 +16777,11 @@ launchers:
|
||||
search_dir: $roms_path/doom
|
||||
passes_to: "gzdoom.ini [FileSearch.Directories] Path"
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $gzdoom_config
|
||||
source_ref: "gzdoom/component_prepare.sh:23, 26-30"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "gzdoom/rd_assets/rd_config/gzdoom.ini:18, gzdoom/component_prepare.sh:23,\
|
||||
\ 27-28"
|
||||
- emulator: gzdoom
|
||||
@@ -16781,6 +16791,11 @@ launchers:
|
||||
search_dir: $bios_path/gzdoom
|
||||
passes_to: "gzdoom.ini [FileSearch.Directories] Path"
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $gzdoom_config
|
||||
source_ref: "gzdoom/component_prepare.sh:23, 26-30"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "gzdoom/rd_assets/rd_config/gzdoom.ini:19, gzdoom/component_prepare.sh:23,\
|
||||
\ 28"
|
||||
- emulator: gzdoom
|
||||
@@ -16790,6 +16805,11 @@ launchers:
|
||||
search_dir: $roms_path/bios/gzdoom
|
||||
passes_to: "gzdoom.ini [SoundfontSearch.Directories] Path"
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $gzdoom_config
|
||||
source_ref: "gzdoom/component_prepare.sh:23, 26-30"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "gzdoom/rd_assets/rd_config/gzdoom.ini:31, gzdoom/component_prepare.sh:23,\
|
||||
\ 27-28"
|
||||
- emulator: mame
|
||||
@@ -17023,6 +17043,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: xroar.conf rompath
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:290, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17033,6 +17058,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist dragon
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:291, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17048,6 +17078,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist d64_1
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:292, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17062,6 +17097,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist d64_2
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:293, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17075,6 +17115,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist d32
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:294, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17087,6 +17132,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist d200e_1
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:295, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17099,6 +17149,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist d200e_2
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:296, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17115,6 +17170,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist dragon64
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:297, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17129,6 +17189,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist dragon64_alt
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:298, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17143,6 +17208,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist dragon32
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:299, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17162,6 +17232,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist dragon200e
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:300, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17179,6 +17254,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist dragon200e_alt
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:301, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17190,6 +17270,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist dragon200e_charset
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:302, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17204,6 +17289,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist dragonpro_boot
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:303, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17222,6 +17312,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist dragonpro_basic
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:304, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17236,6 +17331,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist coco
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:305, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17249,89 +17349,12 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist coco_ext
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:306, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
kind: names_searched
|
||||
slot: coco1
|
||||
names:
|
||||
- bas10
|
||||
- bas13
|
||||
- bas12
|
||||
- "Color Basic v1.2 (1982)(Tandy)"
|
||||
- bas11
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist coco1
|
||||
fails_when_missing: false
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:307, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
kind: names_searched
|
||||
slot: coco1e
|
||||
names:
|
||||
- bas11
|
||||
- bas13
|
||||
- bas12
|
||||
- "Color Basic v1.2 (1982)(Tandy)"
|
||||
- bas10
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist coco1e
|
||||
fails_when_missing: false
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:308, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
kind: names_searched
|
||||
slot: coco1e_ext
|
||||
names:
|
||||
- extbas10
|
||||
- extbas11
|
||||
- coco
|
||||
- COCO
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist coco1e_ext
|
||||
fails_when_missing: false
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:309, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
kind: names_searched
|
||||
slot: coco2
|
||||
names:
|
||||
- bas12
|
||||
- bas13
|
||||
- "Color Basic v1.2 (1982)(Tandy)"
|
||||
- bas11
|
||||
- bas10
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist coco2
|
||||
fails_when_missing: false
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:310, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
kind: names_searched
|
||||
slot: coco2_ext
|
||||
names:
|
||||
- extbas11
|
||||
- extbas10
|
||||
- coco
|
||||
- COCO
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist coco2_ext
|
||||
fails_when_missing: false
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:311, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
kind: names_searched
|
||||
slot: coco2b
|
||||
names:
|
||||
- bas13
|
||||
- bas12
|
||||
- "Color Basic v1.2 (1982)(Tandy)"
|
||||
- bas11
|
||||
- bas10
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist coco2b
|
||||
fails_when_missing: false
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:312, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
kind: names_searched
|
||||
@@ -17342,6 +17365,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist deluxecoco
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:313, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17352,6 +17380,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist deluxecoco1
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:314, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17362,6 +17395,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist deluxecoco2
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:315, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17373,6 +17411,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist deluxecoco3
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:316, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17384,6 +17427,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist mx1600
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:317, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17394,6 +17442,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist mx1600ext
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:318, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17404,6 +17457,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist coco3
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:319, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17414,6 +17472,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist coco3p
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:320, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17425,6 +17488,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist glenside_ide
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:321, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17435,6 +17503,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist mc10
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:322, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17445,6 +17518,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist alice
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:323, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17460,6 +17538,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist dragondos
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:324, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17473,6 +17556,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist dosplus
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:325, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17486,6 +17574,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist superdos
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:326, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17498,6 +17591,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist cumana
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:327, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17524,6 +17622,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist dragondos_compat
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:328, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17535,6 +17638,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist rsdos
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:329, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17550,6 +17658,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist delta
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:330, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17560,6 +17673,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist rsdos_becker
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:331, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17571,6 +17689,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist mcx128
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:332, xroar/component_prepare.sh:13-15"
|
||||
- emulator: xroar
|
||||
build: standalone
|
||||
@@ -17582,6 +17705,11 @@ launchers:
|
||||
search_dir: "$roms_path/coco:$roms_path/dragon32:$roms_path/tanodragon:$bios_path"
|
||||
passes_to: romlist mcx128_azerty
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $xroar_config
|
||||
source_ref: "xroar/component_prepare.sh:13-15"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "xroar/rd_assets/rd_config/xroar.conf:333, xroar/component_prepare.sh:13-15"
|
||||
- emulator: retroarch
|
||||
build: libretro
|
||||
@@ -17590,6 +17718,11 @@ launchers:
|
||||
- scph5500.bin
|
||||
passes_to: core option duckstation_BIOS.PathNTSCJ
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $retroarch_config_core_options
|
||||
source_ref: "retroarch/component_prepare.sh:24"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "retroarch/rd_assets/rd_config/retroarch-core-options.cfg:165, retroarch/component_prepare.sh:24"
|
||||
- emulator: retroarch
|
||||
build: libretro
|
||||
@@ -17598,6 +17731,11 @@ launchers:
|
||||
- scph5501.bin
|
||||
passes_to: core option duckstation_BIOS.PathNTSCU
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $retroarch_config_core_options
|
||||
source_ref: "retroarch/component_prepare.sh:24"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "retroarch/rd_assets/rd_config/retroarch-core-options.cfg:166, retroarch/component_prepare.sh:24"
|
||||
- emulator: retroarch
|
||||
build: libretro
|
||||
@@ -17606,6 +17744,11 @@ launchers:
|
||||
- scph5502.bin
|
||||
passes_to: core option duckstation_BIOS.PathPAL
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $retroarch_config_core_options
|
||||
source_ref: "retroarch/component_prepare.sh:24"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "retroarch/rd_assets/rd_config/retroarch-core-options.cfg:167, retroarch/component_prepare.sh:24"
|
||||
- emulator: retroarch
|
||||
build: libretro
|
||||
@@ -17614,4 +17757,9 @@ launchers:
|
||||
- scph10000.bin
|
||||
passes_to: core option pcsx2_bios
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: $retroarch_config_core_options
|
||||
source_ref: "retroarch/component_prepare.sh:24"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "retroarch/rd_assets/rd_config/retroarch-core-options.cfg:515, retroarch/component_prepare.sh:24"
|
||||
+133
-19
@@ -570,6 +570,11 @@ launchers:
|
||||
passes_to: retroarch.cfg system_directory = "~/roms/bios", systemfiles_in_content_dir
|
||||
= "false"
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: /storage/.config/retroarch/retroarch.cfg
|
||||
source_ref: "projects/ROCKNIX/packages/sysutils/systemd/scripts/userconfig-setup:13"
|
||||
kept_if_present: true
|
||||
overrides: []
|
||||
source_ref: "projects/ROCKNIX/packages/emulators/libretro/retroarch/sources/AMD64/retroarch.cfg:3395-3396,\
|
||||
\ projects/ROCKNIX/packages/emulators/libretro/retroarch/sources/H700/retroarch.cfg:711-712,\
|
||||
\ projects/ROCKNIX/packages/emulators/libretro/retroarch/sources/RK3326/retroarch.cfg:716-717,\
|
||||
@@ -594,7 +599,13 @@ launchers:
|
||||
search_dir: /storage/roms/bios
|
||||
passes_to: "AmigaA1200-default.uae kickstart_rom_file (amiberry -f)"
|
||||
fails_when_missing: false
|
||||
depends_on_option: game name matches AGA|CD32
|
||||
depends_on_option: "game name matches AGA|CD32, content not booted with --autoload,\
|
||||
\ a WHDLoad .lha or .zip (start_amiberry.sh:90, 129)"
|
||||
installs:
|
||||
path: /tmp/emulation/amiberry/.amiberry_conf.uae
|
||||
source_ref: "projects/ROCKNIX/packages/emulators/standalone/amiberry/scripts/start_amiberry.sh:64"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "projects/ROCKNIX/packages/emulators/standalone/amiberry/scripts/start_amiberry.sh:17,\
|
||||
\ 62-69, projects/ROCKNIX/packages/emulators/standalone/amiberry/config/conf/AmigaA1200-default.uae:114"
|
||||
- emulator: amiberry
|
||||
@@ -606,7 +617,13 @@ launchers:
|
||||
search_dir: /storage/roms/bios
|
||||
passes_to: "AmigaA500-default.uae kickstart_rom_file (amiberry -f)"
|
||||
fails_when_missing: false
|
||||
depends_on_option: game name does not match AGA|CD32
|
||||
depends_on_option: "game name does not match AGA|CD32, content not booted with --autoload,\
|
||||
\ a WHDLoad .lha or .zip (start_amiberry.sh:90, 129)"
|
||||
installs:
|
||||
path: /tmp/emulation/amiberry/.amiberry_conf.uae
|
||||
source_ref: "projects/ROCKNIX/packages/emulators/standalone/amiberry/scripts/start_amiberry.sh:67"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "projects/ROCKNIX/packages/emulators/standalone/amiberry/scripts/start_amiberry.sh:17,\
|
||||
\ 62-69, projects/ROCKNIX/packages/emulators/standalone/amiberry/config/conf/AmigaA500-default.uae:114"
|
||||
- emulator: amiberry
|
||||
@@ -645,6 +662,11 @@ launchers:
|
||||
search_dir: /storage/roms/bios
|
||||
passes_to: "Atari-ST-default.cfg [ROM] szTosImageFileName (--configfile)"
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: /tmp/hatari/.hatari-temp.cfg
|
||||
source_ref: "projects/ROCKNIX/packages/emulators/standalone/hatarisa/scripts/start_hatarisa.sh:35"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "projects/ROCKNIX/packages/emulators/standalone/hatarisa/config/conf/Atari-ST-default.cfg:200,\
|
||||
\ projects/ROCKNIX/packages/emulators/standalone/hatarisa/scripts/start_hatarisa.sh:35,\
|
||||
\ 65"
|
||||
@@ -652,13 +674,20 @@ launchers:
|
||||
build: standalone
|
||||
kind: fixed_name
|
||||
names: []
|
||||
passes_to: melonDS.ini BIOS9Path, BIOS7Path, FirmwarePath, DSiBIOS9Path, DSiBIOS7Path,
|
||||
DSiFirmwarePath, DSiNANDPath left empty
|
||||
passes_to: melonDS.ini BIOS9Path, BIOS7Path, FirmwarePath, DSiNANDPath left empty
|
||||
fails_when_missing: false
|
||||
depends_on_option: direct_boot = 0 sets ExternalBIOSEnable=1, otherwise 0
|
||||
device: AMD64
|
||||
source_ref: "projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/AMD64/melonDS.ini:84-90,\
|
||||
\ projects/ROCKNIX/packages/emulators/standalone/melonds-sa/package.mk:60, projects/ROCKNIX/packages/emulators/standalone/melonds-sa/scripts/start_melonds.sh:41,\
|
||||
installs:
|
||||
path: /storage/.config/melonDS/melonDS.ini
|
||||
source_ref: "projects/ROCKNIX/packages/sysutils/systemd/scripts/userconfig-setup:13,\
|
||||
\ projects/ROCKNIX/packages/emulators/standalone/melonds-sa/scripts/start_melonds.sh:20,\
|
||||
\ 34"
|
||||
kept_if_present: true
|
||||
overrides: []
|
||||
source_ref: "projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/AMD64/melonDS.ini:84-86,\
|
||||
\ 90, projects/ROCKNIX/packages/emulators/standalone/melonds-sa/package.mk:60,\
|
||||
\ projects/ROCKNIX/packages/emulators/standalone/melonds-sa/scripts/start_melonds.sh:41,\
|
||||
\ 71-73"
|
||||
- emulator: melonds
|
||||
build: standalone
|
||||
@@ -667,24 +696,28 @@ launchers:
|
||||
- bios9.bin
|
||||
- bios7.bin
|
||||
- firmware.bin
|
||||
- dsi_bios9.bin
|
||||
- dsi_bios7.bin
|
||||
- dsi_firmware.bin
|
||||
- dsi_nand.bin
|
||||
search_dir: /storage/roms/bios
|
||||
passes_to: melonDS.ini BIOS9Path, BIOS7Path, FirmwarePath, DSiBIOS9Path, DSiBIOS7Path,
|
||||
DSiFirmwarePath, DSiNANDPath
|
||||
passes_to: melonDS.ini BIOS9Path, BIOS7Path, FirmwarePath, DSiNANDPath
|
||||
fails_when_missing: false
|
||||
depends_on_option: direct_boot = 0 sets ExternalBIOSEnable=1, otherwise 0
|
||||
device: RK3399, RK3566, RK3576, RK3588, S922X, SDM845, SM4450, SM6115, SM8250, SM8550,
|
||||
SM8650, SM8750
|
||||
source_ref: "projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/InputPlumber/melonDS.ini:94-100,\
|
||||
\ projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/RK3399/melonDS.ini:93-99,\
|
||||
\ projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/RK3566/melonDS.ini:93-99,\
|
||||
\ projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/RK3588/melonDS.ini:93-99,\
|
||||
\ projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/S922X/melonDS.ini:95-101,\
|
||||
\ projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/SM4450/melonDS.ini:90-96,\
|
||||
\ projects/ROCKNIX/packages/emulators/standalone/melonds-sa/package.mk:60, projects/ROCKNIX/packages/emulators/standalone/melonds-sa/scripts/start_melonds.sh:41,\
|
||||
installs:
|
||||
path: /storage/.config/melonDS/melonDS.ini
|
||||
source_ref: "projects/ROCKNIX/packages/sysutils/systemd/scripts/userconfig-setup:13,\
|
||||
\ projects/ROCKNIX/packages/emulators/standalone/melonds-sa/scripts/start_melonds.sh:20,\
|
||||
\ 34"
|
||||
kept_if_present: true
|
||||
overrides: []
|
||||
source_ref: "projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/InputPlumber/melonDS.ini:94-96,\
|
||||
\ 100, projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/RK3399/melonDS.ini:93-95,\
|
||||
\ 99, projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/RK3566/melonDS.ini:93-95,\
|
||||
\ 99, projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/RK3588/melonDS.ini:93-95,\
|
||||
\ 99, projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/S922X/melonDS.ini:95-97,\
|
||||
\ 101, projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/SM4450/melonDS.ini:90-92,\
|
||||
\ 96, projects/ROCKNIX/packages/emulators/standalone/melonds-sa/package.mk:60,\
|
||||
\ projects/ROCKNIX/packages/emulators/standalone/melonds-sa/scripts/start_melonds.sh:41,\
|
||||
\ 71-73"
|
||||
- emulator: dsperate
|
||||
build: standalone
|
||||
@@ -701,6 +734,12 @@ launchers:
|
||||
passes_to: "dsperate.ini [paths] bios9, bios7, firmware, bios9i, bios7i, dsi_firmware,\
|
||||
\ dsi_nand (--config)"
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: /storage/.config/dsperate/dsperate.ini
|
||||
source_ref: "projects/ROCKNIX/packages/sysutils/systemd/scripts/userconfig-setup:13,\
|
||||
\ projects/ROCKNIX/packages/emulators/standalone/dsperate-sa/scripts/start_dsperate.sh:19"
|
||||
kept_if_present: true
|
||||
overrides: []
|
||||
source_ref: "projects/ROCKNIX/packages/emulators/standalone/dsperate-sa/config/H700/dsperate.ini:11-17,\
|
||||
\ projects/ROCKNIX/packages/emulators/standalone/dsperate-sa/config/InputPlumber/dsperate.ini:11-17,\
|
||||
\ projects/ROCKNIX/packages/emulators/standalone/dsperate-sa/config/RK3326/dsperate.ini:11-17,\
|
||||
@@ -716,7 +755,13 @@ launchers:
|
||||
- gba_bios.bin
|
||||
search_dir: /storage/roms/bios
|
||||
passes_to: "config.toml [general] bios_path"
|
||||
fails_when_missing: false
|
||||
fails_when_missing: true
|
||||
installs:
|
||||
path: /storage/.config/nanoboyadvance/config.toml
|
||||
source_ref: "projects/ROCKNIX/packages/sysutils/systemd/scripts/userconfig-setup:13,\
|
||||
\ projects/ROCKNIX/packages/emulators/standalone/nanoboyadvance-sa/scripts/start_nanoboyadvance.sh:12"
|
||||
kept_if_present: true
|
||||
overrides: []
|
||||
source_ref: "projects/ROCKNIX/packages/emulators/standalone/nanoboyadvance-sa/config/config.toml:2,\
|
||||
\ projects/ROCKNIX/packages/emulators/standalone/nanoboyadvance-sa/package.mk:30"
|
||||
- emulator: xemu
|
||||
@@ -731,6 +776,13 @@ launchers:
|
||||
passes_to: "xemu.toml [sys.files] bootrom_path, flashrom_path, eeprom_path, hdd_path\
|
||||
\ (copied at each launch)"
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: /storage/.config/xemu/xemu.toml
|
||||
source_ref: "projects/ROCKNIX/packages/sysutils/systemd/scripts/userconfig-setup:13,\
|
||||
\ projects/ROCKNIX/packages/emulators/standalone/xemu-sa/scripts/start_xemu.sh:15,\
|
||||
\ 19"
|
||||
kept_if_present: false
|
||||
overrides: []
|
||||
source_ref: "projects/ROCKNIX/packages/emulators/standalone/xemu-sa/config/AMD64/xemu.toml:28-31,\
|
||||
\ projects/ROCKNIX/packages/emulators/standalone/xemu-sa/config/SM4450/xemu.toml:29-32,\
|
||||
\ projects/ROCKNIX/packages/emulators/standalone/xemu-sa/config/SM8250/xemu.toml:29-32,\
|
||||
@@ -747,6 +799,12 @@ launchers:
|
||||
search_dir: /storage/roms/bios/
|
||||
passes_to: mednafen.cfg gba.bios
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: /storage/.config/mednafen/mednafen.cfg
|
||||
source_ref: "projects/ROCKNIX/packages/sysutils/systemd/scripts/userconfig-setup:13,\
|
||||
\ projects/ROCKNIX/packages/emulators/standalone/mednafen/scripts/start_mednafen.sh:21"
|
||||
kept_if_present: true
|
||||
overrides: []
|
||||
source_ref: "projects/ROCKNIX/packages/emulators/standalone/mednafen/config/common/mednafen.template:570,\
|
||||
\ 729, projects/ROCKNIX/packages/emulators/standalone/mednafen/scripts/start_mednafen.sh:19-21"
|
||||
- emulator: mednafen
|
||||
@@ -758,6 +816,12 @@ launchers:
|
||||
search_dir: /storage/roms/bios/
|
||||
passes_to: mednafen.cfg md.cdbios
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: /storage/.config/mednafen/mednafen.cfg
|
||||
source_ref: "projects/ROCKNIX/packages/sysutils/systemd/scripts/userconfig-setup:13,\
|
||||
\ projects/ROCKNIX/packages/emulators/standalone/mednafen/scripts/start_mednafen.sh:21"
|
||||
kept_if_present: true
|
||||
overrides: []
|
||||
source_ref: "projects/ROCKNIX/packages/emulators/standalone/mednafen/config/common/mednafen.template:570,\
|
||||
\ 1050, projects/ROCKNIX/packages/emulators/standalone/mednafen/scripts/start_mednafen.sh:19-21"
|
||||
- emulator: mednafen
|
||||
@@ -769,6 +833,12 @@ launchers:
|
||||
search_dir: /storage/roms/bios/
|
||||
passes_to: mednafen.cfg nes.ggrom
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: /storage/.config/mednafen/mednafen.cfg
|
||||
source_ref: "projects/ROCKNIX/packages/sysutils/systemd/scripts/userconfig-setup:13,\
|
||||
\ projects/ROCKNIX/packages/emulators/standalone/mednafen/scripts/start_mednafen.sh:21"
|
||||
kept_if_present: true
|
||||
overrides: []
|
||||
source_ref: "projects/ROCKNIX/packages/emulators/standalone/mednafen/config/common/mednafen.template:570,\
|
||||
\ 2292, projects/ROCKNIX/packages/emulators/standalone/mednafen/scripts/start_mednafen.sh:19-21"
|
||||
- emulator: mednafen
|
||||
@@ -781,6 +851,12 @@ launchers:
|
||||
search_dir: /storage/roms/bios/
|
||||
passes_to: mednafen.cfg pce.cdbios, pce.gecdbios
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: /storage/.config/mednafen/mednafen.cfg
|
||||
source_ref: "projects/ROCKNIX/packages/sysutils/systemd/scripts/userconfig-setup:13,\
|
||||
\ projects/ROCKNIX/packages/emulators/standalone/mednafen/scripts/start_mednafen.sh:21"
|
||||
kept_if_present: true
|
||||
overrides: []
|
||||
source_ref: "projects/ROCKNIX/packages/emulators/standalone/mednafen/config/common/mednafen.template:570,\
|
||||
\ 3309, 3342, projects/ROCKNIX/packages/emulators/standalone/mednafen/scripts/start_mednafen.sh:19-21"
|
||||
- emulator: mednafen
|
||||
@@ -792,6 +868,12 @@ launchers:
|
||||
search_dir: /storage/roms/bios/
|
||||
passes_to: mednafen.cfg pce_fast.cdbios
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: /storage/.config/mednafen/mednafen.cfg
|
||||
source_ref: "projects/ROCKNIX/packages/sysutils/systemd/scripts/userconfig-setup:13,\
|
||||
\ projects/ROCKNIX/packages/emulators/standalone/mednafen/scripts/start_mednafen.sh:21"
|
||||
kept_if_present: true
|
||||
overrides: []
|
||||
source_ref: "projects/ROCKNIX/packages/emulators/standalone/mednafen/config/common/mednafen.template:570,\
|
||||
\ 4128, projects/ROCKNIX/packages/emulators/standalone/mednafen/scripts/start_mednafen.sh:19-21"
|
||||
- emulator: mednafen
|
||||
@@ -803,6 +885,12 @@ launchers:
|
||||
search_dir: /storage/roms/bios/
|
||||
passes_to: mednafen.cfg pcfx.bios
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: /storage/.config/mednafen/mednafen.cfg
|
||||
source_ref: "projects/ROCKNIX/packages/sysutils/systemd/scripts/userconfig-setup:13,\
|
||||
\ projects/ROCKNIX/packages/emulators/standalone/mednafen/scripts/start_mednafen.sh:21"
|
||||
kept_if_present: true
|
||||
overrides: []
|
||||
source_ref: "projects/ROCKNIX/packages/emulators/standalone/mednafen/config/common/mednafen.template:570,\
|
||||
\ 4611, projects/ROCKNIX/packages/emulators/standalone/mednafen/scripts/start_mednafen.sh:19-21"
|
||||
- emulator: mednafen
|
||||
@@ -816,6 +904,12 @@ launchers:
|
||||
search_dir: /storage/roms/bios/
|
||||
passes_to: mednafen.cfg psx.bios_eu, psx.bios_jp, psx.bios_na
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: /storage/.config/mednafen/mednafen.cfg
|
||||
source_ref: "projects/ROCKNIX/packages/sysutils/systemd/scripts/userconfig-setup:13,\
|
||||
\ projects/ROCKNIX/packages/emulators/standalone/mednafen/scripts/start_mednafen.sh:21"
|
||||
kept_if_present: true
|
||||
overrides: []
|
||||
source_ref: "projects/ROCKNIX/packages/emulators/standalone/mednafen/config/common/mednafen.template:570,\
|
||||
\ 7366-7370, projects/ROCKNIX/packages/emulators/standalone/mednafen/scripts/start_mednafen.sh:19-21"
|
||||
- emulator: mednafen
|
||||
@@ -834,6 +928,12 @@ launchers:
|
||||
passes_to: mednafen.cfg ss.bios_jp, ss.bios_na_eu, ss.bios_stv_eu, ss.bios_stv_jp,
|
||||
ss.bios_stv_na, ss.cart.kof95_path, ss.cart.ultraman_path
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: /storage/.config/mednafen/mednafen.cfg
|
||||
source_ref: "projects/ROCKNIX/packages/sysutils/systemd/scripts/userconfig-setup:13,\
|
||||
\ projects/ROCKNIX/packages/emulators/standalone/mednafen/scripts/start_mednafen.sh:21"
|
||||
kept_if_present: true
|
||||
overrides: []
|
||||
source_ref: "projects/ROCKNIX/packages/emulators/standalone/mednafen/config/common/mednafen.template:570,\
|
||||
\ 9818-9820, 9824-9828, 9834-9836, projects/ROCKNIX/packages/emulators/standalone/mednafen/scripts/start_mednafen.sh:19-21"
|
||||
- emulator: yabasanshiro
|
||||
@@ -861,6 +961,13 @@ launchers:
|
||||
passes_to: "settings.ini [BIOS] SearchDirectory = /storage/roms/bios, [BIOS] PathNTSCU,\
|
||||
\ PathNTSCJ, PathPAL unset"
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: /storage/.config/duckstation/settings.ini
|
||||
source_ref: "projects/ROCKNIX/packages/sysutils/systemd/scripts/userconfig-setup:13,\
|
||||
\ projects/ROCKNIX/packages/emulators/standalone/duckstation-sa/scripts/start_duckstation.sh:19,\
|
||||
\ 22"
|
||||
kept_if_present: true
|
||||
overrides: []
|
||||
source_ref: "projects/ROCKNIX/packages/emulators/standalone/duckstation-sa/config/AMD64/settings.ini:134,\
|
||||
\ projects/ROCKNIX/packages/emulators/standalone/duckstation-sa/config/H700/settings.ini:24,\
|
||||
\ projects/ROCKNIX/packages/emulators/standalone/duckstation-sa/config/InputPlumber/settings.ini:29-32,\
|
||||
@@ -878,6 +985,13 @@ launchers:
|
||||
passes_to: "PCSX2.ini [Folders] Bios = /storage/roms/bios/armsx2, [Filenames] BIOS\
|
||||
\ unset"
|
||||
fails_when_missing: false
|
||||
installs:
|
||||
path: /storage/.config/ARMSX2/inis/PCSX2.ini
|
||||
source_ref: "projects/ROCKNIX/packages/sysutils/systemd/scripts/userconfig-setup:13,\
|
||||
\ projects/ROCKNIX/packages/emulators/standalone/armsx2-sa/scripts/start_armsx2.sh:11,\
|
||||
\ 16"
|
||||
kept_if_present: true
|
||||
overrides: []
|
||||
source_ref: "projects/ROCKNIX/packages/emulators/standalone/armsx2-sa/config/S922X/ARMSX2/inis/PCSX2.ini:21,\
|
||||
\ 475, projects/ROCKNIX/packages/emulators/standalone/armsx2-sa/config/inputplumber/ARMSX2/inis/PCSX2.ini:21,\
|
||||
\ 473, projects/ROCKNIX/packages/emulators/standalone/armsx2-sa/package.mk:117-118"
|
||||
|
||||
@@ -7,7 +7,7 @@ runs the script its standalone_emulators table names (/usr/bin/<name>.sh,
|
||||
installed from the package). Those scripts, and the configs their packages
|
||||
install, say which file under /storage/roms/bios is opened: yabasanshiro.sh
|
||||
tests saturn_bios.bin and passes it with -b, Hatari's default config names
|
||||
tos.img, the atari800 core is built to read a config naming its OS ROMs.
|
||||
tos.img.
|
||||
|
||||
runemu.py is read with ast, the scripts with shell_launchers' readers. An
|
||||
extractor whose construct is gone raises instead of returning nothing.
|
||||
@@ -26,7 +26,9 @@ try:
|
||||
from .shell_launchers import (
|
||||
LauncherPatternMissing,
|
||||
Script,
|
||||
config_placement,
|
||||
describe_keys,
|
||||
evidence_fields,
|
||||
settings,
|
||||
source_ref,
|
||||
)
|
||||
@@ -35,7 +37,9 @@ except ImportError:
|
||||
from shell_launchers import ( # type: ignore[no-redef]
|
||||
LauncherPatternMissing,
|
||||
Script,
|
||||
config_placement,
|
||||
describe_keys,
|
||||
evidence_fields,
|
||||
settings,
|
||||
source_ref,
|
||||
)
|
||||
@@ -45,8 +49,8 @@ RUNEMU = "packages/amberelec/sources/scripts/runemu.py"
|
||||
RETROARCH_CFG = "packages/games/tools/retroarch/sources/retroarch.cfg"
|
||||
RETRORUN = "packages/games/tools/retrorun/retrorun.sh"
|
||||
HATARI_CONFIG = "packages/games/emulators/hatarisa/config/conf/Atari-ST-default.cfg"
|
||||
ATARI800_CONFIG = "packages/amberelec/config/distribution/configs/atari800.cfg"
|
||||
ATARI800_PATCH = "packages/games/libretro/atari800/patches/atari800-01-add-emuelec-platform.patch"
|
||||
# The first-boot copy of every package's /usr/config into /storage/.config.
|
||||
USERCONFIG = "packages/sysutils/systemd/scripts/userconfig-setup"
|
||||
AMIBERRY_PACKAGE = "packages/games/emulators/amiberry/package.mk"
|
||||
AMIBERRY_CONFIGS = "packages/games/emulators/amiberry/config/conf"
|
||||
FREEJ2ME = (
|
||||
@@ -103,16 +107,35 @@ class Runemu:
|
||||
return path, line
|
||||
|
||||
|
||||
def _evidence(
|
||||
read: Read, record: Launcher, target: str, keys: list[str],
|
||||
start: Script | None = None, source_name: str = "",
|
||||
) -> Launcher:
|
||||
"""A config record with the steps that put its file at ``target``: the
|
||||
first-boot copy of /usr/config, then the start script's own copy."""
|
||||
setup = Script(USERCONFIG, read(USERCONFIG))
|
||||
placements = [config_placement(setup, target, required=False, sources=("/usr/config/",))]
|
||||
if start is not None:
|
||||
placements.append(
|
||||
config_placement(start, target, keys, source_name=source_name, required=False)
|
||||
)
|
||||
fields = evidence_fields(placements)
|
||||
record.installs = fields["installs"]
|
||||
record.kept_if_present = fields["kept_if_present"]
|
||||
record.overrides = fields["overrides"]
|
||||
return record
|
||||
|
||||
|
||||
def retroarch(read: Read) -> list[Launcher]:
|
||||
"""system_directory of the retroarch.cfg the retroarch package installs."""
|
||||
found = [s for s in settings(read(RETROARCH_CFG)) if s.key == "system_directory"]
|
||||
if len(found) != 1:
|
||||
raise LauncherPatternMissing(RETROARCH_CFG, "one system_directory")
|
||||
return [Launcher(
|
||||
return [_evidence(read, Launcher(
|
||||
emulator="retroarch", build="libretro", kind="passes_path", names=[],
|
||||
search_dir=found[0].value, passes_to="retroarch.cfg system_directory",
|
||||
fails_when_missing=False, source_ref=source_ref([(RETROARCH_CFG, [found[0].line])]),
|
||||
)]
|
||||
), "/storage/.config/retroarch/retroarch.cfg", ["system_directory"])]
|
||||
|
||||
|
||||
def retrorun(read: Read) -> list[Launcher]:
|
||||
@@ -170,10 +193,12 @@ def hatari(read: Read, runemu: Runemu) -> list[Launcher]:
|
||||
path, table_line = runemu.script("HATARISA")
|
||||
script = Script(path, read(path))
|
||||
name = posixpath.basename(HATARI_CONFIG)
|
||||
copied, _ = script.find(rf"^\s*cp\s+\S*/{re.escape(name)}\s", f"cp of {name}")
|
||||
copied, copy = script.find(
|
||||
rf"^\s*cp\s+\S*/{re.escape(name)}\s+\"?(\$\{{?\w+\}}?)", f"cp of {name}"
|
||||
)
|
||||
passed, _ = script.find(r"\shatari\s+--configfile\s", "hatari --configfile")
|
||||
files, lines = _bios_files(HATARI_CONFIG, read(HATARI_CONFIG))
|
||||
return [Launcher(
|
||||
return [_evidence(read, Launcher(
|
||||
emulator="HATARISA", build="standalone", kind="fixed_name",
|
||||
names=[n for _k, n in files], case_insensitive=False, search_dir=BIOS,
|
||||
passes_to=describe_keys(name, tuple(k for k, _n in files)),
|
||||
@@ -181,24 +206,8 @@ def hatari(read: Read, runemu: Runemu) -> list[Launcher]:
|
||||
source_ref=source_ref([
|
||||
(RUNEMU, [table_line]), (path, [copied, passed]), (HATARI_CONFIG, lines),
|
||||
]),
|
||||
)]
|
||||
|
||||
|
||||
def atari800(read: Read) -> list[Launcher]:
|
||||
"""The ROM keys of the config the atari800 core is built to read."""
|
||||
patch = Script(ATARI800_PATCH, read(ATARI800_PATCH))
|
||||
line, found = patch.find(r'DEFAULT_CFG_NAME="\\"([^"\\]+)\\""', "DEFAULT_CFG_NAME")
|
||||
built = found.group(1)
|
||||
if not built.endswith("/" + ATARI800_CONFIG.split("/config/", 1)[1]):
|
||||
raise LauncherPatternMissing(ATARI800_PATCH, f"DEFAULT_CFG_NAME naming {ATARI800_CONFIG}")
|
||||
files, lines = _bios_files(ATARI800_CONFIG, read(ATARI800_CONFIG))
|
||||
return [Launcher(
|
||||
emulator="atari800", build="libretro", kind="fixed_name",
|
||||
names=[n for _k, n in files], case_insensitive=False, search_dir=BIOS,
|
||||
passes_to=describe_keys(posixpath.basename(ATARI800_CONFIG), tuple(k for k, _n in files)),
|
||||
fails_when_missing=False,
|
||||
source_ref=source_ref([(ATARI800_PATCH, [line]), (ATARI800_CONFIG, lines)]),
|
||||
)]
|
||||
), script.expand(copy.group(1), copied, set()),
|
||||
[f"[{s}] {k}" if s else k for (s, k), _n in files], script, name)]
|
||||
|
||||
|
||||
def yabasanshiro(read: Read, runemu: Runemu) -> list[Launcher]:
|
||||
@@ -279,6 +288,15 @@ def amiberry(read: Read, runemu: Runemu) -> list[Launcher]:
|
||||
installed = re.sub(r"^\$\{INSTALL\}", "", link.link)
|
||||
path, table_line = runemu.script("AMIBERRY")
|
||||
script = Script(path, read(path))
|
||||
# A WHDLoad archive is booted by --autoload, which builds its own setup
|
||||
# over the config: the kickstart records hold for the other content.
|
||||
autoload = [n for n, text in script.code() if re.search(r"amiberry .*--autoload", text)]
|
||||
if not autoload:
|
||||
raise script.missing("WHDLoad boot with --autoload")
|
||||
content = (
|
||||
"content not booted with --autoload, a WHDLoad .lha or .zip "
|
||||
f"({posixpath.basename(path)}:{', '.join(map(str, autoload))})"
|
||||
)
|
||||
launchers = [Launcher(
|
||||
emulator="AMIBERRY", build="standalone", kind="links", names=[],
|
||||
case_insensitive=False, search_dir=BIOS,
|
||||
@@ -314,19 +332,23 @@ def amiberry(read: Read, runemu: Runemu) -> list[Launcher]:
|
||||
else:
|
||||
test = _shell_test(script, condition_line)
|
||||
condition = test
|
||||
launchers.append(Launcher(
|
||||
target = re.search(r'"?(\$\{?\w+\}?)"?\s*$', line)
|
||||
if target is None:
|
||||
raise script.missing(f"destination of the copy at line {number}")
|
||||
launchers.append(_evidence(read, Launcher(
|
||||
emulator="AMIBERRY", build="standalone", kind="fixed_name",
|
||||
slot=copied.group(1).removesuffix("-default.uae").removeprefix("Amiga"),
|
||||
names=[found[0].value.removeprefix("$(FILE_PATH)/")], case_insensitive=False,
|
||||
search_dir=BIOS,
|
||||
passes_to=f"{copied.group(1)} kickstart_rom_file, $(FILE_PATH) = {rom_path[0].value}",
|
||||
fails_when_missing=False,
|
||||
depends_on_option=condition,
|
||||
depends_on_option=f"{condition}, {content}",
|
||||
source_ref=source_ref([
|
||||
(RUNEMU, [table_line]), (path, [condition_line, number]),
|
||||
(config, [rom_path[0].line, found[0].line]),
|
||||
]),
|
||||
))
|
||||
), script.expand(target.group(1), number, set()), ["kickstart_rom_file"],
|
||||
script, copied.group(1)))
|
||||
if len(launchers) == 1:
|
||||
raise script.missing("cp of a default .uae config")
|
||||
return launchers
|
||||
@@ -420,9 +442,13 @@ def easyrpg(read: Read) -> list[Launcher]:
|
||||
def extract_launchers(read: Read) -> list[dict[str, Any]]:
|
||||
"""Every launcher record, read through `read(repo-relative path)`."""
|
||||
runemu = Runemu(read)
|
||||
# The atari800.cfg AmberELEC ships names the OS ROMs, but the core opens
|
||||
# it only under its atari800_cfg option, off by default, and finds the
|
||||
# ROMs by a scan of the content folder (libretro-atari800 atari.c:512-516,
|
||||
# 537, libretro_core_options.h:1203): no record reads it.
|
||||
launchers = [
|
||||
*retroarch(read), *retrorun(read), *mame(runemu),
|
||||
*atari800(read), *scummvm(read), *freej2me(read), *easyrpg(read),
|
||||
*scummvm(read), *freej2me(read), *easyrpg(read),
|
||||
*amiberry(read, runemu), *hatari(read, runemu), *pico8(read, runemu),
|
||||
*piemu(read, runemu), *yabasanshiro(read, runemu),
|
||||
]
|
||||
|
||||
@@ -39,6 +39,14 @@ class Launcher:
|
||||
machines: list[str] | None = None
|
||||
# The platform systems the record is written for, none for every one.
|
||||
systems: list[str] | None = None
|
||||
# For a record citing a config: where the platform's code puts it
|
||||
# ({path, source_ref}), whether that leaves a file already there, and
|
||||
# the launch code rewriting its keys ([] when none does).
|
||||
installs: dict[str, str] | None = None
|
||||
kept_if_present: bool | None = None
|
||||
overrides: list[str] | None = None
|
||||
# The feature or option file listing the values the option written takes.
|
||||
choices_from: str | None = None
|
||||
|
||||
def entry(self) -> dict[str, Any]:
|
||||
"""The platform YAML form, in a fixed key order, unset keys left out."""
|
||||
@@ -46,7 +54,8 @@ class Launcher:
|
||||
"emulator", "systems", "build", "kind", "slot", "names", "expands",
|
||||
"case_insensitive", "search_dir", "passes_to",
|
||||
"fails_when_missing", "fails_scope", "depends_on_option",
|
||||
"device", "machines", "source_ref",
|
||||
"device", "machines", "installs", "kept_if_present", "overrides",
|
||||
"choices_from", "source_ref",
|
||||
)
|
||||
return {key: getattr(self, key) for key in order if getattr(self, key) is not None}
|
||||
|
||||
|
||||
@@ -44,6 +44,8 @@ BIOS = "${biosPath}"
|
||||
EMULATION_BIOS = "${emulationPath}/bios"
|
||||
STORAGE = "${storagePath}"
|
||||
FLATPAK_DATA = "${HOME}/.var/app/"
|
||||
# The function every EmuScript installs its Flatpak config with.
|
||||
CONFIG_EMU_FP = "functions/configEmuFP.sh"
|
||||
|
||||
# EmuScripts file names that differ from the emulator profile they set up.
|
||||
# The platform and target scrapers both read them here.
|
||||
@@ -95,6 +97,31 @@ def _is_bios(value: str) -> bool:
|
||||
return any(value == root or value.startswith(root + "/") for root in (BIOS, EMULATION_BIOS))
|
||||
|
||||
|
||||
def with_evidence(tree: RepoTree, script: Script, record: Launcher, config: str) -> Launcher:
|
||||
"""A record citing a shipped config, with the steps that install it.
|
||||
|
||||
configEmuFP rsyncs the repository's configs/<app> over the Flatpak's:
|
||||
the _init call overwrites (keeping a .bak), every other call passes
|
||||
--ignore-existing and leaves the user's file in place.
|
||||
"""
|
||||
fp = Script(CONFIG_EMU_FP, tree.read(CONFIG_EMU_FP))
|
||||
rsync_line, _ = fp.find(r"^\s*rsync .*\$emudeckBackend/configs/", "rsync of the configs")
|
||||
keep_line, _ = fp.find(r'overwrite="--ignore-existing"', "--ignore-existing")
|
||||
calls = {n for n, line in script.code() if re.match(r"\s*configEmuFP\s", line)}
|
||||
if not calls:
|
||||
raise script.missing("configEmuFP call")
|
||||
variable = script.assignment_ending("/" + config)
|
||||
if variable is None:
|
||||
raise script.missing(f"config variable for {config}")
|
||||
record.installs = {
|
||||
"path": script.expand(variable.value, variable.line, set()),
|
||||
"source_ref": source_ref([(script.path, calls), (fp.path, {keep_line, rsync_line})]),
|
||||
}
|
||||
record.kept_if_present = True
|
||||
record.overrides = []
|
||||
return record
|
||||
|
||||
|
||||
def _repo_config(script: Script, path: str) -> str:
|
||||
"""The repository copy of a Flatpak config EmuDeck installs."""
|
||||
if not path.startswith(FLATPAK_DATA):
|
||||
@@ -268,7 +295,8 @@ def ares(tree: RepoTree) -> list[Launcher]:
|
||||
raise LauncherPatternMissing(path, f"Firmware path under {old}")
|
||||
for system, found in entries.items():
|
||||
folder = posixpath.commonpath([posixpath.dirname(t) for _, t, _ in found])
|
||||
records.append(
|
||||
records.append(with_evidence(
|
||||
tree, script,
|
||||
Launcher(
|
||||
emulator="ares",
|
||||
build="standalone",
|
||||
@@ -281,16 +309,20 @@ def ares(tree: RepoTree) -> list[Launcher]:
|
||||
search_dir=folder,
|
||||
passes_to="settings.bml "
|
||||
+ ", ".join(f"{system}/Firmware/{k}" for k, _, _ in found),
|
||||
)
|
||||
)
|
||||
),
|
||||
posixpath.basename(path),
|
||||
))
|
||||
return records
|
||||
|
||||
|
||||
def melonds(tree: RepoTree) -> list[Launcher]:
|
||||
"""melonDS.ini paths set by changeLine, melonDS.toml paths shipped and rewritten by sed."""
|
||||
name = "emuDeckMelonDS.sh"
|
||||
records = setter_records(tree, name, option_key="ExternalBIOSEnable")
|
||||
script = _script(tree, name)
|
||||
records = [
|
||||
with_evidence(tree, script, record, str(record.passes_to or "").split(" ", 1)[0])
|
||||
for record in setter_records(tree, name, option_key="ExternalBIOSEnable")
|
||||
]
|
||||
# A config whose BIOS keys the setters write again keeps their values.
|
||||
set_by_setters = {file for file, _, _, value, _ in setters(script) if _is_bios(value)}
|
||||
for file, old, new, sed_lines in sed_rewrites(script, "melonDS_init"):
|
||||
@@ -306,22 +338,29 @@ def melonds(tree: RepoTree) -> list[Launcher]:
|
||||
continue
|
||||
folder = posixpath.commonpath([posixpath.dirname(t) for _, t in found])
|
||||
config = posixpath.basename(path)
|
||||
option = next((s for s in settings(tree.read(path)) if s.key == "ExternalBIOSEnable"), None)
|
||||
if option is None:
|
||||
raise LauncherPatternMissing(path, "ExternalBIOSEnable")
|
||||
shipped = {s.key: s for s in settings(tree.read(path))}
|
||||
if "ExternalBIOSEnable" not in shipped or "ConsoleType" not in shipped:
|
||||
raise LauncherPatternMissing(path, "ExternalBIOSEnable and ConsoleType")
|
||||
option, console = shipped["ExternalBIOSEnable"], shipped["ConsoleType"]
|
||||
# The DS keys are read under ExternalBIOSEnable, the DSi keys only
|
||||
# when the console is a DSi (ConsoleType 1).
|
||||
record = Launcher(
|
||||
emulator="melonds",
|
||||
build="standalone",
|
||||
kind="fixed_name",
|
||||
names=[posixpath.relpath(t, folder) for _, t in found],
|
||||
source_ref=source_ref(
|
||||
[(path, {option.line, *(s.line for s, _ in found)}), (script.path, sed_lines)]
|
||||
),
|
||||
source_ref=source_ref([
|
||||
(path, {option.line, console.line, *(s.line for s, _ in found)}),
|
||||
(script.path, sed_lines),
|
||||
]),
|
||||
search_dir=folder,
|
||||
passes_to=describe_keys(config, tuple((s.section, s.key) for s, _ in found)),
|
||||
depends_on_option=f"ExternalBIOSEnable = {option.value} in the shipped {config}",
|
||||
depends_on_option=(
|
||||
f"[DS] keys: ExternalBIOSEnable = true, {option.value} in the shipped {config}; "
|
||||
f"[DSi] keys: ConsoleType = 1, {console.value} in the shipped {config}"
|
||||
),
|
||||
)
|
||||
records.append(record)
|
||||
records.append(with_evidence(tree, script, record, config))
|
||||
if len(records) < 2:
|
||||
raise script.missing("melonDS.toml BIOS paths rewritten by sed")
|
||||
return records
|
||||
|
||||
@@ -14,7 +14,7 @@ from __future__ import annotations
|
||||
|
||||
import posixpath
|
||||
import re
|
||||
from collections.abc import Callable
|
||||
from collections.abc import Callable, Iterable
|
||||
from dataclasses import dataclass, field
|
||||
|
||||
from .configgen_launchers import Launcher
|
||||
@@ -22,6 +22,8 @@ from .rocknix_launchers import fixed_paths
|
||||
from .shell_launchers import (
|
||||
LauncherPatternMissing,
|
||||
Link,
|
||||
config_placement,
|
||||
evidence_fields,
|
||||
RepoTree,
|
||||
Script,
|
||||
describe_keys,
|
||||
@@ -104,6 +106,28 @@ class Runs:
|
||||
return (RUN_EMU, set(self.of(name).lines))
|
||||
|
||||
|
||||
def _evidence(
|
||||
record: Launcher,
|
||||
script: Script,
|
||||
target: str,
|
||||
keys: list[str],
|
||||
source_name: str = "",
|
||||
rewrites: Iterable[int] = (),
|
||||
) -> Launcher:
|
||||
"""A config record with the start script lines that put its file in place.
|
||||
|
||||
``rewrites`` are lines the extractor read as rewriting the record's
|
||||
values without naming their keys (advmame.sh's sed of /roms/mame).
|
||||
"""
|
||||
placement = config_placement(script, target, keys, source_name=source_name)
|
||||
placement.overrides |= set(rewrites)
|
||||
fields = evidence_fields([placement])
|
||||
record.installs = fields["installs"]
|
||||
record.kept_if_present = fields["kept_if_present"]
|
||||
record.overrides = fields["overrides"]
|
||||
return record
|
||||
|
||||
|
||||
def _read(tree: RepoTree, path: str) -> Script:
|
||||
return Script(path, tree.read(path))
|
||||
|
||||
@@ -317,7 +341,7 @@ def duckstation(tree: RepoTree, runs: Runs) -> list[Launcher]:
|
||||
name = posixpath.basename(script.path)
|
||||
lines = {found[k].line for k in (folder_key, *file_keys) if k in found}
|
||||
unset = describe_keys("", file_keys).strip()
|
||||
return [
|
||||
return [_evidence(
|
||||
Launcher(
|
||||
emulator=runs.emulator(name),
|
||||
build="standalone",
|
||||
@@ -328,8 +352,11 @@ def duckstation(tree: RepoTree, runs: Runs) -> list[Launcher]:
|
||||
),
|
||||
search_dir=found[folder_key].value,
|
||||
passes_to=f"settings.ini [BIOS] SearchDirectory (-settings), {unset} unset",
|
||||
)
|
||||
]
|
||||
),
|
||||
script,
|
||||
script.expand("${CONFIG_DIR}/settings.ini", run_line, set()),
|
||||
[f"[{s}] {k}" for s, k in (folder_key, *file_keys)],
|
||||
)]
|
||||
|
||||
|
||||
YABASANSHIRO_SCRIPTS = (
|
||||
@@ -473,7 +500,7 @@ def hatari(tree: RepoTree, runs: Runs) -> list[Launcher]:
|
||||
mk = _read(tree, f"{package}/package.mk")
|
||||
mk_line, _ = mk.find(r"cp -R \$\{PKG_DIR\}/config/\* ", "config install")
|
||||
name = posixpath.basename(script.path)
|
||||
return [
|
||||
return [_evidence(
|
||||
Launcher(
|
||||
emulator=runs.emulator(name),
|
||||
build="standalone",
|
||||
@@ -485,8 +512,12 @@ def hatari(tree: RepoTree, runs: Runs) -> list[Launcher]:
|
||||
),
|
||||
search_dir=value.search_dir,
|
||||
passes_to=f"{describe_keys(copy.group(1), value.keys)} (--configfile)",
|
||||
)
|
||||
]
|
||||
),
|
||||
script,
|
||||
script.expand("${" + copy.group(2) + "}", copy_line, set()),
|
||||
[f"[{s}] {k}" if s else k for s, k in value.keys],
|
||||
source_name=copy.group(1),
|
||||
)]
|
||||
|
||||
|
||||
_ADVMAME_SYSTEM = re.compile(r'^\s*if \[\[ "\$\{1\}" = "([\w-]+)" \]\]; then$')
|
||||
@@ -535,29 +566,34 @@ def advancemame(tree: RepoTree, runs: Runs) -> list[Launcher]:
|
||||
(script.path, {run_line, *lines}),
|
||||
])
|
||||
|
||||
found = []
|
||||
target = script.expand("${CONFIG_DIR}/advmame.rc", run_line, set())
|
||||
|
||||
def proved(record: Launcher, key: str) -> Launcher:
|
||||
return _evidence(record, script, target, [key], rewrites={sed_line})
|
||||
|
||||
records = []
|
||||
for key, folder in value:
|
||||
rewritten = folder.replace(sed.group(1), sed.group(2))
|
||||
if rewritten != folder:
|
||||
# Every system but the one the script rewrites the key for, and
|
||||
# that system with the rewritten folder.
|
||||
found.append(Launcher(
|
||||
records.append(proved(Launcher(
|
||||
emulator=runs.emulator(name), build="standalone", kind="passes_path", names=[],
|
||||
source_ref=refs(test_line, sed_line), search_dir=folder,
|
||||
passes_to=f"advmame.rc {key}",
|
||||
depends_on_option=f"system != {test.group(1)}",
|
||||
))
|
||||
found.append(Launcher(
|
||||
), key))
|
||||
records.append(proved(Launcher(
|
||||
emulator=runs.emulator(name), build="standalone", kind="passes_path", names=[],
|
||||
source_ref=refs(test_line, sed_line), search_dir=rewritten,
|
||||
passes_to=f"advmame.rc {key}", systems=[test.group(1)],
|
||||
))
|
||||
), key))
|
||||
continue
|
||||
found.append(Launcher(
|
||||
records.append(proved(Launcher(
|
||||
emulator=runs.emulator(name), build="standalone", kind="passes_path", names=[],
|
||||
source_ref=refs(), search_dir=folder, passes_to=f"advmame.rc {key}",
|
||||
))
|
||||
return found
|
||||
), key))
|
||||
return records
|
||||
|
||||
|
||||
def mame(tree: RepoTree, runs: Runs) -> list[Launcher]:
|
||||
@@ -594,42 +630,11 @@ def mame(tree: RepoTree, runs: Runs) -> list[Launcher]:
|
||||
)
|
||||
if not records:
|
||||
raise script.missing(f"copy into {BIOS_ROOT}")
|
||||
ini = next((r for r in records if r.names == ["mame*"]), None)
|
||||
if ini is None:
|
||||
raise script.missing("copy of mame.ini")
|
||||
option_path = f"{package}/config/MAME/MAME.opt"
|
||||
option = next(
|
||||
(s for s in settings(tree.read(option_path)) if s.key == "mame_read_config"), None
|
||||
)
|
||||
if option is None:
|
||||
raise LauncherPatternMissing(option_path, "mame_read_config")
|
||||
ini_path = f"{package}/config/ini/mame.ini"
|
||||
# MAME reads from the folders its *path options name and writes to its
|
||||
# *_directory ones.
|
||||
folders = [
|
||||
(s, [p for p in s.value.split(";") if _under(p)])
|
||||
for s in settings(tree.read(ini_path), separator=" ")
|
||||
if s.key.endswith("path")
|
||||
]
|
||||
folders = [(s, parts) for s, parts in folders if parts]
|
||||
if not folders:
|
||||
raise LauncherPatternMissing(ini_path, f"path under {BIOS_ROOT}")
|
||||
for setting, parts in folders:
|
||||
for part in parts:
|
||||
records.append(
|
||||
Launcher(
|
||||
emulator=emulator,
|
||||
build="libretro",
|
||||
kind="passes_path",
|
||||
names=[],
|
||||
source_ref=source_ref(
|
||||
[(ini_path, {setting.line}), (option_path, {option.line})]
|
||||
) + f", {ini.source_ref}",
|
||||
search_dir=part.rstrip("/"),
|
||||
passes_to=f"mame.ini {setting.key}",
|
||||
depends_on_option=f"mame_read_config = {option.value}",
|
||||
)
|
||||
)
|
||||
# mame.ini hands the core no folder: MAME.opt turns on
|
||||
# mame_mame_paths_enable, so the core passes no path option
|
||||
# (libretro mame src/osd/libretro/libretro-internal/retro_init.cpp:554-555),
|
||||
# and the ini MAME would read sits under a working directory no launcher
|
||||
# sets (src/emu/emuopts.cpp:49). Only the copies are the launcher's.
|
||||
return records
|
||||
|
||||
|
||||
@@ -644,6 +649,16 @@ def scummvm(tree: RepoTree, runs: Runs) -> list[Launcher]:
|
||||
core_line, core = script.find(r"-L /tmp/cores/(\w+)_libretro\.so", "libretro start")
|
||||
arm_line, arm = script.find(r'^\s*"(\w+)"\)', "setup arm", core_line)
|
||||
copy_line, copy = script.find(r"^\s*cp (\S+) (\S+)$", "copy into the BIOS folder", arm_line)
|
||||
launched = sorted({
|
||||
m.group(1) for _, line in runs.script.code()
|
||||
if (m := re.search(rf"\b{re.escape(name)} (\w+)", line))
|
||||
})
|
||||
if not launched:
|
||||
raise runs.script.missing(f"start of {name} with an action")
|
||||
action = f"{name} {arm.group(1)}"
|
||||
if arm.group(1) not in launched:
|
||||
# The copy runs from the setup action, never from a launch.
|
||||
action += f", an action no launch runs ({RUN_EMU.rsplit('/', 1)[-1]} passes {', '.join(launched)})"
|
||||
used = {copy_line}
|
||||
source = script.expand(copy.group(1), copy_line, used)
|
||||
target = script.expand(copy.group(2), copy_line, used)
|
||||
@@ -669,7 +684,7 @@ def scummvm(tree: RepoTree, runs: Runs) -> list[Launcher]:
|
||||
search_dir=posixpath.dirname(source),
|
||||
passes_to=target,
|
||||
fails_when_missing=False,
|
||||
depends_on_option=f"{name} {arm.group(1)}",
|
||||
depends_on_option=action,
|
||||
),
|
||||
]
|
||||
|
||||
|
||||
@@ -35,6 +35,8 @@ PLACEHOLDER = "RETRODECKBIOSDIR"
|
||||
# gzdoom/component_prepare.sh:27 rewrites to $roms_path.
|
||||
ROMS_PLACEHOLDER = "RETRODECKROMSDIR"
|
||||
CORE_OPTIONS = "retroarch/rd_assets/rd_config/retroarch-core-options.cfg"
|
||||
# XRoar ROM lists RetroDECK's xroar.conf defines that no machine looks up.
|
||||
UNREAD_ROMLISTS = frozenset({"coco1", "coco1e", "coco1e_ext", "coco2", "coco2_ext", "coco2b"})
|
||||
# The component that runs libretro cores.
|
||||
LIBRETRO_COMPONENT = "retroarch"
|
||||
# Values of a core option that name a file rather than a setting.
|
||||
@@ -301,6 +303,19 @@ class Component:
|
||||
if copied is None:
|
||||
raise LauncherPatternMissing(f"{script.path}:{number}", f"no preset copied to {target}")
|
||||
preset = f"{self.name}/rd_assets/rd_config/{copied[1]}"
|
||||
# The reset copies the preset over the user's file, then fills its
|
||||
# placeholders: that is the install, and nothing keeps an older file.
|
||||
evidence: dict[str, Any] = {
|
||||
"installs": {
|
||||
"path": target,
|
||||
"source_ref": source_ref(
|
||||
[(script.path, copied[0])]
|
||||
+ [(script.path, line) for _v, line in substitutions.values()]
|
||||
),
|
||||
},
|
||||
"kept_if_present": False,
|
||||
"overrides": self.launch_rewrites(target),
|
||||
}
|
||||
text = self.read(preset)
|
||||
if text is None:
|
||||
raise LauncherPatternMissing(preset, "preset is missing")
|
||||
@@ -332,10 +347,10 @@ class Component:
|
||||
self.record(
|
||||
"passes_path", [], [(preset, line_no)] + applied,
|
||||
search_dir=value, passes_to=f"{self.config_name(target)} {where}",
|
||||
fails_when_missing=False,
|
||||
fails_when_missing=False, **evidence,
|
||||
)
|
||||
if key == "rompath":
|
||||
self.romlists(preset, text, value, applied)
|
||||
self.romlists(preset, text, value, applied, evidence)
|
||||
if not found:
|
||||
raise LauncherPatternMissing(preset, f"no {PLACEHOLDER} line")
|
||||
|
||||
@@ -349,10 +364,28 @@ class Component:
|
||||
found[m.group(1)] = (f"${m.group(2)}", line_no)
|
||||
return found
|
||||
|
||||
def launch_rewrites(self, target: str) -> list[str]:
|
||||
"""The sed lines of the component launcher rewriting ``target``."""
|
||||
path = f"{self.name}/component_launcher.sh"
|
||||
text = self.read(path)
|
||||
if text is None:
|
||||
return []
|
||||
return [
|
||||
source_ref([(path, number)])
|
||||
for number, line in enumerate(text.splitlines(), 1)
|
||||
if re.search(r"\bsed\b.*\s-i\b", line) and target in line
|
||||
]
|
||||
|
||||
def romlists(
|
||||
self, preset: str, text: str, rompath: str, applied: list[tuple[str, int]]
|
||||
self, preset: str, text: str, rompath: str, applied: list[tuple[str, int]],
|
||||
evidence: dict[str, Any],
|
||||
) -> None:
|
||||
"""XRoar's `romlist NAME=a,b,@other`: the names tried for each ROM, in order."""
|
||||
"""XRoar's `romlist NAME=a,b,@other`: the names tried for each ROM, in order.
|
||||
|
||||
A list no XRoar machine or cartridge looks up is no read: coco1,
|
||||
coco1e, coco1e_ext, coco2, coco2_ext and coco2b are defined by XRoar
|
||||
(src/xroar.c:663-670) and named by nothing else.
|
||||
"""
|
||||
lists: dict[str, tuple[int, list[str]]] = {}
|
||||
for line_no, line in enumerate(text.splitlines(), 1):
|
||||
found = re.match(r"^romlist\s+([\w-]+)=(.*)$", line.strip())
|
||||
@@ -375,10 +408,12 @@ class Component:
|
||||
return list(dict.fromkeys(names))
|
||||
|
||||
for name, (line_no, _items) in lists.items():
|
||||
if name in UNREAD_ROMLISTS:
|
||||
continue
|
||||
self.record(
|
||||
"names_searched", expand(name, (name,)), [(preset, line_no)] + applied,
|
||||
slot=name, search_dir=rompath, passes_to=f"romlist {name}",
|
||||
fails_when_missing=False,
|
||||
fails_when_missing=False, **evidence,
|
||||
)
|
||||
|
||||
def read_launcher(self) -> None:
|
||||
@@ -480,6 +515,7 @@ def core_options(read: Read) -> list[Launcher]:
|
||||
]
|
||||
if not copied:
|
||||
raise LauncherPatternMissing(prepare_path, "the core options preset is never copied")
|
||||
target = _words(prepare.splitlines()[copied[0] - 1].strip())[-1]
|
||||
records = []
|
||||
for line_no, line in enumerate(text.splitlines(), 1):
|
||||
found = re.match(r'^([\w.-]+)\s*=\s*"([^"]*)"$', line.strip())
|
||||
@@ -489,6 +525,8 @@ def core_options(read: Read) -> list[Launcher]:
|
||||
records.append(Launcher(
|
||||
emulator=LIBRETRO_COMPONENT, build="libretro", kind="core_option", names=[value],
|
||||
passes_to=f"core option {key}", fails_when_missing=False,
|
||||
installs={"path": target, "source_ref": source_ref([(prepare_path, copied[0])])},
|
||||
kept_if_present=False, overrides=[],
|
||||
source_ref=source_ref([(CORE_OPTIONS, line_no), (prepare_path, copied[0])]),
|
||||
))
|
||||
if not records:
|
||||
|
||||
@@ -94,6 +94,11 @@ class Launcher:
|
||||
passes_to: str | None = None
|
||||
fails_when_missing: bool | str | None = None
|
||||
depends_on_option: str | None = None
|
||||
# For a record citing a config: where the platform's code puts it, whether
|
||||
# that leaves a file already there, and the launch code rewriting it.
|
||||
installs: dict[str, str] | None = None
|
||||
kept_if_present: bool | None = None
|
||||
overrides: list[str] | None = None
|
||||
lines: list[tuple[str, int]] = field(default_factory=list, repr=False)
|
||||
|
||||
def entry(self) -> dict[str, Any]:
|
||||
@@ -101,7 +106,8 @@ class Launcher:
|
||||
order = (
|
||||
"emulator", "package", "repo", "systems", "build", "kind", "slot",
|
||||
"names", "case_insensitive", "search_dir", "passes_to",
|
||||
"fails_when_missing", "depends_on_option", "source_ref",
|
||||
"fails_when_missing", "depends_on_option", "installs", "kept_if_present",
|
||||
"overrides", "source_ref",
|
||||
)
|
||||
return {key: getattr(self, key) for key in order if getattr(self, key) is not None}
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ from dataclasses import dataclass
|
||||
|
||||
try:
|
||||
from .configgen_launchers import Launcher
|
||||
from .shell_launchers import config_placement, evidence_fields
|
||||
from .shell_launchers import (
|
||||
LauncherPatternMissing,
|
||||
Link,
|
||||
@@ -30,6 +31,7 @@ try:
|
||||
)
|
||||
except ImportError:
|
||||
from configgen_launchers import Launcher
|
||||
from shell_launchers import config_placement, evidence_fields # type: ignore[no-redef]
|
||||
from shell_launchers import (
|
||||
LauncherPatternMissing,
|
||||
Link,
|
||||
@@ -46,6 +48,9 @@ DEVICES = f"{ROCKNIX}/devices"
|
||||
STANDALONE = f"{ROCKNIX}/packages/emulators/standalone"
|
||||
RETROARCH = f"{ROCKNIX}/packages/emulators/libretro/retroarch"
|
||||
BIOS_ROOT = "/storage/roms/bios"
|
||||
CONFIG_ROOT = "/storage/.config"
|
||||
# The first-boot step copying every package's /usr/config to /storage/.config.
|
||||
USERCONFIG = f"{ROCKNIX}/packages/sysutils/systemd/scripts/userconfig-setup"
|
||||
|
||||
Lines = list[tuple[str, set[int]]]
|
||||
|
||||
@@ -186,6 +191,38 @@ def bios_keys(tree: RepoTree, paths: list[str], root: str = BIOS_ROOT) -> list[t
|
||||
return keys
|
||||
|
||||
|
||||
def with_evidence(
|
||||
tree: RepoTree,
|
||||
record: Launcher,
|
||||
target: str,
|
||||
keys: list[str],
|
||||
start: Script | None = None,
|
||||
writers: tuple[str, ...] = (),
|
||||
source_name: str = "",
|
||||
) -> Launcher:
|
||||
"""A config record with the steps that put its file at ``target``.
|
||||
|
||||
The first boot copies /usr/config to /storage/.config, leaving a file
|
||||
already there. A start script can copy or generate it again, and its
|
||||
sed lines rewriting one of the record's keys are the overrides.
|
||||
"""
|
||||
setup = Script(USERCONFIG, tree.read(USERCONFIG))
|
||||
placements = [config_placement(setup, target, required=False, sources=("/usr/config/",))]
|
||||
if start is not None:
|
||||
placements.append(config_placement(
|
||||
start, target, keys, writers, source_name, required=False
|
||||
))
|
||||
fields = evidence_fields(placements)
|
||||
record.installs = fields["installs"]
|
||||
record.kept_if_present = fields["kept_if_present"]
|
||||
record.overrides = fields["overrides"]
|
||||
return record
|
||||
|
||||
|
||||
def _keys(value: FixedPaths) -> list[str]:
|
||||
return [f"[{section}] {key}" if section else key for section, key in value.keys]
|
||||
|
||||
|
||||
def config_records(
|
||||
tree: RepoTree,
|
||||
emulator: str,
|
||||
@@ -193,10 +230,17 @@ def config_records(
|
||||
file: str,
|
||||
passes_to_suffix: str = "",
|
||||
depends_on_option: str | None = None,
|
||||
target: str = "",
|
||||
start: Script | None = None,
|
||||
unread: Callable[[tuple[str, str]], bool] = lambda key: False,
|
||||
) -> list[Launcher]:
|
||||
"""fixed_name records for the bios paths of a config installed per device."""
|
||||
"""fixed_name records for the bios paths of a config installed per device.
|
||||
|
||||
``unread`` drops the keys the shipped configs leave the emulator
|
||||
reading no file from.
|
||||
"""
|
||||
configs = device_configs(tree, package, file)
|
||||
keys = bios_keys(tree, [c.path for c in configs])
|
||||
keys = [k for k in bios_keys(tree, [c.path for c in configs]) if not unread(k)]
|
||||
name = posixpath.basename(file)
|
||||
|
||||
def read(path: str, text: str) -> tuple[object, set[int]]:
|
||||
@@ -206,7 +250,8 @@ def config_records(
|
||||
for device, value, refs in per_device(tree, configs, f"{package}/package.mk", read):
|
||||
assert isinstance(value, FixedPaths)
|
||||
described = describe_keys(name, value.keys)
|
||||
records.append(
|
||||
records.append(with_evidence(
|
||||
tree,
|
||||
Launcher(
|
||||
emulator=emulator,
|
||||
build="standalone",
|
||||
@@ -219,8 +264,11 @@ def config_records(
|
||||
),
|
||||
device=device,
|
||||
depends_on_option=depends_on_option,
|
||||
)
|
||||
)
|
||||
),
|
||||
target or f"{CONFIG_ROOT}/{posixpath.basename(package)}/{name}",
|
||||
_keys(value),
|
||||
start,
|
||||
))
|
||||
return records
|
||||
|
||||
|
||||
@@ -241,7 +289,8 @@ def retroarch(tree: RepoTree) -> list[Launcher]:
|
||||
for device, value, refs in per_device(tree, configs, f"{RETROARCH}/package.mk", read):
|
||||
assert isinstance(value, tuple)
|
||||
values = dict(value)
|
||||
records.append(
|
||||
records.append(with_evidence(
|
||||
tree,
|
||||
Launcher(
|
||||
emulator="retroarch",
|
||||
build="libretro",
|
||||
@@ -251,8 +300,10 @@ def retroarch(tree: RepoTree) -> list[Launcher]:
|
||||
search_dir=values["system_directory"],
|
||||
passes_to="retroarch.cfg " + ", ".join(f'{k} = "{v}"' for k, v in value),
|
||||
device=device,
|
||||
)
|
||||
)
|
||||
),
|
||||
f"{CONFIG_ROOT}/retroarch/retroarch.cfg",
|
||||
[k for k, _ in value],
|
||||
))
|
||||
return records
|
||||
|
||||
|
||||
@@ -275,6 +326,19 @@ def amiberry(tree: RepoTree) -> list[Launcher]:
|
||||
)
|
||||
used: set[int] = {test_line, then_line, else_line, other_line, sed_line}
|
||||
root = script.expand("${" + sed.group(2) + "}", sed_line, used)
|
||||
written = re.search(r'"?(\$\{?\w+\}?)"?\s*$', script.lines[then_line - 1])
|
||||
if written is None:
|
||||
raise script.missing("destination of the config copy")
|
||||
target = script.expand(written.group(1), then_line, set())
|
||||
# A WHDLoad archive is booted by --autoload, which builds its own setup
|
||||
# (kickstart included) over the config: the record holds for floppies.
|
||||
autoload = [n for n, line in script.code() if re.search(r"amiberry .*--autoload", line)]
|
||||
if not autoload:
|
||||
raise script.missing("WHDLoad boot with --autoload")
|
||||
content = (
|
||||
"content not booted with --autoload, a WHDLoad .lha or .zip "
|
||||
f"({posixpath.basename(script.path)}:{', '.join(map(str, autoload))})"
|
||||
)
|
||||
records = []
|
||||
for config, condition in (
|
||||
(then.group(1), f"game name matches {test.group(1)}"),
|
||||
@@ -290,7 +354,8 @@ def amiberry(tree: RepoTree) -> list[Launcher]:
|
||||
raise LauncherPatternMissing(path, f"key naming a file under {sed.group(1)}")
|
||||
value, lines = fixed_paths(found, keys, path)
|
||||
slot = re.fullmatch(r"Amiga(\w+)-default\.uae", config)
|
||||
records.append(
|
||||
records.append(with_evidence(
|
||||
tree,
|
||||
Launcher(
|
||||
emulator="amiberry",
|
||||
build="standalone",
|
||||
@@ -300,9 +365,13 @@ def amiberry(tree: RepoTree) -> list[Launcher]:
|
||||
slot=slot.group(1) if slot else config,
|
||||
search_dir=value.search_dir,
|
||||
passes_to=f"{describe_keys(config, value.keys)} (amiberry -f)",
|
||||
depends_on_option=condition,
|
||||
)
|
||||
)
|
||||
depends_on_option=f"{condition}, {content}",
|
||||
),
|
||||
target,
|
||||
_keys(value),
|
||||
script,
|
||||
source_name=config,
|
||||
))
|
||||
mk = Script(f"{package}/package.mk", tree.read(f"{package}/package.mk"))
|
||||
links = mk.links(BIOS_ROOT, fixed={"INSTALL": ""})
|
||||
if not links:
|
||||
@@ -375,7 +444,11 @@ def hatari(tree: RepoTree) -> list[Launcher]:
|
||||
if not keys:
|
||||
raise LauncherPatternMissing(path, f"key naming a file under {BIOS_ROOT}")
|
||||
value, lines = fixed_paths(found, keys, path)
|
||||
return [
|
||||
copied = re.search(r'"?(\$\{?\w+\}?)"?\s*$', script.lines[copy_line - 1])
|
||||
if copied is None:
|
||||
raise script.missing("destination of the default config copy")
|
||||
return [with_evidence(
|
||||
tree,
|
||||
Launcher(
|
||||
emulator="hatari",
|
||||
build="standalone",
|
||||
@@ -384,8 +457,12 @@ def hatari(tree: RepoTree) -> list[Launcher]:
|
||||
source_ref=source_ref([(path, lines), (script.path, {copy_line, run_line})]),
|
||||
search_dir=value.search_dir,
|
||||
passes_to=f"{describe_keys(copy.group(1), value.keys)} (--configfile)",
|
||||
)
|
||||
]
|
||||
),
|
||||
script.expand(copied.group(1), copy_line, set()),
|
||||
_keys(value),
|
||||
script,
|
||||
source_name=copy.group(1),
|
||||
)]
|
||||
|
||||
|
||||
def melonds(tree: RepoTree) -> list[Launcher]:
|
||||
@@ -406,7 +483,22 @@ def melonds(tree: RepoTree) -> list[Launcher]:
|
||||
rf"^\s*{test.group(1)}=\$\(get_setting (\w+) ", f"setting read into {test.group(1)}"
|
||||
)
|
||||
condition = f"{setting.group(1)} = {test.group(2)} sets ExternalBIOSEnable=1, otherwise 0"
|
||||
records = config_records(tree, "melonds", package, "melonDS.ini", depends_on_option=condition)
|
||||
configs = [c.path for c in device_configs(tree, package, "melonDS.ini")]
|
||||
# melonDS opens the DSi BIOS and firmware keys only under
|
||||
# DSiExternalBIOSEnable, off unless a config sets it.
|
||||
dsi_external = any(
|
||||
s.key == "DSiExternalBIOSEnable" and s.value not in ("", "0")
|
||||
for path in configs for s in settings(tree.read(path))
|
||||
)
|
||||
|
||||
def unread(key: tuple[str, str]) -> bool:
|
||||
return not dsi_external and key[1] in ("DSiBIOS9Path", "DSiBIOS7Path", "DSiFirmwarePath")
|
||||
|
||||
conf_line, conf = script.find(r'^\s*CONF_DIR="([^"]+)"', "CONF_DIR")
|
||||
records = config_records(
|
||||
tree, "melonds", package, "melonDS.ini", depends_on_option=condition,
|
||||
target=f"{conf.group(1)}/melonDS.ini", start=script, unread=unread,
|
||||
)
|
||||
for record in records:
|
||||
record.source_ref += (
|
||||
f", {source_ref([(script.path, {setting_line, test_line, enable_line})])}"
|
||||
@@ -420,7 +512,10 @@ def dsperate(tree: RepoTree) -> list[Launcher]:
|
||||
f"{package}/scripts/start_dsperate.sh", tree.read(f"{package}/scripts/start_dsperate.sh")
|
||||
)
|
||||
run_line, _ = script.find(r"/usr/bin/dsperate --config ", "dsperate --config")
|
||||
records = config_records(tree, "dsperate", package, "dsperate.ini", " (--config)")
|
||||
records = config_records(
|
||||
tree, "dsperate", package, "dsperate.ini", " (--config)",
|
||||
target=script.expand("${DSPERATE_INI}", run_line, set()), start=script,
|
||||
)
|
||||
for record in records:
|
||||
record.source_ref += f", {source_ref([(script.path, {run_line})])}"
|
||||
return records
|
||||
@@ -434,7 +529,10 @@ def xemu(tree: RepoTree) -> list[Launcher]:
|
||||
copy_line, _ = script.find(
|
||||
r'cp -r "\$\{SOURCE_DIR\}/\$\{XEMU_INI\}"', "xemu.toml copy at launch"
|
||||
)
|
||||
records = config_records(tree, "xemu", package, "xemu.toml", " (copied at each launch)")
|
||||
records = config_records(
|
||||
tree, "xemu", package, "xemu.toml", " (copied at each launch)",
|
||||
target=script.expand("${CONF_DIR}/${XEMU_INI}", copy_line, set()), start=script,
|
||||
)
|
||||
for record in records:
|
||||
record.source_ref += f", {source_ref([(script.path, {copy_line})])}"
|
||||
return records
|
||||
@@ -452,7 +550,9 @@ def nanoboyadvance(tree: RepoTree) -> list[Launcher]:
|
||||
mk_line, _ = Script(mk_path, tree.read(mk_path)).find(
|
||||
r"config/config\.toml", "config.toml install"
|
||||
)
|
||||
return [
|
||||
start_path = f"{package}/scripts/start_nanoboyadvance.sh"
|
||||
return [with_evidence(
|
||||
tree,
|
||||
Launcher(
|
||||
emulator="nanoboyadvance",
|
||||
build="standalone",
|
||||
@@ -461,8 +561,14 @@ def nanoboyadvance(tree: RepoTree) -> list[Launcher]:
|
||||
source_ref=source_ref([(path, lines), (mk_path, {mk_line})]),
|
||||
search_dir=value.search_dir,
|
||||
passes_to=describe_keys("config.toml", value.keys),
|
||||
)
|
||||
]
|
||||
# NanoBoyAdvance exits when its BIOS cannot be read
|
||||
# (src/platform/sdl/main.cpp:180-185 at the build ROCKNIX ships).
|
||||
fails_when_missing=True,
|
||||
),
|
||||
f"{CONFIG_ROOT}/nanoboyadvance/config.toml",
|
||||
_keys(value),
|
||||
Script(start_path, tree.read(start_path)),
|
||||
)]
|
||||
|
||||
|
||||
def mednafen(tree: RepoTree) -> list[Launcher]:
|
||||
@@ -486,7 +592,9 @@ def mednafen(tree: RepoTree) -> list[Launcher]:
|
||||
modules: dict[str, list[Setting]] = {}
|
||||
for setting in firmware:
|
||||
modules.setdefault(setting.key.split(".", 1)[0], []).append(setting)
|
||||
return [
|
||||
home = script.expand("${MEDNAFEN_HOME}", gen_line, set())
|
||||
return [with_evidence(
|
||||
tree,
|
||||
Launcher(
|
||||
emulator="mednafen",
|
||||
build="standalone",
|
||||
@@ -501,9 +609,12 @@ def mednafen(tree: RepoTree) -> list[Launcher]:
|
||||
slot=module,
|
||||
search_dir=folder.value,
|
||||
passes_to="mednafen.cfg " + ", ".join(s.key for s in group),
|
||||
)
|
||||
for module, group in modules.items()
|
||||
]
|
||||
),
|
||||
f"{home}/mednafen.cfg",
|
||||
[s.key for s in group],
|
||||
script,
|
||||
writers=("mednafen_gen_config.sh",),
|
||||
) for module, group in modules.items()]
|
||||
|
||||
|
||||
def yabasanshiro(tree: RepoTree) -> list[Launcher]:
|
||||
@@ -549,6 +660,8 @@ def directory_records(
|
||||
file: str,
|
||||
folder_key: tuple[str, str],
|
||||
file_keys: tuple[tuple[str, str], ...],
|
||||
target: str = "",
|
||||
start: str = "",
|
||||
) -> list[Launcher]:
|
||||
"""scans_dir records: the config hands a directory and leaves the file keys empty."""
|
||||
configs = device_configs(tree, package, file)
|
||||
@@ -568,7 +681,8 @@ def directory_records(
|
||||
records = []
|
||||
for device, folder, refs in per_device(tree, configs, f"{package}/package.mk", read):
|
||||
passes = f"{name} [{folder_key[0]}] {folder_key[1]} = {folder}, {unset} unset"
|
||||
records.append(
|
||||
records.append(with_evidence(
|
||||
tree,
|
||||
Launcher(
|
||||
emulator=emulator,
|
||||
build="standalone",
|
||||
@@ -578,8 +692,11 @@ def directory_records(
|
||||
search_dir=folder,
|
||||
passes_to=passes,
|
||||
device=device,
|
||||
)
|
||||
)
|
||||
),
|
||||
target,
|
||||
[f"[{s}] {k}" for s, k in (folder_key, *file_keys)],
|
||||
Script(start, tree.read(start)) if start else None,
|
||||
))
|
||||
return records
|
||||
|
||||
|
||||
@@ -591,6 +708,8 @@ def duckstation(tree: RepoTree) -> list[Launcher]:
|
||||
"settings.ini",
|
||||
("BIOS", "SearchDirectory"),
|
||||
(("BIOS", "PathNTSCU"), ("BIOS", "PathNTSCJ"), ("BIOS", "PathPAL")),
|
||||
f"{CONFIG_ROOT}/duckstation/settings.ini",
|
||||
f"{STANDALONE}/duckstation-sa/scripts/start_duckstation.sh",
|
||||
)
|
||||
|
||||
|
||||
@@ -602,6 +721,8 @@ def armsx2(tree: RepoTree) -> list[Launcher]:
|
||||
"ARMSX2/inis/PCSX2.ini",
|
||||
("Folders", "Bios"),
|
||||
(("Filenames", "BIOS"),),
|
||||
f"{CONFIG_ROOT}/ARMSX2/inis/PCSX2.ini",
|
||||
f"{STANDALONE}/armsx2-sa/scripts/start_armsx2.sh",
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -105,22 +105,6 @@ HATARI_CFG = text(
|
||||
"""
|
||||
)
|
||||
|
||||
ATARI800_CFG = text(
|
||||
"""
|
||||
Atari 800 Emulator, Version 3.1.0
|
||||
ROM_OS_A_NTSC=
|
||||
ROM_OS_A_PAL=/storage/roms/bios/ATARIOSA.ROM
|
||||
ROM_5200=/storage/roms/bios/5200.rom
|
||||
"""
|
||||
)
|
||||
|
||||
ATARI800_PATCH = text(
|
||||
"""
|
||||
+ LDFLAGS += -static-libgcc
|
||||
+ CFLAGS += -DDEFAULT_CFG_NAME="\\"/storage/.config/distribution/configs/atari800.cfg\\""
|
||||
"""
|
||||
)
|
||||
|
||||
AMIBERRY_MK = text(
|
||||
"""
|
||||
makeinstall_target() {
|
||||
@@ -141,6 +125,17 @@ AMIBERRY_SH = text(
|
||||
cp $AMIBERRY_CONFIG_DIR/AmigaA500-default.uae "$AMIBERRY_TMP_CONFIG"
|
||||
fi
|
||||
}
|
||||
amiberry -f "$AMIBERRY_TMP_CONFIG" --autoload "$1" >> $AMIBERRY_LOG 2>&1
|
||||
"""
|
||||
)
|
||||
|
||||
USERCONFIG = text(
|
||||
"""
|
||||
#!/bin/bash
|
||||
if [ ! -e "/storage/.configured" ]
|
||||
then
|
||||
rsync -a --ignore-existing --exclude=es_systems.cfg /usr/config/* /storage/.config/ || exit 1
|
||||
fi
|
||||
"""
|
||||
)
|
||||
|
||||
@@ -195,8 +190,7 @@ def tree(**overrides: str) -> dict[str, str]:
|
||||
al.SCRIPTS["piemu"]: PIEMU,
|
||||
al.SCRIPTS["HATARISA"]: HATARI_SH,
|
||||
al.HATARI_CONFIG: HATARI_CFG,
|
||||
al.ATARI800_CONFIG: ATARI800_CFG,
|
||||
al.ATARI800_PATCH: ATARI800_PATCH,
|
||||
al.USERCONFIG: USERCONFIG,
|
||||
al.AMIBERRY_PACKAGE: AMIBERRY_MK,
|
||||
al.SCRIPTS["AMIBERRY"]: AMIBERRY_SH,
|
||||
f"{al.AMIBERRY_CONFIGS}/AmigaA1200-default.uae": uae("kick40068.A1200.rom"),
|
||||
@@ -218,6 +212,13 @@ class Frontends(unittest.TestCase):
|
||||
(record,) = al.retroarch(read())
|
||||
self.assertEqual(record.search_dir, "~/roms/bios")
|
||||
self.assertEqual(record.source_ref, f"{al.RETROARCH_CFG}:2")
|
||||
# The first boot copies /usr/config and leaves a file already there.
|
||||
self.assertEqual(record.installs, {
|
||||
"path": "/storage/.config/retroarch/retroarch.cfg",
|
||||
"source_ref": f"{al.USERCONFIG}:4",
|
||||
})
|
||||
self.assertIs(record.kept_if_present, True)
|
||||
self.assertEqual(record.overrides, [])
|
||||
|
||||
def test_retrorun_directory(self):
|
||||
(record,) = al.retrorun(read())
|
||||
@@ -266,6 +267,9 @@ class Standalone(unittest.TestCase):
|
||||
record.source_ref,
|
||||
f"{al.RUNEMU}:3, {al.SCRIPTS['HATARISA']}:3-4, {al.HATARI_CONFIG}:2",
|
||||
)
|
||||
# Copied over at each launch: nothing the user edits survives.
|
||||
self.assertEqual(record.installs["source_ref"], f"{al.SCRIPTS['HATARISA']}:3")
|
||||
self.assertIs(record.kept_if_present, False)
|
||||
|
||||
def test_amiberry_link_and_one_kickstart_per_config(self):
|
||||
link, a1200, a500 = al.amiberry(read(), al.Runemu(read()))
|
||||
@@ -273,7 +277,11 @@ class Standalone(unittest.TestCase):
|
||||
self.assertEqual(link.passes_to, "/usr/config/amiberry/kickstarts is a symlink to it")
|
||||
self.assertEqual((a1200.slot, a1200.names), ("A1200", ["kick40068.A1200.rom"]))
|
||||
self.assertEqual((a500.slot, a500.names), ("A500", ["kick34005.A500.rom"]))
|
||||
self.assertEqual(a500.depends_on_option, f"not ({a1200.depends_on_option})")
|
||||
self.assertTrue(a500.depends_on_option.startswith("not ("))
|
||||
# A WHDLoad boot replaces the setup the config gives.
|
||||
self.assertIn("--autoload", a1200.depends_on_option)
|
||||
self.assertEqual(a1200.installs["source_ref"], f"{al.SCRIPTS['AMIBERRY']}:5")
|
||||
self.assertEqual(a500.installs["source_ref"], f"{al.SCRIPTS['AMIBERRY']}:7")
|
||||
|
||||
def test_a_table_running_another_script_raises(self):
|
||||
broken = RUNEMU.replace("/usr/bin/yabasanshiro.sh", "/usr/bin/yaba.sh")
|
||||
@@ -287,15 +295,9 @@ class Standalone(unittest.TestCase):
|
||||
|
||||
|
||||
class Cores(unittest.TestCase):
|
||||
def test_atari800_built_to_read_the_shipped_config(self):
|
||||
(record,) = al.atari800(read())
|
||||
self.assertEqual(record.names, ["ATARIOSA.ROM", "5200.rom"])
|
||||
self.assertEqual(record.source_ref, f"{al.ATARI800_PATCH}:2, {al.ATARI800_CONFIG}:3-4")
|
||||
|
||||
def test_atari800_built_for_another_config_raises(self):
|
||||
broken = ATARI800_PATCH.replace("atari800.cfg", "other.cfg")
|
||||
with self.assertRaises(LauncherShapeError):
|
||||
al.atari800(read(**{al.ATARI800_PATCH: broken}))
|
||||
def test_atari800_config_is_no_record(self):
|
||||
# The core reads atari800.cfg only under an option that is off.
|
||||
self.assertFalse(any(r["emulator"] == "atari800" for r in al.extract_launchers(read())))
|
||||
|
||||
def test_scummvm_paths_written_under_bios(self):
|
||||
theme, extra = al.scummvm(read())
|
||||
@@ -319,7 +321,7 @@ class Cores(unittest.TestCase):
|
||||
def test_every_extractor_runs_on_the_fixture(self):
|
||||
records = al.extract_launchers(read())
|
||||
# One easyrpg runtime in the fixture, two at the pinned commit.
|
||||
self.assertEqual(len(records), 16)
|
||||
self.assertEqual(len(records), 15)
|
||||
|
||||
|
||||
class PlatformFile(unittest.TestCase):
|
||||
|
||||
@@ -40,6 +40,9 @@ ARES_SH = text(
|
||||
UserBIOSPath='/home/deck/Emulation/bios/'
|
||||
sed -i "s|$UserBIOSPath|${biosPath}\\/|g" "$ares_configFile"
|
||||
}
|
||||
ares_init(){
|
||||
configEmuFP "${ares_emuName}" "${ares_emuPath}" "true"
|
||||
}
|
||||
"""
|
||||
)
|
||||
|
||||
@@ -87,6 +90,9 @@ MELONDS_SH = text(
|
||||
buttonA='Joy_A='
|
||||
changeLine "$buttonA" "$buttonA""0" "${melonDS_configFile}"
|
||||
}
|
||||
melonDS_update(){
|
||||
configEmuFP "${melonDS_emuName}" "${melonDS_emuPath}"
|
||||
}
|
||||
"""
|
||||
)
|
||||
|
||||
@@ -103,6 +109,7 @@ MELONDS_TOML = text(
|
||||
LastROMFolder = "/run/media/mmcblk0p1/Emulation/roms/ds"
|
||||
[Emu]
|
||||
ExternalBIOSEnable = false
|
||||
ConsoleType = 0
|
||||
[DS]
|
||||
FirmwarePath = "/run/media/mmcblk0p1/Emulation/bios/firmware.bin"
|
||||
BIOS7Path = "/run/media/mmcblk0p1/Emulation/bios/bios7.bin"
|
||||
@@ -206,8 +213,23 @@ SHADPS4_SH = text(
|
||||
)
|
||||
|
||||
|
||||
CONFIG_EMU_FP = text(
|
||||
"""
|
||||
configEmuFP(){
|
||||
if [[ $overwrite == 'true' ]]; then
|
||||
overwrite="--backup --suffix=.bak"
|
||||
else
|
||||
overwrite="--ignore-existing"
|
||||
fi
|
||||
rsync -avhp --mkpath "$emudeckBackend/configs/${ID}" "$HOME/.var/app/" $overwrite
|
||||
}
|
||||
"""
|
||||
)
|
||||
|
||||
|
||||
def tree(**scripts: str) -> RepoTree:
|
||||
files = {f"{S}/{name}": body for name, body in scripts.items()}
|
||||
files[el.CONFIG_EMU_FP] = CONFIG_EMU_FP
|
||||
files[f"{el.CONFIGS}/dev.ares.ares/data/ares/settings.bml"] = ARES_BML
|
||||
files[f"{el.CONFIGS}/net.kuribo64.melonDS/config/melonDS/melonDS.ini"] = MELONDS_INI
|
||||
files[f"{el.CONFIGS}/net.kuribo64.melonDS/config/melonDS/melonDS.toml"] = MELONDS_TOML
|
||||
@@ -253,8 +275,17 @@ class WrittenIntoTheConfig(unittest.TestCase):
|
||||
self.assertEqual(
|
||||
toml["passes_to"], "melonDS.toml [DS] FirmwarePath, BIOS7Path [DSi] NANDPath"
|
||||
)
|
||||
# The DS keys wait for ExternalBIOSEnable, the DSi keys for a DSi.
|
||||
self.assertEqual(
|
||||
toml["depends_on_option"], "ExternalBIOSEnable = false in the shipped melonDS.toml"
|
||||
toml["depends_on_option"],
|
||||
"[DS] keys: ExternalBIOSEnable = true, false in the shipped melonDS.toml; "
|
||||
"[DSi] keys: ConsoleType = 1, 0 in the shipped melonDS.toml",
|
||||
)
|
||||
# configEmuFP's update call passes --ignore-existing.
|
||||
self.assertIs(toml["kept_if_present"], True)
|
||||
self.assertEqual(
|
||||
toml["installs"]["path"],
|
||||
"${HOME}/.var/app/net.kuribo64.melonDS/config/melonDS/melonDS.toml",
|
||||
)
|
||||
|
||||
def test_a_config_the_setters_rewrite_keeps_their_values(self):
|
||||
|
||||
@@ -228,6 +228,9 @@ DUCKSTATION_SH = text(
|
||||
"""
|
||||
CONFIG_DIR="/emuelec/configs/duckstation"
|
||||
duckstation-nogui -fullscreen -settings "${CONFIG_DIR}/settings.ini" -- "${1}"
|
||||
if [ ! -d "${CONFIG_DIR}" ]; then
|
||||
cp -rf /usr/config/emuelec/configs/duckstation/* "${CONFIG_DIR}"
|
||||
fi
|
||||
"""
|
||||
)
|
||||
|
||||
@@ -319,6 +322,9 @@ ADVMAME_SH = text(
|
||||
sed -i "s|/roms/arcade|/roms/mame|g" ${CONFIG_DIR}/advmame.rc
|
||||
fi
|
||||
SDL_AUDIODRIVER=alsa advmame ${ARG} -quiet
|
||||
if [ ! -d "${CONFIG_DIR}" ]; then
|
||||
cp -rf /usr/config/emuelec/configs/advmame/* "${CONFIG_DIR}/"
|
||||
fi
|
||||
"""
|
||||
)
|
||||
|
||||
@@ -480,24 +486,12 @@ class LibretroRecords(unittest.TestCase):
|
||||
self.assertEqual(jar["passes_to"], "${HOME}/roms/bios")
|
||||
self.assertEqual(jar["depends_on_option"], "/storage/roms/bios/jdk/eeversion exists")
|
||||
|
||||
def test_mame_copies_its_own_files_and_reads_only_path_options(self):
|
||||
def test_mame_copies_its_own_files_and_hands_no_folder(self):
|
||||
# The core passes no path option and reads no mame.ini: only the
|
||||
# copies are the launcher's.
|
||||
found = records(el.mame)
|
||||
copies = [r for r in found if r["kind"] == "copies"]
|
||||
self.assertEqual([r["names"] for r in copies], [["fm*"], ["mame*"]])
|
||||
folders = [(r["passes_to"], r["search_dir"]) for r in found if r["kind"] == "passes_path"]
|
||||
self.assertEqual(
|
||||
folders,
|
||||
[
|
||||
("mame.ini rompath", "/storage/roms/bios/mame/bios"),
|
||||
("mame.ini samplepath", "/storage/roms/bios/mame/samples"),
|
||||
],
|
||||
)
|
||||
self.assertTrue(all(r["depends_on_option"] == "mame_read_config = enabled"
|
||||
for r in found if r["kind"] == "passes_path"))
|
||||
|
||||
def test_mame_without_the_read_config_option_raises(self):
|
||||
with self.assertRaises(LauncherPatternMissing):
|
||||
records(el.mame, **{f"{el.LIBRETRO}/mame/config/MAME/MAME.opt": "x = 1\n"})
|
||||
self.assertEqual([r["kind"] for r in found], ["copies", "copies"])
|
||||
self.assertEqual([r["names"] for r in found], [["fm*"], ["mame*"]])
|
||||
|
||||
|
||||
class StandaloneRecords(unittest.TestCase):
|
||||
@@ -546,6 +540,12 @@ class StandaloneRecords(unittest.TestCase):
|
||||
(record,) = records(el.duckstation)
|
||||
self.assertEqual((record["kind"], record["search_dir"]), ("scans_dir", "/storage/roms/bios"))
|
||||
|
||||
def test_duckstation_config_is_kept_when_present(self):
|
||||
(record,) = records(el.duckstation)
|
||||
self.assertEqual(record["installs"]["path"], "/emuelec/configs/duckstation/settings.ini")
|
||||
self.assertIs(record["kept_if_present"], True)
|
||||
self.assertEqual(record["overrides"], [])
|
||||
|
||||
def test_duckstation_with_a_fixed_bios_path_raises(self):
|
||||
changed = DUCKSTATION_INI.replace("PathPAL =", "PathPAL = /storage/roms/bios/scph5502.bin")
|
||||
with self.assertRaises(LauncherPatternMissing):
|
||||
@@ -631,7 +631,8 @@ class StandaloneRecords(unittest.TestCase):
|
||||
|
||||
def test_every_extractor_runs_on_the_fixtures(self):
|
||||
found = el.extract_launchers(tree())
|
||||
self.assertEqual(len(found), 28)
|
||||
# The two mame.ini folders are no longer records.
|
||||
self.assertEqual(len(found), 26)
|
||||
|
||||
|
||||
class Revision(unittest.TestCase):
|
||||
|
||||
@@ -85,13 +85,14 @@ MELONDS_SH = text(
|
||||
sed -i '/^ExternalBIOSEnable=/c\\ExternalBIOSEnable=0' /storage/.config/melonDS/melonDS.ini
|
||||
fi
|
||||
fi
|
||||
CONF_DIR="/storage/.config/melonDS"
|
||||
"""
|
||||
)
|
||||
|
||||
|
||||
def melonds_tree() -> RepoTree:
|
||||
pkg = f"{SA}/melonds-sa"
|
||||
return RepoTree.from_files(
|
||||
return rocknix_tree(
|
||||
{
|
||||
**devices("AMD64", "H700", "RK3576", "S922X"),
|
||||
f"{pkg}/package.mk": MELONDS_MK,
|
||||
@@ -148,6 +149,7 @@ AMIBERRY_SH = text(
|
||||
cp -rf /usr/config/amiberry ${AMIBERRY_DIR}
|
||||
fi
|
||||
cd ${AMIBERRY_DIR}
|
||||
amiberry -f "${AMIBERRY_TMP_CONFIG}" --autoload "$1" >> ${AMIBERRY_LOG} 2>&1
|
||||
"""
|
||||
)
|
||||
|
||||
@@ -291,6 +293,22 @@ FLYCAST_SH = text(
|
||||
)
|
||||
|
||||
|
||||
USERCONFIG = text(
|
||||
"""
|
||||
#!/bin/bash
|
||||
if [ ! -e "/storage/.configured" ]
|
||||
then
|
||||
rsync -a --ignore-existing --exclude={es_features.cfg,es_systems.cfg} /usr/config/* /storage/.config/ >/var/log/configure.log 2>&1
|
||||
fi
|
||||
"""
|
||||
)
|
||||
|
||||
|
||||
def rocknix_tree(files: dict[str, str], links: dict[str, str] | None = None) -> RepoTree:
|
||||
"""A ROCKNIX tree holding the first-boot copy every config record cites."""
|
||||
return RepoTree.from_files({rl.USERCONFIG: USERCONFIG, **files}, links)
|
||||
|
||||
|
||||
def by(records: list[dict], emulator: str) -> list[dict]:
|
||||
return [r for r in records if r["emulator"] == emulator]
|
||||
|
||||
@@ -302,23 +320,26 @@ class ConfigsPerDevice(unittest.TestCase):
|
||||
empty, named = records
|
||||
self.assertEqual(empty["names"], [])
|
||||
self.assertTrue(empty["passes_to"].endswith("DSiNANDPath left empty"))
|
||||
# melonDS opens the DSi BIOS and firmware keys only under
|
||||
# DSiExternalBIOSEnable, which no shipped config sets.
|
||||
self.assertEqual(
|
||||
named["names"],
|
||||
[
|
||||
"bios9.bin",
|
||||
"bios7.bin",
|
||||
"firmware.bin",
|
||||
"dsi_bios9.bin",
|
||||
"dsi_bios7.bin",
|
||||
"dsi_firmware.bin",
|
||||
"dsi_nand.bin",
|
||||
],
|
||||
named["names"], ["bios9.bin", "bios7.bin", "firmware.bin", "dsi_nand.bin"]
|
||||
)
|
||||
self.assertEqual(named["search_dir"], "/storage/roms/bios")
|
||||
self.assertEqual(named["installs"]["path"], "/storage/.config/melonDS/melonDS.ini")
|
||||
self.assertIs(named["kept_if_present"], True)
|
||||
self.assertEqual(named["overrides"], [])
|
||||
|
||||
def test_a_config_setting_the_dsi_switch_keeps_the_dsi_keys(self):
|
||||
tree = melonds_tree()
|
||||
path = f"{SA}/melonds-sa/config/S922X/melonDS.ini"
|
||||
tree._texts[path] = tree.read(path) + "DSiExternalBIOSEnable=1\n"
|
||||
named = rl.melonds(tree)[1].entry()
|
||||
self.assertIn("dsi_bios9.bin", named["names"])
|
||||
|
||||
def test_a_linked_device_directory_reads_its_target(self):
|
||||
named = rl.melonds(melonds_tree())[1].entry()
|
||||
self.assertIn(f"{SA}/melonds-sa/config/InputPlumber/melonDS.ini:2-8", named["source_ref"])
|
||||
self.assertIn(f"{SA}/melonds-sa/config/InputPlumber/melonDS.ini:2-4, 8", named["source_ref"])
|
||||
self.assertNotIn("config/RK3576", named["source_ref"])
|
||||
|
||||
def test_the_external_bios_switch_is_the_option(self):
|
||||
@@ -330,11 +351,14 @@ class ConfigsPerDevice(unittest.TestCase):
|
||||
|
||||
def test_identical_configs_give_one_record_without_device(self):
|
||||
pkg = f"{SA}/dsperate-sa"
|
||||
tree = RepoTree.from_files(
|
||||
tree = rocknix_tree(
|
||||
{
|
||||
**devices("H700", "RK3576", "S922X"),
|
||||
f"{pkg}/package.mk": DSPERATE_MK,
|
||||
f"{pkg}/scripts/start_dsperate.sh": '${EMUPERF} /usr/bin/dsperate --config "${DSPERATE_INI}" "${ROM}"\n',
|
||||
f"{pkg}/scripts/start_dsperate.sh": (
|
||||
'${EMUPERF} /usr/bin/dsperate --config "${DSPERATE_INI}" "${ROM}"\n'
|
||||
'DSPERATE_INI="/storage/.config/dsperate/dsperate.ini"\n'
|
||||
),
|
||||
f"{pkg}/config/H700/dsperate.ini": DSPERATE_INI,
|
||||
f"{pkg}/config/InputPlumber/dsperate.ini": DSPERATE_INI,
|
||||
f"{pkg}/config/S922X/dsperate.ini": DSPERATE_INI,
|
||||
@@ -352,10 +376,11 @@ class ConfigsPerDevice(unittest.TestCase):
|
||||
|
||||
def test_an_absent_key_and_an_empty_one_hand_over_the_same(self):
|
||||
pkg = f"{SA}/duckstation-sa"
|
||||
tree = RepoTree.from_files(
|
||||
tree = rocknix_tree(
|
||||
{
|
||||
**devices("AMD64", "S922X"),
|
||||
f"{pkg}/package.mk": DUCKSTATION_MK,
|
||||
f"{pkg}/scripts/start_duckstation.sh": "#!/bin/bash\n",
|
||||
f"{pkg}/config/AMD64/settings.ini": "[BIOS]\nSearchDirectory = /storage/roms/bios\n",
|
||||
f"{pkg}/config/S922X/settings.ini": text(
|
||||
"""
|
||||
@@ -375,10 +400,11 @@ class ConfigsPerDevice(unittest.TestCase):
|
||||
|
||||
def test_a_bios_written_into_a_path_key_is_an_unknown_shape(self):
|
||||
pkg = f"{SA}/duckstation-sa"
|
||||
tree = RepoTree.from_files(
|
||||
tree = rocknix_tree(
|
||||
{
|
||||
**devices("S922X"),
|
||||
f"{pkg}/package.mk": DUCKSTATION_MK,
|
||||
f"{pkg}/scripts/start_duckstation.sh": "#!/bin/bash\n",
|
||||
f"{pkg}/config/S922X/settings.ini": "[BIOS]\nSearchDirectory = /storage/roms/bios\nPathNTSCU = scph5501.bin\n",
|
||||
}
|
||||
)
|
||||
@@ -387,7 +413,7 @@ class ConfigsPerDevice(unittest.TestCase):
|
||||
|
||||
def test_a_package_without_a_device_copy_raises(self):
|
||||
pkg = f"{SA}/duckstation-sa"
|
||||
tree = RepoTree.from_files(
|
||||
tree = rocknix_tree(
|
||||
{
|
||||
**devices("S922X"),
|
||||
f"{pkg}/package.mk": "makeinstall_target() {\n true\n}\n",
|
||||
@@ -402,7 +428,7 @@ class NamesTheConfigsFix(unittest.TestCase):
|
||||
def test_amiberry_machine_follows_the_game_name(self):
|
||||
pkg = f"{SA}/amiberry"
|
||||
uae = "amiberry.rom_path=/storage/.config/amiberry/kickstarts/\nkickstart_rom_file=@BIOS_PATH@/{}\nkickstart_ext_rom_file=\n"
|
||||
tree = RepoTree.from_files(
|
||||
tree = rocknix_tree(
|
||||
{
|
||||
f"{pkg}/scripts/start_amiberry.sh": AMIBERRY_SH,
|
||||
f"{pkg}/package.mk": AMIBERRY_MK,
|
||||
@@ -412,9 +438,15 @@ class NamesTheConfigsFix(unittest.TestCase):
|
||||
)
|
||||
a1200, a500, link, entered, copied = (r.entry() for r in rl.amiberry(tree))
|
||||
self.assertEqual((a1200["slot"], a1200["names"]), ("A1200", ["kick40068.A1200.rom"]))
|
||||
self.assertEqual(a1200["depends_on_option"], "game name matches AGA|CD32")
|
||||
self.assertEqual(
|
||||
a1200["depends_on_option"],
|
||||
"game name matches AGA|CD32, content not booted with --autoload, "
|
||||
"a WHDLoad .lha or .zip (start_amiberry.sh:17)",
|
||||
)
|
||||
self.assertEqual(a1200["installs"]["path"], "${AMIBERRY_TMP_CONFIG}")
|
||||
self.assertIs(a1200["kept_if_present"], False)
|
||||
self.assertEqual((a500["slot"], a500["names"]), ("A500", ["kick34005.A500.rom"]))
|
||||
self.assertEqual(a500["depends_on_option"], "game name does not match AGA|CD32")
|
||||
self.assertTrue(a500["depends_on_option"].startswith("game name does not match AGA|CD32"))
|
||||
self.assertEqual(a500["search_dir"], "/storage/roms/bios")
|
||||
self.assertEqual(
|
||||
a1200["source_ref"],
|
||||
@@ -443,7 +475,7 @@ class NamesTheConfigsFix(unittest.TestCase):
|
||||
|
||||
def test_mednafen_one_record_per_module(self):
|
||||
pkg = f"{SA}/mednafen"
|
||||
tree = RepoTree.from_files(
|
||||
tree = rocknix_tree(
|
||||
{
|
||||
f"{pkg}/config/common/mednafen.template": MEDNAFEN_TEMPLATE,
|
||||
f"{pkg}/scripts/start_mednafen.sh": MEDNAFEN_SH,
|
||||
@@ -461,7 +493,7 @@ class NamesTheConfigsFix(unittest.TestCase):
|
||||
|
||||
def test_mednafen_without_a_firmware_directory_raises(self):
|
||||
pkg = f"{SA}/mednafen"
|
||||
tree = RepoTree.from_files(
|
||||
tree = rocknix_tree(
|
||||
{
|
||||
f"{pkg}/config/common/mednafen.template": "psx.bios_eu scph5502.bin\n",
|
||||
f"{pkg}/scripts/start_mednafen.sh": MEDNAFEN_SH,
|
||||
@@ -473,7 +505,7 @@ class NamesTheConfigsFix(unittest.TestCase):
|
||||
|
||||
class SearchedNames(unittest.TestCase):
|
||||
def tree(self, script: str) -> RepoTree:
|
||||
return RepoTree.from_files({f"{SA}/yabasanshiro-sa/scripts/start_yabasanshiro.sh": script})
|
||||
return rocknix_tree({f"{SA}/yabasanshiro-sa/scripts/start_yabasanshiro.sh": script})
|
||||
|
||||
def test_yabasanshiro_tries_its_names_in_order(self):
|
||||
(record,) = [r.entry() for r in rl.yabasanshiro(self.tree(YABASANSHIRO_SH))]
|
||||
@@ -514,7 +546,7 @@ class Links(unittest.TestCase):
|
||||
|
||||
def tree(self) -> RepoTree:
|
||||
scripts = self.all_scripts()
|
||||
return RepoTree.from_files({p: scripts[e] for e, p in rl.LINK_SCRIPTS})
|
||||
return rocknix_tree({p: scripts[e] for e, p in rl.LINK_SCRIPTS})
|
||||
|
||||
def emulator(self, name: str) -> list[dict]:
|
||||
return by([r.entry() for r in rl.links(self.tree())], name)
|
||||
@@ -566,7 +598,7 @@ class Links(unittest.TestCase):
|
||||
def test_a_script_without_a_bios_link_raises(self):
|
||||
scripts = self.all_scripts()
|
||||
scripts["flycast"] = 'ln -sf "/storage/.config/flycast" "/storage/.local/share/flycast"\n'
|
||||
tree = RepoTree.from_files({p: scripts[e] for e, p in rl.LINK_SCRIPTS})
|
||||
tree = rocknix_tree({p: scripts[e] for e, p in rl.LINK_SCRIPTS})
|
||||
with self.assertRaises(LauncherPatternMissing):
|
||||
rl.links(tree)
|
||||
|
||||
@@ -603,7 +635,7 @@ class ProgramsRunOutsideTheBiosFolder(unittest.TestCase):
|
||||
PATH = f"{SA}/pico-8/scripts/start_pico8.sh"
|
||||
|
||||
def test_pico8_runs_its_binary_from_roms(self):
|
||||
(record,) = [r.entry() for r in rl.pico8(RepoTree.from_files({self.PATH: START_PICO8}))]
|
||||
(record,) = [r.entry() for r in rl.pico8(rocknix_tree({self.PATH: START_PICO8}))]
|
||||
self.assertEqual(
|
||||
(record["emulator"], record["kind"], record["names"], record["search_dir"],
|
||||
record["passes_to"]),
|
||||
@@ -615,7 +647,7 @@ class ProgramsRunOutsideTheBiosFolder(unittest.TestCase):
|
||||
def test_a_script_without_its_binary_choice_raises(self):
|
||||
broken = START_PICO8.replace('STATIC_BIN="pico8_dyn"', "STATIC_BIN=$OTHER")
|
||||
with self.assertRaises(LauncherPatternMissing):
|
||||
rl.pico8(RepoTree.from_files({self.PATH: broken}))
|
||||
rl.pico8(rocknix_tree({self.PATH: broken}))
|
||||
|
||||
|
||||
class Revision(unittest.TestCase):
|
||||
|
||||
Reference in new issue
Block a user