feat: record the systems each libretro core runs

This commit is contained in:
Abdessamad Derraz committed 2026-10-22 21:16:47 +02:00
1 parent 2aaf0e50d1
commit 9a1bf4baa6
11 files changed
+2462 -5

No files matched your search

+401
View File
@@ -5813,6 +5813,407 @@ dual_mode_cores:
- scummvm
- stella
- tic80
libretro_systems:
"81":
- zx81
a5200:
- atari5200
applewin:
- apple2
arduous:
- arduboy
atari800:
- atari5200
- atari800
beetle-saturn:
- saturn
bennugd:
- bennugd
bk:
- bk
blastem:
- megadrive
bluemsx:
- colecovision
- msx1
- msx2
- msx2+
- msxturbor
- spectravideo
boom3:
- doom3
bsnes:
- sgb-msu1
- snes
- snes-msu1
bsnes_hd:
- sgb-msu1
- snes
- snes-msu1
cap32:
- amstradcpc
- gx4000
desmume:
- nds
dice:
- dice
dolphin:
- gamecube
- wii
dosbox_pure:
- dos
easyrpg:
- easyrpg
emuscv:
- scv
ep128emu-core:
- enterprise
- tvc
fake08:
- pico8
fbalpha:
- fbneo
- neogeo
fbneo:
- fbneo
- neogeo
fceumm:
- fds
- nes
flycast:
- atomiswave
- dreamcast
- naomi
- naomi2
- systemsp
flycastvl:
- atomiswave
- dreamcast
- naomi
fmsx:
- msx1
- msx2
- msx2+
freechaf:
- channelf
freeintv:
- intellivision
freej2me:
- j2me
fuse:
- zxspectrum
gambatte:
- gb
- gbc
gearcoleco:
- colecovision
gearsystem:
- gamegear
- mastersystem
- multivision
- sg1000
genesisplusgx:
- gamegear
- mastersystem
- megacd
- megadrive
- megadrive-msu
- pico
- sg1000
genesisplusgx-expanded:
- megadrive
genesisplusgx-wide:
- megadrive
- megadrive-msu
- pico
gong:
- gong
gpsp:
- gba
gw:
- gameandwatch
handy:
- lynx
hatari:
- atarist
hatarib:
- atarist
holani:
- lynx
imame4all:
- mame
- neogeo
kronos:
- saturn
lowresnx:
- lowresnx
lutro:
- lutro
mame:
- adam
- advision
- apfm1000
- apple2
- arcadia
- archimedes
- astrocade
- atom
- bbcmicro
- beena
- bk
- camplynx
- cave3rd
- cdi
- cgenie
- coco
- crvision
- ctvboy
- dragon64
- electron
- enterprise
- fm7
- fmtowns
- gaelco
- gamate
- gameandwatch
- gamecom
- gamepock
- gmaster
- gp32
- laser310
- lcdgames
- loopy
- macintosh
- mame
- mc10
- megaduck
- model2
- mz2000
- mz2500
- mz700
- mz800
- mz80k
- namco22
- neogeo
- oricatmos
- pc60
- pc80
- pcw
- pdp1
- pv1000
- pv2000
- rx78
- samcoupe
- sc3000
- segaai
- socrates
- supracan
- sv8000
- ti99
- trs80
- tutor
- tvc
- tvgames
- uzebox
- vc4000
- vectrex
- vgmplay
- vis
- vsmile
- xegs
mame078plus:
- mame
- neogeo
mednafen_lynx:
- lynx
mednafen_ngp:
- ngp
- ngpc
mednafen_psx:
- psx
mednafen_supergrafx:
- supergrafx
mednafen_wswan:
- wswan
- wswanc
melonds:
- nds
melondsds:
- nds
mesen:
- fds
- nes
mesen-s:
- gb
- gbc
- satellaview
- sgb
- snes
mgba:
- gb
- gba
- gbc
- sgb
minivmac:
- macintosh
mrboom:
- mrboom
mupen64plus-next:
- n64
- n64dd
neocd:
- neogeocd
nestopia:
- fds
- nes
np2kai:
- pc98
nxengine:
- cavestory
o2em:
- odyssey2
- videopacplus
opera:
- 3do
parallel_n64:
- n64
- n64dd
pce:
- pcengine
- pcenginecd
pce_fast:
- pcengine
- pcenginecd
pcfx:
- pcfx
pcsx2:
- ps2
pcsx_rearmed:
- psx
pd777:
- cassettevision
picodrive:
- gamegear
- mastersystem
- megacd
- megadrive
- pico
- sega32x
play:
- ps2
pocketsnes:
- satellaview
- snes
- snes-msu1
pokemini:
- pokemini
potator:
- supervision
ppsspp:
- psp
prboom:
- prboom
prosystem:
- atari7800
puae:
- amiga1200
- amiga500
- amigacd32
- amigacdtv
puae2021:
- amiga1200
- amiga500
- amigacd32
- amigacdtv
px68k:
- x68000
quasi88:
- pc88
reminiscence:
- reminiscence
same_cdi:
- cdi
sameduck:
- megaduck
scummvm:
- scummvm
smsplus:
- gamegear
- mastersystem
snes9x:
- satellaview
- snes
- snes-msu1
- sufami
snes9x_next:
- snes
squirreljme:
- j2me
stella:
- atari2600
stella2014:
- atari2600
superbroswar:
- superbroswar
swanstation:
- psx
tgbdual:
- gb2players
- gbc2players
theodore:
- thomson
tic80:
- tic80
tyrquake:
- quake
uae4arm:
- amiga1200
- amiga500
- amigacd32
- amigacdtv
uzem:
- uzebox
vb:
- virtualboy
vba-m:
- gb
- gba
- gbc
vecx:
- vectrex
vemulator:
- vemulator
vice_x128:
- c128
vice_x64:
- c64
vice_x64sc:
- c64
vice_xpet:
- pet
vice_xplus4:
- cplus4
vice_xscpu64:
- c64
vice_xvic:
- c20
vircon32:
- vircon32
virtualjaguar:
- jaguar
- jaguarcd
vitaquake2:
- quake2
wasm4:
- wasm4
x1:
- x1
xrick:
- xrick
yabasanshiro:
- saturn
zc210:
- zc210
launchers:
- emulator: duckstation
build: standalone
+379
View File
@@ -5015,3 +5015,382 @@ dual_mode_cores:
- scummvm
- stella
- yabasanshiro
libretro_systems:
"81":
- zx81
a5200:
- atari5200
applewin:
- apple2
arduous:
- arduboy
atari800:
- atari5200
- atari800
beetle-saturn:
- saturn
bennugd:
- bennugd
blastem:
- megadrive
bluemsx:
- colecovision
- msx1
- msx2
- msx2+
- msxturbor
- spectravideo
boom3:
- doom3
bsnes:
- sgb-msu1
- snes
- snes-msu1
bsnes_hd:
- sgb-msu1
- snes
- snes-msu1
cap32:
- amstradcpc
- gx4000
citra:
- 3ds
desmume:
- nds
dice:
- dice
dolphin:
- gamecube
- wii
dosbox_pure:
- dos
easyrpg:
- easyrpg
emuscv:
- scv
fake08:
- pico8
fbalpha:
- fbneo
- neogeo
fbneo:
- fbneo
- neogeo
fceumm:
- fds
- nes
flycast:
- atomiswave
- dreamcast
- naomi
- naomi2
- systemsp
flycast-xtreme:
- atomiswave
- dreamcast
- naomi
- naomi2
- systemsp
flycastvl:
- atomiswave
- dreamcast
- naomi
fmsx:
- msx1
- msx2
- msx2+
freechaf:
- channelf
freeintv:
- intellivision
freej2me:
- j2me
fuse:
- zxspectrum
gambatte:
- gb
- gbc
gearsystem:
- gamegear
- mastersystem
- multivision
- sg1000
genesisplusgx:
- gamegear
- mastersystem
- megadrive
- msu-md
- pico
- segacd
- sg1000
genesisplusgx-expanded:
- megadrive
genesisplusgx-wide:
- megadrive
- msu-md
- pico
geolith:
- fbneo
- neogeo
gong:
- gong
gpsp:
- gba
gw:
- gameandwatch
handy:
- lynx
hatari:
- atarist
hatarib:
- atarist
holani:
- lynx
imame4all:
- mame
- neogeo
kronos:
- saturn
lowresnx:
- lowresnx
lutro:
- lutro
mame:
- adam
- advision
- apfm1000
- apple2
- apple2gs
- arcadia
- archimedes
- astrocde
- atom
- bbc
- camplynx
- cdi
- coco
- crvision
- electron
- fm7
- fmtowns
- gamate
- gameandwatch
- gamecom
- gamepock
- gmaster
- gp32
- laser310
- lcdgames
- macintosh
- mame
- megaduck
- namco22
- neogeo
- pdp1
- plugnplay
- pv1000
- socrates
- supracan
- ti99
- tutor
- vc4000
- vgmplay
- vis
- vsmile
- xegs
mame0139:
- mame
- neogeo
mame078plus:
- mame
- neogeo
mednafen_lynx:
- lynx
mednafen_ngp:
- ngp
- ngpc
mednafen_psx:
- psx
mednafen_supergrafx:
- supergrafx
mednafen_wswan:
- wswan
- wswanc
melonds:
- nds
melondsds:
- nds
mesen:
- fds
- nes
mesen-s:
- gb
- gbc
- satellaview
- sgb
- snes
mgba:
- gb
- gba
- gbc
- sgb
minivmac:
- macintosh
mrboom:
- mrboom
mupen64plus-next:
- n64
- n64dd
neocd:
- neogeocd
nestopia:
- fds
- nes
np2kai:
- pc98
nxengine:
- cavestory
o2em:
- o2em
- videopacplus
openlara:
- traider1
opera:
- 3do
parallel_n64:
- n64
- n64dd
pce:
- pcengine
- pcenginecd
pce_fast:
- pcengine
- pcenginecd
pcfx:
- pcfx
pcsx2:
- ps2
pcsx_rearmed:
- psx
picodrive:
- gamegear
- mastersystem
- megadrive
- pico
- sega32x
- segacd
play:
- ps2
pocketsnes:
- satellaview
- snes
- snes-msu1
pokemini:
- pokemini
potator:
- supervision
ppsspp:
- psp
prboom:
- prboom
prosystem:
- atari7800
puae:
- amiga1200
- amiga500
- amigacd32
- amigacdtv
puae2021:
- amiga1200
- amiga500
- amigacd32
- amigacdtv
px68k:
- x68000
quasi88:
- pc88
reminiscence:
- reminiscence
same_cdi:
- cdi
sameduck:
- megaduck
scummvm:
- scummvm
smsplus:
- gamegear
- mastersystem
snes9x:
- satellaview
- snes
- snes-msu1
- sufami
snes9x_next:
- snes
squirreljme:
- j2me
stella:
- atari2600
stella2014:
- atari2600
superbroswar:
- superbroswar
swanstation:
- psx
tgbdual:
- gb2players
- gbc2players
theodore:
- thomson
tic80:
- tic80
tyrquake:
- quake
uae4arm:
- amiga1200
- amiga500
- amigacd32
- amigacdtv
uzem:
- uzebox
vb:
- virtualboy
vba-m:
- gb
- gba
- gbc
vecx:
- vectrex
vemulator:
- vemulator
vice_x128:
- c128
vice_x64:
- c64
vice_x64sc:
- c64
vice_xpet:
- pet
vice_xplus4:
- cplus4
vice_xscpu64:
- c64
vice_xvic:
- c20
vircon32:
- vircon32
virtualjaguar:
- jaguar
- jaguarcd
vitaquake2:
- quake2
wasm4:
- wasm4
x1:
- x1
xrick:
- xrick
yabasanshiro:
- saturn
zc210:
- zc210
+425
View File
@@ -3409,6 +3409,431 @@ systems:
mandatory_declared: true
native_name: ST-V
native_id: stv
libretro_systems:
"2048":
- "2048"
"81":
- zx81
a5200:
- atari5200
amiberry:
- amiga1200
- amiga600
- amigacd32
- amigacdtv
applewin:
- apple2
arduous:
- arduboy
atari800:
- atari5200
- atari800
b2:
- bbcmicro
bk:
- bk
bluemsx:
- colecovision
- msx1
- msx2
- msxturbor
- multivision
- sg1000
- spectravideo
boom3:
- doom3
bsnes:
- gb
- gbc
- satellaview
- snes
bsneshd:
- satellaview
- snes
cannonball:
- outrun
cap32:
- amstradcpc
- gx4000
cdi2015:
- cdi
craft:
- minecraft
crocods:
- amstradcpc
desmume:
- nds
dice:
- dice
dinothawr:
- dinothawr
dirksimple:
- daphne
dolphin:
- gamecube
- wii
dosbox_pure:
- dos
easyrpg:
- easyrpg
ecwolf:
- wolfenstein3d
eightyone:
- zx81
- zxspectrum
emuscv:
- scv
exel-hence:
- exl100
fake08:
- pico8
fbneo:
- channelf
- colecovision
- fbneo
- fds
- gamegear
- mastersystem
- megadrive
- msx1
- neogeo
- neogeocd
- nes
- ngp
- pcengine
- sg1000
- supergrafx
- zxspectrum
fceumm:
- fds
- nes
flycast:
- 240ptestsuite
- atomiswave
- dreamcast
- naomi
- naomigd
flycast-next:
- atomiswave
- dreamcast
- naomi
- naomi2
- naomigd
fmsx:
- msx1
- msx2
freechaf:
- channelf
freeintv:
- intellivision
fuse:
- zxspectrum
gambatte:
- 240ptestsuite
- gb
- gbc
gearcoleco:
- colecovision
geargrafx:
- pcengine
- pcenginecd
- supergrafx
gearsystem:
- gamegear
- mastersystem
- multivision
- sg1000
genesisplusgx:
- 240ptestsuite
- gamegear
- mastersystem
- megadrive
- segacd
- sg1000
genesisplusgx_ex:
- megadrive
genesisplusgxwide:
- megadrive
geolith:
- neogeo
- neogeocd
gong:
- gong
gpsp:
- gba
gw:
- gw
handy:
- lynx
hatari:
- atarist
hatarib:
- atarist
holani:
- lynx
hypseus_singe:
- daphne
imageviewer:
- imageviewer
kronos:
- saturn
- stv
lowresnx:
- lowresnx
lutro:
- lutro
m2000:
- p2000t
mame0258:
- mame
mame0278:
- mame
mame2000:
- mame
- neogeo
mame2003:
- mame
- neogeo
mame2003_plus:
- mame
- neogeo
mame2010:
- mame
- neogeo
mame2015:
- mame
- neogeo
mame2016:
- neogeo
mednafen_lynx:
- lynx
mednafen_ngp:
- ngp
- ngpc
mednafen_pce_fast:
- pcengine
- pcenginecd
mednafen_pcfx:
- pcfx
mednafen_psx:
- psx
mednafen_psx_hw:
- psx
mednafen_saturn:
- saturn
mednafen_stv:
- stv
mednafen_supafaust:
- snes
mednafen_supergrafx:
- 240ptestsuite
- pcengine
- pcenginecd
- supergrafx
mednafen_vb:
- virtualboy
mednafen_wswan:
- pcv2
- wswan
- wswanc
melonds:
- nds
mesen:
- fds
- nes
mesen_s:
- gb
- gbc
- satellaview
- snes
meteor:
- gba
mgba:
- 240ptestsuite
- gb
- gba
- gbc
minivmac:
- macintosh
mojozork:
- zmachine
mrboom:
- mrboom
mu:
- palm
mupen64plus:
- n64
mupen64plus_next:
- 64dd
- n64
neocd:
- neogeocd
nestopia:
- 240ptestsuite
- fds
- nes
np2kai:
- pc98
nxengine:
- cavestory
o2em:
- o2em
- videopacplus
opera:
- 3do
parallel_n64:
- 64dd
- n64
pcsx2:
- ps2
pcsx_rearmed:
- psx
pd777:
- cassettevision
picodrive:
- gamegear
- mastersystem
- megadrive
- pico
- sega32x
- segacd
- sg1000
pokemini:
- pokemini
potator:
- supervision
ppsspp:
- psp
prboom:
- doom
prosystem:
- atari7800
ps2:
- ps2
puae:
- amiga1200
- amiga600
- amigacd32
- amigacdtv
puae2021:
- amiga1200
- amiga600
- amigacd32
- amigacdtv
px68k:
- x68000
quasi88:
- pc88
quicknes:
- nes
race:
- ngp
- ngpc
rb5000:
- vg5000
reminiscence:
- flashback
retro8:
- pico8
retrodream:
- dreamcast
same_cdi:
- cdi
sameboy:
- gb
- gbc
sameduck:
- megaduck
scummvm:
- scummvm
snes9x:
- 240ptestsuite
- satellaview
- snes
- sufami
snes9x2002:
- snes
snes9x2005:
- snes
snes9x2010:
- snes
stella:
- atari2600
stella2014:
- atari2600
stonesoup:
- dungeoncrawlstonesoup
sugarbox2:
- amstradcpc
- gx4000
swanstation:
- 240ptestsuite
- psx
tamalibretro:
- tamagotchi
tgbdual:
- gb
- gbc
theodore:
- thomson
thepowdertoy:
- thepowdertoy
tic80:
- tic80
tyrquake:
- quake
uae4all:
- amiga600
uae4arm:
- amiga1200
- amiga600
- amigacd32
- amigacdtv
uzem:
- uzebox
vecx:
- vectrex
vice_x128:
- c64
vice_x64:
- c64
vice_x64sc:
- c64
vice_xcbm2:
- c64
vice_xcbm5x0:
- c64
vice_xpet:
- c64
vice_xplus4:
- c64
vice_xscpu64:
- c64
vice_xvic:
- c64
- vic20
vircon32:
- vircon32
virtualjaguar:
- jaguar
vitaquake2:
- quake2
vitaquake3:
- quake3
vitavoyager:
- startrekvoyager
wasm4:
- wasm4
x1:
- x1
xrick:
- rickdangerous
yabasanshiro:
- saturn
yabause:
- saturn
ymir:
- saturn
launchers:
- emulator: hatari
build: standalone
+472
View File
@@ -3047,6 +3047,478 @@ systems:
native_path: bios/mame/hash/xegs.xml
native_name: Atari XEGS
name: Atari XEGS
libretro_systems:
"81":
- zx81
DoubleCherryGB:
- gb
- gb2players
- gbc
- gbc2players
a5200:
- atari5200
amiarcadia:
- arcadia
- vc4000
amiberry:
- amiga1200
- amiga4000
- amiga500
- amigacd32
- amigacdtv
applewin:
- apple2
ardens:
- arduboy
arduous:
- arduboy
atari800:
- atari5200
- atari800
azahar:
- 3ds
b2:
- bbcmicro
bennugd:
- bennugd
bk:
- bk
bluemsx:
- colecovision
- msx1
- msx2
- msx2+
- msxturbor
- spectravideo
boom3:
- doom3
boom3_xp:
- doom3
bsnes:
- gb
- sgb-msu1
- snes
- snes-msu1
- sufami
bsnes-jg:
- snes
bsnes_hd_beta:
- sgb-msu1
- snes
- snes-msu1
cannonball:
- cannonball
cap32:
- amstradcpc
- gx4000
crocods:
- amstradcpc
desmume:
- nds
desmume2015:
- nds
dice:
- dice
dinothawr:
- dinothawr
dolphin:
- gamecube
- triforce
- wii
dosbox_pure:
- dos
doukutsu_rs:
- cavestory
easyrpg:
- easyrpg
ecwolf:
- ecwolf
emuscv:
- scv
ep128emu_core:
- enterprise
fake08:
- pico8
fbalpha:
- cave
- cps1
- cps2
- cps3
- fbneo
- neogeo
fbalpha2012:
- cave
- cps1
- cps2
- cps3
- fbneo
fbalpha2012_cps1:
- cps1
fbalpha2012_cps2:
- cps2
fbalpha2012_cps3:
- cps3
fbalpha2012_neogeo:
- fbneo
- neogeo
fbneo:
- cave
- colecovision
- cps1
- cps2
- cps3
- fbneo
- gamegear
- mastersystem
- megadrive
- msx1
- msx2
- msx2+
- msxturbor
- neogeo
- neogeocd
- pcengine
- pcenginecd
- supergrafx
- zx81
- zxspectrum
fceumm:
- fds
- nes
flycast:
- atomiswave
- dreamcast
- naomi
- naomi2
freechaf:
- channelf
freeintv:
- intellivision
freej2me:
- j2me
frodo:
- c64
fuse:
- zx81
- zxspectrum
gambatte:
- gb
- gbc
gearcoleco:
- adam
- colecovision
geargrafx:
- supergrafx
gearsystem:
- gamegear
- mastersystem
- multivision
- sg1000
genesis_plus_gx:
- gamegear
- mastersystem
- megacd
- megadrive
- megadrive-msu
- sg1000
genesis_plus_gx_expanded:
- megadrive-msu
genesis_plus_gx_wide:
- megacd
- megadrive
- megadrive-msu
geolith:
- neogeo
gpsp:
- gba
gw:
- gw
- lcdgames
handy:
- lynx
hatari:
- atarist
hatarib:
- atarist
holani:
- lynx
imageviewer:
- screenshots
jollycv:
- colecovision
- crvision
kronos:
- saturn
- segastv
lowresnx:
- lowresnx
lutro:
- lutro
m2000:
- p2000t
mame:
- adam
- advision
- apfm1000
- apple2
- apple2gs
- aquarius
- arcadia
- archimedes
- astrocade
- atom
- bbcmicro
- camplynx
- casloopy
- cave
- cdi
- coco
- crvision
- electron
- fm7
- fmtowns
- gaelco
- gamate
- gamecom
- gamepock
- gmaster
- gp32
- gw
- hbmame
- lcdgames
- mame
- megaduck
- model2
- neogeo64
- odyssey2
- oricatmos
- pegasus
- pv1000
- scv
- segastv
- supracan
- ti99
- tutor
- tvgames
- vc4000
- vg5k
- vsmile
- xegs
- zinc
mame2000:
- mame
mame2003:
- mame
- segastv
mame2003_midway:
- mame
mame2003_plus:
- cave
- mame
- segastv
mame2010:
- mame
- segastv
mame2014:
- gaelco
- mame
- segastv
mame2016:
- cave
- gaelco
- mame
- neogeo64
- segastv
mednafen_gba:
- gba
mednafen_lynx:
- lynx
mednafen_ngp:
- ngp
- ngpc
mednafen_pce:
- pcengine
- pcenginecd
mednafen_pce_fast:
- pcengine
- pcenginecd
mednafen_pcfx:
- pcfx
mednafen_psx_hw:
- psx
mednafen_saturn:
- saturn
mednafen_snes:
- snes
mednafen_supergrafx:
- supergrafx
mednafen_vb:
- virtualboy
mednafen_wswan:
- wswan
- wswanc
melonds:
- nds
melondsds:
- nds
mesen:
- fds
- nes
mesen-s:
- gb
- satellaview
- sgb
- snes
- snes-msu1
mgba:
- gba
- sgb
mupen64plus_next:
- n64
- n64dd
nekop2:
- pc98
neocd:
- neogeocd
nestopia:
- fds
- nes
noods:
- nds
np2kai:
- pc98
nxengine:
- cavestory
o2em:
- odyssey2
openlara:
- openlara
opera:
- 3do
parallel_n64:
- n64
- n64dd
pcsx2:
- ps2
pcsx_rearmed:
- psx
pd777:
- cassettevision
picodrive:
- gamegear
- mastersystem
- megacd
- megadrive
- sega32x
pocketcdg:
- karaoke
pokemini:
- pokemini
potator:
- supervision
ppsspp:
- psp
prboom:
- doom
prosystem:
- atari7800
puae:
- amiga1200
- amiga4000
- amiga500
- amigacd32
- amigacdtv
px68k:
- x68000
quasi88:
- pc88
race:
- ngp
- ngpc
reminiscence:
- reminiscence
retro8:
- pico8
same_cdi:
- cdi
sameboy:
- gb
- gb2players
- gbc
- gbc2players
sameduck:
- megaduck
scummvm:
- scummvm
snes9x:
- satellaview
- snes
- snes-msu1
- sufami
snes9x2005:
- snes
stella:
- atari2600
stella2014:
- atari2600
- atari5200
superbroswar:
- superbroswar
supermodel:
- model3
swanstation:
- psx
tgbdual:
- gb
- gb2players
- gbc
- gbc2players
theodore:
- thomson
tic80:
- tic80
tyrquake:
- quake
uzem:
- uzebox
vecx:
- vectrex
vice_x128:
- c128
vice_x64:
- c64
vice_x64sc:
- c64
vice_xpet:
- pet
vice_xplus4:
- c16
- cplus4
vice_xvic:
- c20
vircon32:
- vircon32
virtualjaguar:
- jaguar
- jaguarcd
vitaquake2:
- quake2
vitaquake2-rogue:
- quake2
vitaquake2-xatrix:
- quake2
vitaquake2-zaero:
- quake2
wasm4:
- wasm4
x1:
- x1
yabasanshiro:
- saturn
ymir:
- saturn
zc255:
- zeldaclassic
launchers:
- emulator: amiberry
build: standalone
+635
View File
@@ -16040,6 +16040,641 @@ systems:
native_system: coco
component: xroar
description: Generic disk ROM
libretro_systems:
"81":
- zx81
DoubleCherryGB:
- gb
- gbc
a5200:
- atari5200
amiarcadia:
- arcadia
amiberry:
- amiga
- amiga1200
- amiga600
- amigacd32
- cdtv
applewin:
- apple2
ardens:
- arduboy
arduous:
- arduboy
atari800:
- atari5200
- atari800
- atarixe
azahar:
- n3ds
b2:
- bbcmicro
blastem:
- colecovision
- gamegear
- genesis
- mark3
- mastersystem
- megacd
- megacdjp
- megadrive
- megadrivejp
- sega32x
- sega32xjp
- sega32xna
- segacd
- sg-1000
bluemsx:
- colecovision
- msx
- msx1
- msx2
- msxturbor
- sg-1000
- spectravideo
boom3:
- doom
boom3_xp:
- doom
bsnes:
- gb
- gbc
- satellaview
- sfc
- snes
- snesna
- sufami
bsnes-jg:
- satellaview
- sfc
- snes
- snesna
- sufami
bsnes_hd_beta:
- satellaview
- sfc
- snes
- snesna
- sufami
bsnes_mercury_accuracy:
- satellaview
- sfc
- snes
- snesna
- sufami
cannonball:
- ports
cap32:
- amstradcpc
- gx4000
cdi2015:
- cdimono1
cemu:
- wiiu
chailove:
- chailove
citra:
- n3ds
citra2018:
- n3ds
clownmdemu:
- megacd
- megacdjp
- segacd
craft:
- ports
crocods:
- amstradcpc
- gx4000
desmume:
- nds
desmume2015:
- nds
dice:
- arcade
- mame
dirksimple:
- daphne
- laserdisc
dolphin:
- gc
- wii
dosbox_core:
- dos
- pc
dosbox_pure:
- dos
- pc
- windows3x
- windows9x
dosbox_svn:
- dos
- pc
easyrpg:
- easyrpg
ecwolf:
- ports
fbalpha2012:
- arcade
- cps
- cps1
- cps2
- cps3
- fba
- mame
fbalpha2012_cps1:
- cps
- cps1
- fba
fbalpha2012_cps2:
- cps
- cps2
- fba
fbalpha2012_cps3:
- cps
- cps3
- fba
fbalpha2012_neogeo:
- fba
fbneo:
- arcade
- cps
- cps1
- cps2
- cps3
- fbneo
- mame
- neogeo
- neogeocd
- neogeocdjp
fceumm:
- famicom
- fds
- nes
flycast:
- arcade
- atomiswave
- consolearcade
- dreamcast
- mame
- naomi
- naomi2
- naomigd
fmsx:
- msx
- msx1
- msx2
freechaf:
- channelf
freeintv:
- intellivision
frodo:
- c64
fsuae:
- amiga
- amiga1200
- amiga600
fuse:
- zxspectrum
gambatte:
- gb
- gbc
gearboy:
- gb
- gbc
gearcoleco:
- colecovision
geargrafx:
- pcengine
- pcenginecd
- supergrafx
- tg-cd
- tg16
gearsystem:
- gamegear
- mark3
- mastersystem
- multivision
- sg-1000
genesis-plus-gx-expanded-rom-size-paprium:
- megadrive
- megadrivejp
genesis_plus_gx:
- gamegear
- genesis
- mark3
- mastersystem
- megacd
- megacdjp
- megadrive
- megadrivejp
- segacd
- sg-1000
genesis_plus_gx_wide:
- gamegear
- genesis
- mark3
- mastersystem
- megacd
- megacdjp
- megadrive
- megadrivejp
- segacd
- sg-1000
geolith:
- arcade
- mame
- neogeo
- neogeocd
- neogeocdjp
gpsp:
- gba
gw:
- gameandwatch
- lcdgames
handy:
- atarilynx
hatari:
- atarist
hatari2014:
- atarist
hbmame:
- arcade
- mame
holani:
- atarilynx
irogb:
- gb
- gbc
jollycv:
- colecovision
- crvision
kronos:
- arcade
- consolearcade
- mame
- saturn
- saturnjp
- stv
lowresnx:
- lowresnx
lutro:
- lutro
mame:
- apple2
- apple2gs
- arcade
- arcadia
- astrocde
- atari7800
- channelf
- consolearcade
- cps
- cps1
- cps2
- cps3
- crvision
- daphne
- fmtowns
- gamate
- gameandwatch
- gamecom
- gmaster
- intellivision
- laserdisc
- lcdgames
- mame
- megaduck
- model2
- neogeo
- odyssey2
- pv1000
- scv
- stv
- supervision
- supracan
- vectrex
- videopac
- vsmile
mame2000:
- arcade
- cps
- cps1
- cps2
- cps3
- mame
mame2003:
- arcade
- cps
- cps1
- cps2
- cps3
- mame
mame2003_plus:
- arcade
- cps
- cps1
- cps2
- cps3
- mame
mame2010:
- arcade
- cps
- cps1
- cps2
- cps3
- mame
mednafen_lynx:
- atarilynx
mednafen_ngp:
- ngp
- ngpc
mednafen_pce:
- pcengine
- pcenginecd
- supergrafx
- tg-cd
- tg16
mednafen_pce_fast:
- pcengine
- pcenginecd
- tg-cd
- tg16
mednafen_pcfx:
- pcfx
mednafen_psx:
- psx
mednafen_psx_hw:
- psx
mednafen_saturn:
- saturn
- saturnjp
mednafen_supafaust:
- sfc
- snes
- snesna
mednafen_supergrafx:
- pcengine
- pcenginecd
- supergrafx
- tg-cd
- tg16
mednafen_vb:
- virtualboy
mednafen_wswan:
- wonderswan
- wonderswancolor
melonds:
- nds
melondsds:
- nds
mesen:
- famicom
- fds
- nes
mesen-s:
- gb
- gbc
- satellaview
- sfc
- sgb
- snes
- snesna
mesen2:
- famicom
- fds
- gamegear
- gb
- gba
- gbc
- mark3
- mastersystem
- nes
- pcengine
- pcenginecd
- satellaview
- sfc
- sgb
- snes
- snesna
- supergrafx
- tg-cd
- tg16
- wonderswan
- wonderswancolor
mess2015:
- mess
mgba:
- gb
- gba
- gbc
- sgb
mojozork:
- zmachine
mrboom:
- ports
mu:
- palm
mupen64plus_next:
- n64
- n64dd
nekop2:
- pc98
neocd:
- neogeocd
- neogeocdjp
nestopia:
- famicom
- fds
- nes
noods:
- gba
np2kai:
- pc98
nxengine:
- ports
o2em:
- odyssey2
- videopac
openlara:
- ports
opera:
- 3do
panda3ds:
- n3ds
parallel_n64:
- n64
- n64dd
pcee2:
- ps2
pcsx2:
- ps2
pcsx_rearmed:
- psx
picodrive:
- gamegear
- genesis
- mark3
- mastersystem
- megacd
- megacdjp
- megadrive
- megadrivejp
- sega32x
- sega32xjp
- sega32xna
- segacd
pokemini:
- pokemini
potator:
- supervision
ppsspp:
- psp
prboom:
- doom
prosystem:
- atari7800
puae:
- amiga
- amiga1200
- amiga600
- amigacd32
- cdtv
puae2021:
- amiga
- amiga1200
- amiga600
- amigacd32
- cdtv
px68k:
- x68000
quasi88:
- pc88
quicknes:
- famicom
- nes
race:
- ngp
- ngpc
retro8:
- pico8
rustynes:
- famicom
- fds
- nes
same_cdi:
- cdimono1
sameboy:
- gb
- gbc
- sgb
sameduck:
- megaduck
scummvm:
- scummvm
skyemu:
- gb
- gba
- gbc
smsplus:
- gamegear
- mark3
- mastersystem
snes9x:
- satellaview
- sfc
- snes
- snesna
- sufami
snes9x2005_plus:
- satellaview
- sfc
- snes
- snesna
- sufami
snes9x2010:
- satellaview
- sfc
- snes
- snesna
- sufami
squirreljme:
- j2me
stella:
- atari2600
stella2014:
- atari2600
stella2023:
- atari2600
superbroswar:
- ports
supermodel:
- arcade
- mame
swanstation:
- psx
tgbdual:
- gb
- gbc
theodore:
- moto
- to8
tia:
- atari2600
tic80:
- tic80
tyrquake:
- quake
uzem:
- uzebox
vba_next:
- gba
vbam:
- gb
- gba
- gbc
vecx:
- vectrex
vice_x128:
- c64
vice_x64:
- c64
vice_x64sc:
- c64
vice_xplus4:
- plus4
vice_xscpu64:
- c64
vice_xvic:
- vic20
vircon32:
- vircon32
virtualjaguar:
- atarijaguar
virtualxt:
- dos
- pc
vitaquake2:
- quake
vitaquake2-rogue:
- quake
vitaquake2-xatrix:
- quake
vitaquake2-zaero:
- quake
vitaquake3:
- quake
wasm4:
- wasm4
x1:
- x1
yabasanshiro:
- saturn
- saturnjp
yabause:
- saturn
- saturnjp
launchers:
- emulator: cemu
build: standalone
+14
View File
@@ -53,6 +53,20 @@
"uniqueItems": true,
"description": "Emulators of standalone_cores the platform also launches as a libretro core: both layouts get their files"
},
"libretro_systems": {
"type": "object",
"description": "libretro core name -> the systems the platform's system list offers it for, as the launcher names them. A launcher handing each core <save directory>/<system> (save_directory.by_system in the registry) places a file the core reads below its save directory once in each of these folders",
"additionalProperties": {
"type": "array",
"minItems": 1,
"uniqueItems": true,
"items": {
"type": "string",
"minLength": 1,
"pattern": "^[^/\\\\]+$"
}
}
},
"core_system_dirs": {
"type": "object",
"description": "The libretro system directory the platform hands each core, keyed by that directory relative to the pack root. A platform that declares it gives a core no other directory: the core's files are placed below each directory listed for it, and a core listed nowhere gets none (MinUI hands each launch tag its own Bios/<TAG>/)",
+28
View File
@@ -142,6 +142,29 @@ def es_systems_libretro(text: str) -> set[str]:
return found
def es_systems_libretro_systems(text: str, dropped: set[str]) -> dict[str, list[str]]:
"""libretro core -> the systems es_systems.yml offers it under `libretro:`.
configgen hands a libretro core /userdata/saves/<system> at each launch
(libretroConfig.py: savefile_directory = SAVES / system.name), so a file
a core reads below its save directory sits once in each of these
system folders.
"""
data = yaml_load_upstream(text)
if not isinstance(data, dict):
raise ValueError("es_systems.yml is not a mapping")
found: dict[str, set[str]] = {}
for system, spec in data.items():
emulators = spec.get("emulators") if isinstance(spec, dict) else None
libretro = emulators.get("libretro") if isinstance(emulators, dict) else None
if not isinstance(libretro, dict):
continue
for core, entry in libretro.items():
if isinstance(entry, dict) and str(core) not in dropped:
found.setdefault(str(core), set()).add(str(system))
return {core: sorted(systems) for core, systems in sorted(found.items())}
def es_systems_by_system(
es_systems_text: str, defaults_text: str, dropped: set[str]
) -> dict[str, list[str]]:
@@ -518,6 +541,9 @@ class Scraper(BaseScraper):
)
cores, standalone, dual = self._fetch_cores()
libretro_systems = es_systems_libretro_systems(
self._fetch_text(ES_SYSTEMS_URL.format(tag=self.tag)), _not_cores()
)
result = {
"platform": "Batocera",
"version": self.tag.removeprefix("batocera-"),
@@ -534,6 +560,8 @@ class Scraper(BaseScraper):
if dual:
# Launched both ways: each layout gets its files.
result["dual_mode_cores"] = dual
# The systems each libretro core runs for: its save folders.
result["libretro_systems"] = libretro_systems
result["launchers"] = extract_launchers(
lambda path: self._fetch_text(f"{_RAW_BASE}/{self.tag}/{path}")
)
+4
View File
@@ -38,6 +38,7 @@ from .batocera_scraper import (
_not_cores,
configgen_cores,
es_systems_by_system,
es_systems_libretro_systems,
extract_systems_dict,
platform_systems,
requirements_from_systems,
@@ -120,6 +121,9 @@ class Scraper(BaseScraper):
result["standalone_cores"] = standalone
if dual:
result["dual_mode_cores"] = dual
# configgen hands a libretro core /userdata/saves/<system>, as
# Batocera's does: the systems each core runs for are its save folders.
result["libretro_systems"] = es_systems_libretro_systems(es_systems, dropped)
return result
+28 -1
View File
@@ -167,6 +167,29 @@ def system_ini_libretro(text: str) -> set[str]:
}
def system_ini_name(text: str, folder: str) -> str:
"""The system name a system.ini gives, the one ES passes configgen.
configgen hands a libretro core /recalbox/share/saves/<that name>
(projects/configgen/configgen/generators/libretro/libretroRetroarch.py
savesFolder). The folder name stands in where the file names none.
"""
return _ini_sections(text).get("system", {}).get("name") or folder
def libretro_systems(inis: dict[str, str]) -> dict[str, list[str]]:
"""libretro core -> the systems whose system.ini offers it.
``inis`` maps each system folder to its system.ini.
"""
found: dict[str, set[str]] = {}
for folder, text in inis.items():
name = system_ini_name(text, folder)
for core in system_ini_libretro(text):
found.setdefault(core, set()).add(name)
return {core: sorted(systems) for core, systems in sorted(found.items())}
def system_ini_cores(text: str) -> tuple[set[str], set[str]]:
"""The cores one Recalbox system.ini offers, and those run standalone.
@@ -282,7 +305,10 @@ class Scraper(BaseScraper):
cores: set[str] = set()
standalone: set[str] = set()
libretro: set[str] = set()
for text in self._system_inis(systems):
texts = self._system_inis(systems)
# The systems each libretro core runs for: its save folders.
self.libretro_systems = libretro_systems(dict(zip(systems, texts)))
for text in texts:
found, alone = system_ini_cores(text)
cores |= found
standalone |= alone
@@ -397,6 +423,7 @@ class Scraper(BaseScraper):
# Launched both ways: each layout gets its files.
**({"dual_mode_cores": dual} if dual else {}),
"systems": systems,
"libretro_systems": self.libretro_systems,
"launchers": self._fetch_launchers(),
}
+28
View File
@@ -99,6 +99,31 @@ def es_systems_cores(text: str) -> tuple[set[str], set[str]]:
return cores, standalone
def es_systems_libretro_systems(text: str) -> dict[str, list[str]]:
"""libretro core -> the ES systems es_systems.cfg offers it for.
emulatorLauncher hands a libretro core saves\\<system> at each launch
(LibRetro.Generator.cs Configure: savefile_directory), so a file a core
reads below its save directory sits once in each of these system
folders. A commented-out system is no element and counts for nothing.
"""
from common import parse_untrusted_xml
found: dict[str, set[str]] = {}
for system in parse_untrusted_xml(text, "es_systems.cfg").iter("system"):
name = (system.findtext("name") or "").strip()
if not name:
continue
for emulator in system.iter("emulator"):
if (emulator.get("name") or "").strip() != "libretro":
continue
for core in emulator.iter("core"):
core_name = (core.text or "").strip()
if core_name:
found.setdefault(core_name, set()).add(name)
return {core: sorted(systems) for core, systems in sorted(found.items())}
def launcher_revision(url: str) -> str:
"""The emulatorLauncher commit a source URL is pinned to."""
found = re.search(r"/emulatorlauncher/([0-9a-f]{40})/", url)
@@ -259,6 +284,7 @@ class Scraper(BaseScraper):
es_text = resp.read().decode("utf-8")
cores, standalone = es_systems_cores(es_text)
dual = es_systems_dual(es_text)
libretro_systems = es_systems_libretro_systems(es_text)
except urllib.error.URLError as e:
raise ConnectionError(f"Failed to fetch {es_url}: {e}") from e
if not cores:
@@ -277,6 +303,8 @@ class Scraper(BaseScraper):
# Launched both ways: each layout gets its files.
**({"dual_mode_cores": sorted(dual)} if dual else {}),
"systems": systems,
# The systems each libretro core runs for: its save folders.
"libretro_systems": libretro_systems,
"launchers": fetch_launchers(launcher_revision(self.url)),
}
+48 -4
View File
@@ -39,6 +39,8 @@ try:
BaseScraper,
BiosRequirement,
fetch_branch_head,
fetch_bytes,
fetch_github_latest_version,
github_headers,
requirement_entry,
)
@@ -49,6 +51,8 @@ except ImportError:
BaseScraper,
BiosRequirement,
fetch_branch_head,
fetch_bytes,
fetch_github_latest_version,
github_headers,
requirement_entry,
)
@@ -60,6 +64,38 @@ COMPONENTS_BRANCH = "main"
COMPONENTS_API_URL = "https://api.github.com/repos/" + COMPONENTS_REPO + "/git/trees/{rev}"
RAW_BASE = "https://raw.githubusercontent.com/" + COMPONENTS_REPO + "/{rev}"
SKIP_DIRS = {"archive_later", "archive_old", "automation-tools", ".github"}
# ES-DE's system list as RetroDECK's fork builds it.
ES_DE_REPO = "RetroDECK/ES-DE"
ES_DE_SYSTEMS_URL = (
"https://raw.githubusercontent.com/" + ES_DE_REPO
+ "/{rev}/resources/systems/linux/es_systems.xml"
)
_RETROARCH_CORE = re.compile(r"%CORE_RETROARCH%/([\w.+-]+?)_libretro\.so")
def es_systems_libretro_systems(text: str) -> dict[str, list[str]]:
"""libretro core -> the ROM folders of the systems whose commands load it.
RetroDECK's RetroArch sorts saves by content and not by core
(retroarch/rd_assets/rd_config/retroarch.cfg, sort_savefiles_by_content_enable
and sort_savefiles_enable): a core is handed saves/<folder holding the
ROM>, the system's <path> folder below %ROMPATH%. A commented-out
command is no element and counts for nothing.
"""
from common import parse_untrusted_xml
found: dict[str, set[str]] = {}
for system in parse_untrusted_xml(text, "es_systems.xml").iter("system"):
path = (system.findtext("path") or "").strip().replace("\\", "/")
folder = path.rstrip("/").rsplit("/", 1)[-1]
if not folder or folder.startswith("%"):
continue
for command in system.iter("command"):
match = _RETROARCH_CORE.search(command.text or "")
if match:
found.setdefault(match.group(1), set()).add(folder)
return {core: sorted(folders) for core, folders in sorted(found.items())}
NON_EMULATOR_COMPONENTS = {
"framework",
"es-de",
@@ -468,6 +504,16 @@ class Scraper(BaseScraper):
return requirements
def _fetch_libretro_systems(self) -> dict[str, list[str]]:
"""libretro core -> ROM folders, from the ES-DE build RetroDECK ships.
RetroDECK takes ES-DE's latest release of its fork
(automation-tools/alchemist/desired_versions.sh, ES_DE_DESIRED_VERSION).
"""
tag = fetch_github_latest_version(ES_DE_REPO)
text = fetch_bytes(ES_DE_SYSTEMS_URL.format(rev=tag)).decode("utf-8")
return es_systems_libretro_systems(text)
def generate_platform_yaml(self) -> dict:
reqs = self.fetch_requirements()
manifests = self._get_manifests()
@@ -486,10 +532,6 @@ class Scraper(BaseScraper):
sys_entry = systems.setdefault(req.system, {"files": []})
sys_entry["files"].append(requirement_entry(req))
try:
from .base_scraper import fetch_github_latest_version
except ImportError:
from scraper.base_scraper import fetch_github_latest_version
version = fetch_github_latest_version("RetroDECK/RetroDECK")
return {
@@ -509,6 +551,8 @@ class Scraper(BaseScraper):
# its own, and retroarch is the one that runs cores.
"standalone_cores": [c for c in cores if c != "retroarch"],
"systems": systems,
# The ROM folders each libretro core runs for: its save folders.
"libretro_systems": self._fetch_libretro_systems(),
"launchers": extract_launchers(cores, self.component_file),
}