mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-04-13 12:22:33 -05:00
Compare commits
10 Commits
59d777a33d
...
1c0c502258
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1c0c502258 | ||
|
|
06c48e071a | ||
|
|
8f93ee2239 | ||
|
|
9ba8b02ff1 | ||
|
|
6fc2753f3e | ||
|
|
486b359c22 | ||
|
|
76a3543672 | ||
|
|
48d185dd7d | ||
|
|
6dbc3f510b | ||
|
|
97e26103f5 |
@@ -116,6 +116,10 @@ To keep packs accurate, each file is checked against the emulator's source code.
|
||||
3. **Build packs** - include baseline files plus what each platform's cores need
|
||||
4. **Verify** - run platform-native checks and emulator-level validation
|
||||
|
||||
## Community tools
|
||||
|
||||
- [BIOS Preservation Tool](https://github.com/monster-penguin/BIOS-Preservation-Tool) by [monster-penguin](https://github.com/monster-penguin) - scan, verify, and stage your own BIOS collection using RetroBIOS hash metadata
|
||||
|
||||
## Contributors
|
||||
|
||||
<a href="https://github.com/PixNyb"><img src="https://avatars.githubusercontent.com/u/40770831?v=4" width="50" title="PixNyb"></a>
|
||||
|
||||
46
install.ps1
46
install.ps1
@@ -101,4 +101,50 @@ foreach ($f in $toDownload) {
|
||||
}
|
||||
}
|
||||
|
||||
# Standalone emulator copies
|
||||
if ($manifest.standalone_copies) {
|
||||
Write-Host "`nStandalone emulators:"
|
||||
foreach ($entry in $manifest.standalone_copies) {
|
||||
if ($entry.note) {
|
||||
$detectPaths = @()
|
||||
if ($entry.detect -and $entry.detect.windows) {
|
||||
$detectPaths = $entry.detect.windows
|
||||
}
|
||||
foreach ($dp in $detectPaths) {
|
||||
$expanded = [Environment]::ExpandEnvironmentVariables($dp)
|
||||
if (Test-Path $expanded) {
|
||||
Write-Host " $($entry.note)"
|
||||
break
|
||||
}
|
||||
}
|
||||
continue
|
||||
}
|
||||
$sources = @()
|
||||
if ($entry.pattern) {
|
||||
$sources = Get-ChildItem -Path $biosPath -Filter $entry.pattern -File -ErrorAction SilentlyContinue
|
||||
} elseif ($entry.file) {
|
||||
$src = Join-Path $biosPath $entry.file
|
||||
if (Test-Path $src) { $sources = @(Get-Item $src) }
|
||||
}
|
||||
if ($sources.Count -eq 0) { continue }
|
||||
$targetDirs = @()
|
||||
if ($entry.targets -and $entry.targets.windows) {
|
||||
$targetDirs = $entry.targets.windows
|
||||
}
|
||||
foreach ($td in $targetDirs) {
|
||||
$expanded = [Environment]::ExpandEnvironmentVariables($td)
|
||||
if (-not (Test-Path $expanded)) { continue }
|
||||
foreach ($s in $sources) {
|
||||
$dest = Join-Path $expanded $s.Name
|
||||
try {
|
||||
Copy-Item $s.FullName $dest -Force
|
||||
Write-Host " $($s.Name) -> $expanded"
|
||||
} catch {
|
||||
Write-Host " $($s.Name) -> $expanded FAILED" -ForegroundColor Red
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host "`nDone. $downloaded downloaded, $upToDate already up to date."
|
||||
|
||||
49
install.py
49
install.py
@@ -192,9 +192,9 @@ def detect_platforms(os_type: str) -> list[tuple[str, Path]]:
|
||||
if retrodeck_cfg.exists():
|
||||
bios_path = _parse_bash_var(retrodeck_cfg, "rdhome")
|
||||
if bios_path:
|
||||
found.append(("retrodeck", Path(bios_path) / "bios"))
|
||||
found.append(("retrodeck", Path(bios_path)))
|
||||
else:
|
||||
found.append(("retrodeck", home / "retrodeck" / "bios"))
|
||||
found.append(("retrodeck", home / "retrodeck"))
|
||||
|
||||
# RetroArch Flatpak
|
||||
flatpak_cfg = home / ".var" / "app" / "org.libretro.RetroArch" / "config" / "retroarch" / "retroarch.cfg"
|
||||
@@ -390,8 +390,16 @@ def do_standalone_copies(
|
||||
) -> tuple[int, int]:
|
||||
"""Copy BIOS files to standalone emulator directories.
|
||||
|
||||
Supports:
|
||||
- file: single file copy
|
||||
- pattern: glob match (e.g. "scph*.bin")
|
||||
- note: informational message when detect path exists
|
||||
- WSL fallback to linux targets
|
||||
|
||||
Returns (copied_count, skipped_count).
|
||||
"""
|
||||
from fnmatch import fnmatch
|
||||
|
||||
copies = manifest.get("standalone_copies", [])
|
||||
if not copies:
|
||||
return 0, 0
|
||||
@@ -400,21 +408,48 @@ def do_standalone_copies(
|
||||
skipped = 0
|
||||
|
||||
for entry in copies:
|
||||
src = bios_path / entry["file"]
|
||||
if not src.exists():
|
||||
# Note entries: print message if emulator detected
|
||||
if "note" in entry:
|
||||
detect_paths = entry.get("detect", {}).get(os_type, [])
|
||||
if not detect_paths and os_type == "wsl":
|
||||
detect_paths = entry.get("detect", {}).get("linux", [])
|
||||
for dp in detect_paths:
|
||||
expanded = Path(os.path.expandvars(os.path.expanduser(dp)))
|
||||
if expanded.is_dir():
|
||||
print(f" {entry['note']}")
|
||||
break
|
||||
continue
|
||||
|
||||
# Resolve source files
|
||||
if "pattern" in entry:
|
||||
sources = [
|
||||
f for f in bios_path.rglob("*")
|
||||
if fnmatch(f.name, entry["pattern"]) and f.is_file()
|
||||
]
|
||||
else:
|
||||
src = bios_path / entry["file"]
|
||||
sources = [src] if src.exists() else []
|
||||
|
||||
if not sources:
|
||||
continue
|
||||
|
||||
# Resolve target directories with WSL fallback
|
||||
targets = entry.get("targets", {}).get(os_type, [])
|
||||
if not targets and os_type == "wsl":
|
||||
targets = entry.get("targets", {}).get("linux", [])
|
||||
|
||||
for target_dir_str in targets:
|
||||
target_dir = Path(os.path.expandvars(os.path.expanduser(target_dir_str)))
|
||||
if target_dir.is_dir():
|
||||
if not target_dir.is_dir():
|
||||
skipped += len(sources)
|
||||
continue
|
||||
for src in sources:
|
||||
dest = target_dir / src.name
|
||||
try:
|
||||
shutil.copy2(src, dest)
|
||||
copied += 1
|
||||
except OSError:
|
||||
skipped += 1
|
||||
else:
|
||||
skipped += 1
|
||||
|
||||
return copied, skipped
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"platform": "batocera",
|
||||
"display_name": "Batocera",
|
||||
"version": "1.0",
|
||||
"generated": "2026-04-02T13:52:15Z",
|
||||
"generated": "2026-04-03T09:43:11Z",
|
||||
"base_destination": "bios",
|
||||
"detect": [
|
||||
{
|
||||
@@ -14,7 +14,222 @@
|
||||
"bios_path": "/userdata/bios"
|
||||
}
|
||||
],
|
||||
"standalone_copies": [],
|
||||
"standalone_copies": [
|
||||
{
|
||||
"file": "prod.keys",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/yuzu/keys",
|
||||
"$HOME/.local/share/eden/keys",
|
||||
"$HOME/.local/share/citron/keys",
|
||||
"$HOME/.local/share/suyu/keys",
|
||||
"$HOME/.config/Ryujinx/system"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\yuzu\\keys",
|
||||
"%APPDATA%\\eden\\keys",
|
||||
"%APPDATA%\\citron\\keys",
|
||||
"%APPDATA%\\suyu\\keys",
|
||||
"%APPDATA%\\Ryujinx\\system"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/yuzu/keys",
|
||||
"$HOME/Library/Application Support/Ryujinx/system"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "title.keys",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/yuzu/keys",
|
||||
"$HOME/.local/share/eden/keys",
|
||||
"$HOME/.local/share/citron/keys",
|
||||
"$HOME/.local/share/suyu/keys"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\yuzu\\keys",
|
||||
"%APPDATA%\\eden\\keys",
|
||||
"%APPDATA%\\citron\\keys",
|
||||
"%APPDATA%\\suyu\\keys"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/yuzu/keys"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "Citra/sysdata/aes_keys.txt",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/azahar/sysdata"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Azahar\\sysdata"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "Citra/sysdata/boot9.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/azahar/sysdata"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Azahar\\sysdata"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"pattern": "scph*.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/duckstation/bios"
|
||||
],
|
||||
"windows": [
|
||||
"%LOCALAPPDATA%\\DuckStation\\bios",
|
||||
"%USERPROFILE%\\Documents\\DuckStation\\bios"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/DuckStation/bios"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"pattern": "ps2-*.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.config/PCSX2/bios",
|
||||
"$HOME/.var/app/net.pcsx2.PCSX2/config/PCSX2/bios"
|
||||
],
|
||||
"windows": [
|
||||
"%USERPROFILE%\\Documents\\PCSX2\\bios"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/PCSX2/bios"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"note": "PS3 firmware (PS3UPDAT.PUP) found. Install via RPCS3 > File > Install Firmware.",
|
||||
"detect": {
|
||||
"linux": [
|
||||
"$HOME/.config/rpcs3"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\rpcs3"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "GC/USA/IPL.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/dolphin-emu/GC/USA"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Dolphin Emulator\\GC\\USA"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/Dolphin/GC/USA"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "GC/EUR/IPL.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/dolphin-emu/GC/EUR"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Dolphin Emulator\\GC\\EUR"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/Dolphin/GC/EUR"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "GC/JAP/IPL.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/dolphin-emu/GC/JAP"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Dolphin Emulator\\GC\\JAP"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/Dolphin/GC/JAP"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "dsp_rom.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/dolphin-emu"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Dolphin Emulator"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/Dolphin"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "dsp_coef.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/dolphin-emu"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Dolphin Emulator"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/Dolphin"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "PPSSPP/ppge_atlas.zim",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.config/ppsspp/PSP/SYSTEM"
|
||||
],
|
||||
"windows": [
|
||||
"%USERPROFILE%\\Documents\\PPSSPP\\PSP\\SYSTEM"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/PPSSPP/PSP/SYSTEM"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "dc/dc_boot.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/flycast/data",
|
||||
"$HOME/.var/app/org.flycast.Flycast/data/flycast"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\flycast\\data"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "dc/dc_nvmem.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/flycast/data",
|
||||
"$HOME/.var/app/org.flycast.Flycast/data/flycast"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\flycast\\data"
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"total_files": 1547,
|
||||
"total_size": 4371484317,
|
||||
"files": [
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"platform": "emudeck",
|
||||
"display_name": "EmuDeck",
|
||||
"version": "1.0",
|
||||
"generated": "2026-04-01T14:41:53Z",
|
||||
"generated": "2026-04-03T09:43:22Z",
|
||||
"base_destination": "bios",
|
||||
"detect": [
|
||||
{
|
||||
@@ -34,19 +34,211 @@
|
||||
"linux": [
|
||||
"$HOME/.local/share/yuzu/keys",
|
||||
"$HOME/.local/share/eden/keys",
|
||||
"$HOME/.local/share/citron/keys",
|
||||
"$HOME/.local/share/suyu/keys",
|
||||
"$HOME/.config/Ryujinx/system"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\yuzu\\keys",
|
||||
"%APPDATA%\\eden\\keys"
|
||||
"%APPDATA%\\eden\\keys",
|
||||
"%APPDATA%\\citron\\keys",
|
||||
"%APPDATA%\\suyu\\keys",
|
||||
"%APPDATA%\\Ryujinx\\system"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/yuzu/keys",
|
||||
"$HOME/Library/Application Support/Ryujinx/system"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "aes_keys.txt",
|
||||
"file": "title.keys",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/Emulation/bios/citra/keys"
|
||||
"$HOME/.local/share/yuzu/keys",
|
||||
"$HOME/.local/share/eden/keys",
|
||||
"$HOME/.local/share/citron/keys",
|
||||
"$HOME/.local/share/suyu/keys"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\yuzu\\keys",
|
||||
"%APPDATA%\\eden\\keys",
|
||||
"%APPDATA%\\citron\\keys",
|
||||
"%APPDATA%\\suyu\\keys"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/yuzu/keys"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "Citra/sysdata/aes_keys.txt",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/azahar/sysdata"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Azahar\\sysdata"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "Citra/sysdata/boot9.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/azahar/sysdata"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Azahar\\sysdata"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"pattern": "scph*.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/duckstation/bios"
|
||||
],
|
||||
"windows": [
|
||||
"%LOCALAPPDATA%\\DuckStation\\bios",
|
||||
"%USERPROFILE%\\Documents\\DuckStation\\bios"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/DuckStation/bios"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"pattern": "ps2-*.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.config/PCSX2/bios",
|
||||
"$HOME/.var/app/net.pcsx2.PCSX2/config/PCSX2/bios"
|
||||
],
|
||||
"windows": [
|
||||
"%USERPROFILE%\\Documents\\PCSX2\\bios"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/PCSX2/bios"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"note": "PS3 firmware (PS3UPDAT.PUP) found. Install via RPCS3 > File > Install Firmware.",
|
||||
"detect": {
|
||||
"linux": [
|
||||
"$HOME/.config/rpcs3"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\rpcs3"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "GC/USA/IPL.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/dolphin-emu/GC/USA"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Dolphin Emulator\\GC\\USA"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/Dolphin/GC/USA"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "GC/EUR/IPL.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/dolphin-emu/GC/EUR"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Dolphin Emulator\\GC\\EUR"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/Dolphin/GC/EUR"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "GC/JAP/IPL.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/dolphin-emu/GC/JAP"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Dolphin Emulator\\GC\\JAP"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/Dolphin/GC/JAP"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "dsp_rom.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/dolphin-emu"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Dolphin Emulator"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/Dolphin"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "dsp_coef.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/dolphin-emu"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Dolphin Emulator"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/Dolphin"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "PPSSPP/ppge_atlas.zim",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.config/ppsspp/PSP/SYSTEM"
|
||||
],
|
||||
"windows": [
|
||||
"%USERPROFILE%\\Documents\\PPSSPP\\PSP\\SYSTEM"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/PPSSPP/PSP/SYSTEM"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "dc/dc_boot.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/flycast/data",
|
||||
"$HOME/.var/app/org.flycast.Flycast/data/flycast"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\flycast\\data"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "dc/dc_nvmem.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/flycast/data",
|
||||
"$HOME/.var/app/org.flycast.Flycast/data/flycast"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\flycast\\data"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"platform": "recalbox",
|
||||
"display_name": "Recalbox",
|
||||
"version": "1.0",
|
||||
"generated": "2026-04-02T13:53:15Z",
|
||||
"generated": "2026-04-03T09:44:06Z",
|
||||
"base_destination": "bios",
|
||||
"detect": [
|
||||
{
|
||||
@@ -14,7 +14,222 @@
|
||||
"bios_path": "/recalbox/share/bios"
|
||||
}
|
||||
],
|
||||
"standalone_copies": [],
|
||||
"standalone_copies": [
|
||||
{
|
||||
"file": "prod.keys",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/yuzu/keys",
|
||||
"$HOME/.local/share/eden/keys",
|
||||
"$HOME/.local/share/citron/keys",
|
||||
"$HOME/.local/share/suyu/keys",
|
||||
"$HOME/.config/Ryujinx/system"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\yuzu\\keys",
|
||||
"%APPDATA%\\eden\\keys",
|
||||
"%APPDATA%\\citron\\keys",
|
||||
"%APPDATA%\\suyu\\keys",
|
||||
"%APPDATA%\\Ryujinx\\system"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/yuzu/keys",
|
||||
"$HOME/Library/Application Support/Ryujinx/system"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "title.keys",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/yuzu/keys",
|
||||
"$HOME/.local/share/eden/keys",
|
||||
"$HOME/.local/share/citron/keys",
|
||||
"$HOME/.local/share/suyu/keys"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\yuzu\\keys",
|
||||
"%APPDATA%\\eden\\keys",
|
||||
"%APPDATA%\\citron\\keys",
|
||||
"%APPDATA%\\suyu\\keys"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/yuzu/keys"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "Citra/sysdata/aes_keys.txt",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/azahar/sysdata"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Azahar\\sysdata"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "Citra/sysdata/boot9.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/azahar/sysdata"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Azahar\\sysdata"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"pattern": "scph*.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/duckstation/bios"
|
||||
],
|
||||
"windows": [
|
||||
"%LOCALAPPDATA%\\DuckStation\\bios",
|
||||
"%USERPROFILE%\\Documents\\DuckStation\\bios"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/DuckStation/bios"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"pattern": "ps2-*.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.config/PCSX2/bios",
|
||||
"$HOME/.var/app/net.pcsx2.PCSX2/config/PCSX2/bios"
|
||||
],
|
||||
"windows": [
|
||||
"%USERPROFILE%\\Documents\\PCSX2\\bios"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/PCSX2/bios"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"note": "PS3 firmware (PS3UPDAT.PUP) found. Install via RPCS3 > File > Install Firmware.",
|
||||
"detect": {
|
||||
"linux": [
|
||||
"$HOME/.config/rpcs3"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\rpcs3"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "GC/USA/IPL.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/dolphin-emu/GC/USA"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Dolphin Emulator\\GC\\USA"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/Dolphin/GC/USA"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "GC/EUR/IPL.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/dolphin-emu/GC/EUR"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Dolphin Emulator\\GC\\EUR"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/Dolphin/GC/EUR"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "GC/JAP/IPL.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/dolphin-emu/GC/JAP"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Dolphin Emulator\\GC\\JAP"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/Dolphin/GC/JAP"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "dsp_rom.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/dolphin-emu"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Dolphin Emulator"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/Dolphin"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "dsp_coef.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/dolphin-emu"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Dolphin Emulator"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/Dolphin"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "PPSSPP/ppge_atlas.zim",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.config/ppsspp/PSP/SYSTEM"
|
||||
],
|
||||
"windows": [
|
||||
"%USERPROFILE%\\Documents\\PPSSPP\\PSP\\SYSTEM"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/PPSSPP/PSP/SYSTEM"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "dc/dc_boot.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/flycast/data",
|
||||
"$HOME/.var/app/org.flycast.Flycast/data/flycast"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\flycast\\data"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "dc/dc_nvmem.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/flycast/data",
|
||||
"$HOME/.var/app/org.flycast.Flycast/data/flycast"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\flycast\\data"
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"total_files": 1107,
|
||||
"total_size": 3980096655,
|
||||
"files": [
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"platform": "retroarch",
|
||||
"display_name": "RetroArch",
|
||||
"version": "1.0",
|
||||
"generated": "2026-04-02T13:52:45Z",
|
||||
"generated": "2026-04-03T09:43:38Z",
|
||||
"base_destination": "system",
|
||||
"detect": [
|
||||
{
|
||||
@@ -32,7 +32,222 @@
|
||||
"parse_key": "system_directory"
|
||||
}
|
||||
],
|
||||
"standalone_copies": [],
|
||||
"standalone_copies": [
|
||||
{
|
||||
"file": "prod.keys",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/yuzu/keys",
|
||||
"$HOME/.local/share/eden/keys",
|
||||
"$HOME/.local/share/citron/keys",
|
||||
"$HOME/.local/share/suyu/keys",
|
||||
"$HOME/.config/Ryujinx/system"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\yuzu\\keys",
|
||||
"%APPDATA%\\eden\\keys",
|
||||
"%APPDATA%\\citron\\keys",
|
||||
"%APPDATA%\\suyu\\keys",
|
||||
"%APPDATA%\\Ryujinx\\system"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/yuzu/keys",
|
||||
"$HOME/Library/Application Support/Ryujinx/system"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "title.keys",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/yuzu/keys",
|
||||
"$HOME/.local/share/eden/keys",
|
||||
"$HOME/.local/share/citron/keys",
|
||||
"$HOME/.local/share/suyu/keys"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\yuzu\\keys",
|
||||
"%APPDATA%\\eden\\keys",
|
||||
"%APPDATA%\\citron\\keys",
|
||||
"%APPDATA%\\suyu\\keys"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/yuzu/keys"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "Citra/sysdata/aes_keys.txt",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/azahar/sysdata"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Azahar\\sysdata"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "Citra/sysdata/boot9.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/azahar/sysdata"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Azahar\\sysdata"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"pattern": "scph*.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/duckstation/bios"
|
||||
],
|
||||
"windows": [
|
||||
"%LOCALAPPDATA%\\DuckStation\\bios",
|
||||
"%USERPROFILE%\\Documents\\DuckStation\\bios"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/DuckStation/bios"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"pattern": "ps2-*.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.config/PCSX2/bios",
|
||||
"$HOME/.var/app/net.pcsx2.PCSX2/config/PCSX2/bios"
|
||||
],
|
||||
"windows": [
|
||||
"%USERPROFILE%\\Documents\\PCSX2\\bios"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/PCSX2/bios"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"note": "PS3 firmware (PS3UPDAT.PUP) found. Install via RPCS3 > File > Install Firmware.",
|
||||
"detect": {
|
||||
"linux": [
|
||||
"$HOME/.config/rpcs3"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\rpcs3"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "GC/USA/IPL.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/dolphin-emu/GC/USA"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Dolphin Emulator\\GC\\USA"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/Dolphin/GC/USA"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "GC/EUR/IPL.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/dolphin-emu/GC/EUR"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Dolphin Emulator\\GC\\EUR"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/Dolphin/GC/EUR"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "GC/JAP/IPL.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/dolphin-emu/GC/JAP"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Dolphin Emulator\\GC\\JAP"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/Dolphin/GC/JAP"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "dsp_rom.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/dolphin-emu"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Dolphin Emulator"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/Dolphin"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "dsp_coef.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/dolphin-emu"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Dolphin Emulator"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/Dolphin"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "PPSSPP/ppge_atlas.zim",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.config/ppsspp/PSP/SYSTEM"
|
||||
],
|
||||
"windows": [
|
||||
"%USERPROFILE%\\Documents\\PPSSPP\\PSP\\SYSTEM"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/PPSSPP/PSP/SYSTEM"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "dc/dc_boot.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/flycast/data",
|
||||
"$HOME/.var/app/org.flycast.Flycast/data/flycast"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\flycast\\data"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "dc/dc_nvmem.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/flycast/data",
|
||||
"$HOME/.var/app/org.flycast.Flycast/data/flycast"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\flycast\\data"
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"total_files": 1627,
|
||||
"total_size": 5735234905,
|
||||
"files": [
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"platform": "retrobat",
|
||||
"display_name": "RetroBat",
|
||||
"version": "1.0",
|
||||
"generated": "2026-04-02T13:53:25Z",
|
||||
"generated": "2026-04-03T09:44:16Z",
|
||||
"base_destination": "bios",
|
||||
"detect": [
|
||||
{
|
||||
@@ -13,7 +13,222 @@
|
||||
"path": "%USERPROFILE%\\RetroBat\\bios"
|
||||
}
|
||||
],
|
||||
"standalone_copies": [],
|
||||
"standalone_copies": [
|
||||
{
|
||||
"file": "prod.keys",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/yuzu/keys",
|
||||
"$HOME/.local/share/eden/keys",
|
||||
"$HOME/.local/share/citron/keys",
|
||||
"$HOME/.local/share/suyu/keys",
|
||||
"$HOME/.config/Ryujinx/system"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\yuzu\\keys",
|
||||
"%APPDATA%\\eden\\keys",
|
||||
"%APPDATA%\\citron\\keys",
|
||||
"%APPDATA%\\suyu\\keys",
|
||||
"%APPDATA%\\Ryujinx\\system"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/yuzu/keys",
|
||||
"$HOME/Library/Application Support/Ryujinx/system"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "title.keys",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/yuzu/keys",
|
||||
"$HOME/.local/share/eden/keys",
|
||||
"$HOME/.local/share/citron/keys",
|
||||
"$HOME/.local/share/suyu/keys"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\yuzu\\keys",
|
||||
"%APPDATA%\\eden\\keys",
|
||||
"%APPDATA%\\citron\\keys",
|
||||
"%APPDATA%\\suyu\\keys"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/yuzu/keys"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "Citra/sysdata/aes_keys.txt",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/azahar/sysdata"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Azahar\\sysdata"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "Citra/sysdata/boot9.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/azahar/sysdata"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Azahar\\sysdata"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"pattern": "scph*.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/duckstation/bios"
|
||||
],
|
||||
"windows": [
|
||||
"%LOCALAPPDATA%\\DuckStation\\bios",
|
||||
"%USERPROFILE%\\Documents\\DuckStation\\bios"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/DuckStation/bios"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"pattern": "ps2-*.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.config/PCSX2/bios",
|
||||
"$HOME/.var/app/net.pcsx2.PCSX2/config/PCSX2/bios"
|
||||
],
|
||||
"windows": [
|
||||
"%USERPROFILE%\\Documents\\PCSX2\\bios"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/PCSX2/bios"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"note": "PS3 firmware (PS3UPDAT.PUP) found. Install via RPCS3 > File > Install Firmware.",
|
||||
"detect": {
|
||||
"linux": [
|
||||
"$HOME/.config/rpcs3"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\rpcs3"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "GC/USA/IPL.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/dolphin-emu/GC/USA"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Dolphin Emulator\\GC\\USA"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/Dolphin/GC/USA"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "GC/EUR/IPL.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/dolphin-emu/GC/EUR"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Dolphin Emulator\\GC\\EUR"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/Dolphin/GC/EUR"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "GC/JAP/IPL.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/dolphin-emu/GC/JAP"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Dolphin Emulator\\GC\\JAP"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/Dolphin/GC/JAP"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "dsp_rom.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/dolphin-emu"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Dolphin Emulator"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/Dolphin"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "dsp_coef.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/dolphin-emu"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Dolphin Emulator"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/Dolphin"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "PPSSPP/ppge_atlas.zim",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.config/ppsspp/PSP/SYSTEM"
|
||||
],
|
||||
"windows": [
|
||||
"%USERPROFILE%\\Documents\\PPSSPP\\PSP\\SYSTEM"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/PPSSPP/PSP/SYSTEM"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "dc/dc_boot.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/flycast/data",
|
||||
"$HOME/.var/app/org.flycast.Flycast/data/flycast"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\flycast\\data"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "dc/dc_nvmem.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/flycast/data",
|
||||
"$HOME/.var/app/org.flycast.Flycast/data/flycast"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\flycast\\data"
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"total_files": 1169,
|
||||
"total_size": 4777641221,
|
||||
"files": [
|
||||
|
||||
@@ -4,17 +4,232 @@
|
||||
"platform": "retrodeck",
|
||||
"display_name": "RetroDECK",
|
||||
"version": "1.0",
|
||||
"generated": "2026-04-02T13:53:43Z",
|
||||
"generated": "2026-04-03T09:44:33Z",
|
||||
"base_destination": "",
|
||||
"detect": [
|
||||
{
|
||||
"os": "linux",
|
||||
"method": "path_exists",
|
||||
"path": "$HOME/.var/app/net.retrodeck.retrodeck",
|
||||
"bios_path": "$HOME/retrodeck/bios"
|
||||
"bios_path": "$HOME/retrodeck"
|
||||
}
|
||||
],
|
||||
"standalone_copies": [
|
||||
{
|
||||
"file": "prod.keys",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/yuzu/keys",
|
||||
"$HOME/.local/share/eden/keys",
|
||||
"$HOME/.local/share/citron/keys",
|
||||
"$HOME/.local/share/suyu/keys",
|
||||
"$HOME/.config/Ryujinx/system"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\yuzu\\keys",
|
||||
"%APPDATA%\\eden\\keys",
|
||||
"%APPDATA%\\citron\\keys",
|
||||
"%APPDATA%\\suyu\\keys",
|
||||
"%APPDATA%\\Ryujinx\\system"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/yuzu/keys",
|
||||
"$HOME/Library/Application Support/Ryujinx/system"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "title.keys",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/yuzu/keys",
|
||||
"$HOME/.local/share/eden/keys",
|
||||
"$HOME/.local/share/citron/keys",
|
||||
"$HOME/.local/share/suyu/keys"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\yuzu\\keys",
|
||||
"%APPDATA%\\eden\\keys",
|
||||
"%APPDATA%\\citron\\keys",
|
||||
"%APPDATA%\\suyu\\keys"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/yuzu/keys"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "Citra/sysdata/aes_keys.txt",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/azahar/sysdata"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Azahar\\sysdata"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "Citra/sysdata/boot9.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/azahar/sysdata"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Azahar\\sysdata"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"pattern": "scph*.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/duckstation/bios"
|
||||
],
|
||||
"windows": [
|
||||
"%LOCALAPPDATA%\\DuckStation\\bios",
|
||||
"%USERPROFILE%\\Documents\\DuckStation\\bios"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/DuckStation/bios"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"pattern": "ps2-*.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.config/PCSX2/bios",
|
||||
"$HOME/.var/app/net.pcsx2.PCSX2/config/PCSX2/bios"
|
||||
],
|
||||
"windows": [
|
||||
"%USERPROFILE%\\Documents\\PCSX2\\bios"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/PCSX2/bios"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"note": "PS3 firmware (PS3UPDAT.PUP) found. Install via RPCS3 > File > Install Firmware.",
|
||||
"detect": {
|
||||
"linux": [
|
||||
"$HOME/.config/rpcs3"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\rpcs3"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "GC/USA/IPL.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/dolphin-emu/GC/USA"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Dolphin Emulator\\GC\\USA"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/Dolphin/GC/USA"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "GC/EUR/IPL.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/dolphin-emu/GC/EUR"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Dolphin Emulator\\GC\\EUR"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/Dolphin/GC/EUR"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "GC/JAP/IPL.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/dolphin-emu/GC/JAP"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Dolphin Emulator\\GC\\JAP"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/Dolphin/GC/JAP"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "dsp_rom.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/dolphin-emu"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Dolphin Emulator"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/Dolphin"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "dsp_coef.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/dolphin-emu"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\Dolphin Emulator"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/Dolphin"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "PPSSPP/ppge_atlas.zim",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.config/ppsspp/PSP/SYSTEM"
|
||||
],
|
||||
"windows": [
|
||||
"%USERPROFILE%\\Documents\\PPSSPP\\PSP\\SYSTEM"
|
||||
],
|
||||
"darwin": [
|
||||
"$HOME/Library/Application Support/PPSSPP/PSP/SYSTEM"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "dc/dc_boot.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/flycast/data",
|
||||
"$HOME/.var/app/org.flycast.Flycast/data/flycast"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\flycast\\data"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "dc/dc_nvmem.bin",
|
||||
"targets": {
|
||||
"linux": [
|
||||
"$HOME/.local/share/flycast/data",
|
||||
"$HOME/.var/app/org.flycast.Flycast/data/flycast"
|
||||
],
|
||||
"windows": [
|
||||
"%APPDATA%\\flycast\\data"
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"standalone_copies": [],
|
||||
"total_files": 3153,
|
||||
"total_size": 6351500734,
|
||||
"files": [
|
||||
|
||||
@@ -52,6 +52,7 @@ plugins:
|
||||
- search
|
||||
nav:
|
||||
- Home: index.md
|
||||
- Which pack?: which-pack.md
|
||||
- Platforms:
|
||||
- Overview: platforms/index.md
|
||||
- Batocera: platforms/batocera.md
|
||||
@@ -480,4 +481,5 @@ nav:
|
||||
- Adding a scraper: wiki/adding-a-scraper.md
|
||||
- Testing guide: wiki/testing-guide.md
|
||||
- Release process: wiki/release-process.md
|
||||
- Community tools: wiki/community-tools.md
|
||||
- Contributing: contributing.md
|
||||
|
||||
@@ -32,6 +32,144 @@ platforms:
|
||||
method: config_file
|
||||
config: '%APPDATA%\RetroArch\retroarch.cfg'
|
||||
parse_key: system_directory
|
||||
standalone_copies:
|
||||
# Switch emulators (keys)
|
||||
- file: prod.keys
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/yuzu/keys
|
||||
- $HOME/.local/share/eden/keys
|
||||
- $HOME/.local/share/citron/keys
|
||||
- $HOME/.local/share/suyu/keys
|
||||
- $HOME/.config/Ryujinx/system
|
||||
windows:
|
||||
- '%APPDATA%\yuzu\keys'
|
||||
- '%APPDATA%\eden\keys'
|
||||
- '%APPDATA%\citron\keys'
|
||||
- '%APPDATA%\suyu\keys'
|
||||
- '%APPDATA%\Ryujinx\system'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/yuzu/keys
|
||||
- $HOME/Library/Application Support/Ryujinx/system
|
||||
- file: title.keys
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/yuzu/keys
|
||||
- $HOME/.local/share/eden/keys
|
||||
- $HOME/.local/share/citron/keys
|
||||
- $HOME/.local/share/suyu/keys
|
||||
windows:
|
||||
- '%APPDATA%\yuzu\keys'
|
||||
- '%APPDATA%\eden\keys'
|
||||
- '%APPDATA%\citron\keys'
|
||||
- '%APPDATA%\suyu\keys'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/yuzu/keys
|
||||
# 3DS emulators
|
||||
- file: Citra/sysdata/aes_keys.txt
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/azahar/sysdata
|
||||
windows:
|
||||
- '%APPDATA%\Azahar\sysdata'
|
||||
- file: Citra/sysdata/boot9.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/azahar/sysdata
|
||||
windows:
|
||||
- '%APPDATA%\Azahar\sysdata'
|
||||
# DuckStation (PS1)
|
||||
- pattern: 'scph*.bin'
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/duckstation/bios
|
||||
windows:
|
||||
- '%LOCALAPPDATA%\DuckStation\bios'
|
||||
- '%USERPROFILE%\Documents\DuckStation\bios'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/DuckStation/bios
|
||||
# PCSX2 (PS2)
|
||||
- pattern: 'ps2-*.bin'
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.config/PCSX2/bios
|
||||
- $HOME/.var/app/net.pcsx2.PCSX2/config/PCSX2/bios
|
||||
windows:
|
||||
- '%USERPROFILE%\Documents\PCSX2\bios'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/PCSX2/bios
|
||||
# RPCS3 (PS3) - needs menu install
|
||||
- note: 'PS3 firmware (PS3UPDAT.PUP) found. Install via RPCS3 > File > Install Firmware.'
|
||||
detect:
|
||||
linux:
|
||||
- $HOME/.config/rpcs3
|
||||
windows:
|
||||
- '%APPDATA%\rpcs3'
|
||||
# Dolphin (GameCube)
|
||||
- file: GC/USA/IPL.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/dolphin-emu/GC/USA
|
||||
windows:
|
||||
- '%APPDATA%\Dolphin Emulator\GC\USA'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/Dolphin/GC/USA
|
||||
- file: GC/EUR/IPL.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/dolphin-emu/GC/EUR
|
||||
windows:
|
||||
- '%APPDATA%\Dolphin Emulator\GC\EUR'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/Dolphin/GC/EUR
|
||||
- file: GC/JAP/IPL.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/dolphin-emu/GC/JAP
|
||||
windows:
|
||||
- '%APPDATA%\Dolphin Emulator\GC\JAP'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/Dolphin/GC/JAP
|
||||
- file: dsp_rom.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/dolphin-emu
|
||||
windows:
|
||||
- '%APPDATA%\Dolphin Emulator'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/Dolphin
|
||||
- file: dsp_coef.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/dolphin-emu
|
||||
windows:
|
||||
- '%APPDATA%\Dolphin Emulator'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/Dolphin
|
||||
# PPSSPP
|
||||
- file: PPSSPP/ppge_atlas.zim
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.config/ppsspp/PSP/SYSTEM
|
||||
windows:
|
||||
- '%USERPROFILE%\Documents\PPSSPP\PSP\SYSTEM'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/PPSSPP/PSP/SYSTEM
|
||||
# Flycast (Dreamcast)
|
||||
- file: dc/dc_boot.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/flycast/data
|
||||
- $HOME/.var/app/org.flycast.Flycast/data/flycast
|
||||
windows:
|
||||
- '%APPDATA%\flycast\data'
|
||||
- file: dc/dc_nvmem.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/flycast/data
|
||||
- $HOME/.var/app/org.flycast.Flycast/data/flycast
|
||||
windows:
|
||||
- '%APPDATA%\flycast\data'
|
||||
batocera:
|
||||
config: batocera.yml
|
||||
status: active
|
||||
@@ -256,6 +394,144 @@ platforms:
|
||||
method: file_exists
|
||||
file: /etc/batocera-version
|
||||
bios_path: /userdata/bios
|
||||
standalone_copies:
|
||||
# Switch emulators (keys)
|
||||
- file: prod.keys
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/yuzu/keys
|
||||
- $HOME/.local/share/eden/keys
|
||||
- $HOME/.local/share/citron/keys
|
||||
- $HOME/.local/share/suyu/keys
|
||||
- $HOME/.config/Ryujinx/system
|
||||
windows:
|
||||
- '%APPDATA%\yuzu\keys'
|
||||
- '%APPDATA%\eden\keys'
|
||||
- '%APPDATA%\citron\keys'
|
||||
- '%APPDATA%\suyu\keys'
|
||||
- '%APPDATA%\Ryujinx\system'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/yuzu/keys
|
||||
- $HOME/Library/Application Support/Ryujinx/system
|
||||
- file: title.keys
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/yuzu/keys
|
||||
- $HOME/.local/share/eden/keys
|
||||
- $HOME/.local/share/citron/keys
|
||||
- $HOME/.local/share/suyu/keys
|
||||
windows:
|
||||
- '%APPDATA%\yuzu\keys'
|
||||
- '%APPDATA%\eden\keys'
|
||||
- '%APPDATA%\citron\keys'
|
||||
- '%APPDATA%\suyu\keys'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/yuzu/keys
|
||||
# 3DS emulators
|
||||
- file: Citra/sysdata/aes_keys.txt
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/azahar/sysdata
|
||||
windows:
|
||||
- '%APPDATA%\Azahar\sysdata'
|
||||
- file: Citra/sysdata/boot9.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/azahar/sysdata
|
||||
windows:
|
||||
- '%APPDATA%\Azahar\sysdata'
|
||||
# DuckStation (PS1)
|
||||
- pattern: 'scph*.bin'
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/duckstation/bios
|
||||
windows:
|
||||
- '%LOCALAPPDATA%\DuckStation\bios'
|
||||
- '%USERPROFILE%\Documents\DuckStation\bios'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/DuckStation/bios
|
||||
# PCSX2 (PS2)
|
||||
- pattern: 'ps2-*.bin'
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.config/PCSX2/bios
|
||||
- $HOME/.var/app/net.pcsx2.PCSX2/config/PCSX2/bios
|
||||
windows:
|
||||
- '%USERPROFILE%\Documents\PCSX2\bios'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/PCSX2/bios
|
||||
# RPCS3 (PS3) - needs menu install
|
||||
- note: 'PS3 firmware (PS3UPDAT.PUP) found. Install via RPCS3 > File > Install Firmware.'
|
||||
detect:
|
||||
linux:
|
||||
- $HOME/.config/rpcs3
|
||||
windows:
|
||||
- '%APPDATA%\rpcs3'
|
||||
# Dolphin (GameCube)
|
||||
- file: GC/USA/IPL.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/dolphin-emu/GC/USA
|
||||
windows:
|
||||
- '%APPDATA%\Dolphin Emulator\GC\USA'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/Dolphin/GC/USA
|
||||
- file: GC/EUR/IPL.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/dolphin-emu/GC/EUR
|
||||
windows:
|
||||
- '%APPDATA%\Dolphin Emulator\GC\EUR'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/Dolphin/GC/EUR
|
||||
- file: GC/JAP/IPL.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/dolphin-emu/GC/JAP
|
||||
windows:
|
||||
- '%APPDATA%\Dolphin Emulator\GC\JAP'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/Dolphin/GC/JAP
|
||||
- file: dsp_rom.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/dolphin-emu
|
||||
windows:
|
||||
- '%APPDATA%\Dolphin Emulator'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/Dolphin
|
||||
- file: dsp_coef.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/dolphin-emu
|
||||
windows:
|
||||
- '%APPDATA%\Dolphin Emulator'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/Dolphin
|
||||
# PPSSPP
|
||||
- file: PPSSPP/ppge_atlas.zim
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.config/ppsspp/PSP/SYSTEM
|
||||
windows:
|
||||
- '%USERPROFILE%\Documents\PPSSPP\PSP\SYSTEM'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/PPSSPP/PSP/SYSTEM
|
||||
# Flycast (Dreamcast)
|
||||
- file: dc/dc_boot.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/flycast/data
|
||||
- $HOME/.var/app/org.flycast.Flycast/data/flycast
|
||||
windows:
|
||||
- '%APPDATA%\flycast\data'
|
||||
- file: dc/dc_nvmem.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/flycast/data
|
||||
- $HOME/.var/app/org.flycast.Flycast/data/flycast
|
||||
windows:
|
||||
- '%APPDATA%\flycast\data'
|
||||
recalbox:
|
||||
config: recalbox.yml
|
||||
status: active
|
||||
@@ -468,6 +744,144 @@ platforms:
|
||||
method: file_exists
|
||||
file: /usr/bin/recalbox-settings
|
||||
bios_path: /recalbox/share/bios
|
||||
standalone_copies:
|
||||
# Switch emulators (keys)
|
||||
- file: prod.keys
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/yuzu/keys
|
||||
- $HOME/.local/share/eden/keys
|
||||
- $HOME/.local/share/citron/keys
|
||||
- $HOME/.local/share/suyu/keys
|
||||
- $HOME/.config/Ryujinx/system
|
||||
windows:
|
||||
- '%APPDATA%\yuzu\keys'
|
||||
- '%APPDATA%\eden\keys'
|
||||
- '%APPDATA%\citron\keys'
|
||||
- '%APPDATA%\suyu\keys'
|
||||
- '%APPDATA%\Ryujinx\system'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/yuzu/keys
|
||||
- $HOME/Library/Application Support/Ryujinx/system
|
||||
- file: title.keys
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/yuzu/keys
|
||||
- $HOME/.local/share/eden/keys
|
||||
- $HOME/.local/share/citron/keys
|
||||
- $HOME/.local/share/suyu/keys
|
||||
windows:
|
||||
- '%APPDATA%\yuzu\keys'
|
||||
- '%APPDATA%\eden\keys'
|
||||
- '%APPDATA%\citron\keys'
|
||||
- '%APPDATA%\suyu\keys'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/yuzu/keys
|
||||
# 3DS emulators
|
||||
- file: Citra/sysdata/aes_keys.txt
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/azahar/sysdata
|
||||
windows:
|
||||
- '%APPDATA%\Azahar\sysdata'
|
||||
- file: Citra/sysdata/boot9.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/azahar/sysdata
|
||||
windows:
|
||||
- '%APPDATA%\Azahar\sysdata'
|
||||
# DuckStation (PS1)
|
||||
- pattern: 'scph*.bin'
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/duckstation/bios
|
||||
windows:
|
||||
- '%LOCALAPPDATA%\DuckStation\bios'
|
||||
- '%USERPROFILE%\Documents\DuckStation\bios'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/DuckStation/bios
|
||||
# PCSX2 (PS2)
|
||||
- pattern: 'ps2-*.bin'
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.config/PCSX2/bios
|
||||
- $HOME/.var/app/net.pcsx2.PCSX2/config/PCSX2/bios
|
||||
windows:
|
||||
- '%USERPROFILE%\Documents\PCSX2\bios'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/PCSX2/bios
|
||||
# RPCS3 (PS3) - needs menu install
|
||||
- note: 'PS3 firmware (PS3UPDAT.PUP) found. Install via RPCS3 > File > Install Firmware.'
|
||||
detect:
|
||||
linux:
|
||||
- $HOME/.config/rpcs3
|
||||
windows:
|
||||
- '%APPDATA%\rpcs3'
|
||||
# Dolphin (GameCube)
|
||||
- file: GC/USA/IPL.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/dolphin-emu/GC/USA
|
||||
windows:
|
||||
- '%APPDATA%\Dolphin Emulator\GC\USA'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/Dolphin/GC/USA
|
||||
- file: GC/EUR/IPL.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/dolphin-emu/GC/EUR
|
||||
windows:
|
||||
- '%APPDATA%\Dolphin Emulator\GC\EUR'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/Dolphin/GC/EUR
|
||||
- file: GC/JAP/IPL.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/dolphin-emu/GC/JAP
|
||||
windows:
|
||||
- '%APPDATA%\Dolphin Emulator\GC\JAP'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/Dolphin/GC/JAP
|
||||
- file: dsp_rom.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/dolphin-emu
|
||||
windows:
|
||||
- '%APPDATA%\Dolphin Emulator'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/Dolphin
|
||||
- file: dsp_coef.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/dolphin-emu
|
||||
windows:
|
||||
- '%APPDATA%\Dolphin Emulator'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/Dolphin
|
||||
# PPSSPP
|
||||
- file: PPSSPP/ppge_atlas.zim
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.config/ppsspp/PSP/SYSTEM
|
||||
windows:
|
||||
- '%USERPROFILE%\Documents\PPSSPP\PSP\SYSTEM'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/PPSSPP/PSP/SYSTEM
|
||||
# Flycast (Dreamcast)
|
||||
- file: dc/dc_boot.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/flycast/data
|
||||
- $HOME/.var/app/org.flycast.Flycast/data/flycast
|
||||
windows:
|
||||
- '%APPDATA%\flycast\data'
|
||||
- file: dc/dc_nvmem.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/flycast/data
|
||||
- $HOME/.var/app/org.flycast.Flycast/data/flycast
|
||||
windows:
|
||||
- '%APPDATA%\flycast\data'
|
||||
retrobat:
|
||||
config: retrobat.yml
|
||||
status: active
|
||||
@@ -653,6 +1067,144 @@ platforms:
|
||||
- os: windows
|
||||
method: path_exists
|
||||
path: '%USERPROFILE%\RetroBat\bios'
|
||||
standalone_copies:
|
||||
# Switch emulators (keys)
|
||||
- file: prod.keys
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/yuzu/keys
|
||||
- $HOME/.local/share/eden/keys
|
||||
- $HOME/.local/share/citron/keys
|
||||
- $HOME/.local/share/suyu/keys
|
||||
- $HOME/.config/Ryujinx/system
|
||||
windows:
|
||||
- '%APPDATA%\yuzu\keys'
|
||||
- '%APPDATA%\eden\keys'
|
||||
- '%APPDATA%\citron\keys'
|
||||
- '%APPDATA%\suyu\keys'
|
||||
- '%APPDATA%\Ryujinx\system'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/yuzu/keys
|
||||
- $HOME/Library/Application Support/Ryujinx/system
|
||||
- file: title.keys
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/yuzu/keys
|
||||
- $HOME/.local/share/eden/keys
|
||||
- $HOME/.local/share/citron/keys
|
||||
- $HOME/.local/share/suyu/keys
|
||||
windows:
|
||||
- '%APPDATA%\yuzu\keys'
|
||||
- '%APPDATA%\eden\keys'
|
||||
- '%APPDATA%\citron\keys'
|
||||
- '%APPDATA%\suyu\keys'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/yuzu/keys
|
||||
# 3DS emulators
|
||||
- file: Citra/sysdata/aes_keys.txt
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/azahar/sysdata
|
||||
windows:
|
||||
- '%APPDATA%\Azahar\sysdata'
|
||||
- file: Citra/sysdata/boot9.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/azahar/sysdata
|
||||
windows:
|
||||
- '%APPDATA%\Azahar\sysdata'
|
||||
# DuckStation (PS1)
|
||||
- pattern: 'scph*.bin'
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/duckstation/bios
|
||||
windows:
|
||||
- '%LOCALAPPDATA%\DuckStation\bios'
|
||||
- '%USERPROFILE%\Documents\DuckStation\bios'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/DuckStation/bios
|
||||
# PCSX2 (PS2)
|
||||
- pattern: 'ps2-*.bin'
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.config/PCSX2/bios
|
||||
- $HOME/.var/app/net.pcsx2.PCSX2/config/PCSX2/bios
|
||||
windows:
|
||||
- '%USERPROFILE%\Documents\PCSX2\bios'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/PCSX2/bios
|
||||
# RPCS3 (PS3) - needs menu install
|
||||
- note: 'PS3 firmware (PS3UPDAT.PUP) found. Install via RPCS3 > File > Install Firmware.'
|
||||
detect:
|
||||
linux:
|
||||
- $HOME/.config/rpcs3
|
||||
windows:
|
||||
- '%APPDATA%\rpcs3'
|
||||
# Dolphin (GameCube)
|
||||
- file: GC/USA/IPL.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/dolphin-emu/GC/USA
|
||||
windows:
|
||||
- '%APPDATA%\Dolphin Emulator\GC\USA'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/Dolphin/GC/USA
|
||||
- file: GC/EUR/IPL.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/dolphin-emu/GC/EUR
|
||||
windows:
|
||||
- '%APPDATA%\Dolphin Emulator\GC\EUR'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/Dolphin/GC/EUR
|
||||
- file: GC/JAP/IPL.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/dolphin-emu/GC/JAP
|
||||
windows:
|
||||
- '%APPDATA%\Dolphin Emulator\GC\JAP'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/Dolphin/GC/JAP
|
||||
- file: dsp_rom.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/dolphin-emu
|
||||
windows:
|
||||
- '%APPDATA%\Dolphin Emulator'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/Dolphin
|
||||
- file: dsp_coef.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/dolphin-emu
|
||||
windows:
|
||||
- '%APPDATA%\Dolphin Emulator'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/Dolphin
|
||||
# PPSSPP
|
||||
- file: PPSSPP/ppge_atlas.zim
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.config/ppsspp/PSP/SYSTEM
|
||||
windows:
|
||||
- '%USERPROFILE%\Documents\PPSSPP\PSP\SYSTEM'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/PPSSPP/PSP/SYSTEM
|
||||
# Flycast (Dreamcast)
|
||||
- file: dc/dc_boot.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/flycast/data
|
||||
- $HOME/.var/app/org.flycast.Flycast/data/flycast
|
||||
windows:
|
||||
- '%APPDATA%\flycast\data'
|
||||
- file: dc/dc_nvmem.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/flycast/data
|
||||
- $HOME/.var/app/org.flycast.Flycast/data/flycast
|
||||
windows:
|
||||
- '%APPDATA%\flycast\data'
|
||||
emudeck:
|
||||
config: emudeck.yml
|
||||
status: active
|
||||
@@ -681,19 +1233,143 @@ platforms:
|
||||
parse_key: $emulationPath
|
||||
bios_subdir: bios
|
||||
standalone_copies:
|
||||
# Switch emulators (keys)
|
||||
- file: prod.keys
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/yuzu/keys
|
||||
- $HOME/.local/share/eden/keys
|
||||
- $HOME/.local/share/citron/keys
|
||||
- $HOME/.local/share/suyu/keys
|
||||
- $HOME/.config/Ryujinx/system
|
||||
windows:
|
||||
- '%APPDATA%\yuzu\keys'
|
||||
- '%APPDATA%\eden\keys'
|
||||
- file: aes_keys.txt
|
||||
- '%APPDATA%\citron\keys'
|
||||
- '%APPDATA%\suyu\keys'
|
||||
- '%APPDATA%\Ryujinx\system'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/yuzu/keys
|
||||
- $HOME/Library/Application Support/Ryujinx/system
|
||||
- file: title.keys
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/Emulation/bios/citra/keys
|
||||
- $HOME/.local/share/yuzu/keys
|
||||
- $HOME/.local/share/eden/keys
|
||||
- $HOME/.local/share/citron/keys
|
||||
- $HOME/.local/share/suyu/keys
|
||||
windows:
|
||||
- '%APPDATA%\yuzu\keys'
|
||||
- '%APPDATA%\eden\keys'
|
||||
- '%APPDATA%\citron\keys'
|
||||
- '%APPDATA%\suyu\keys'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/yuzu/keys
|
||||
# 3DS emulators
|
||||
- file: Citra/sysdata/aes_keys.txt
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/azahar/sysdata
|
||||
windows:
|
||||
- '%APPDATA%\Azahar\sysdata'
|
||||
- file: Citra/sysdata/boot9.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/azahar/sysdata
|
||||
windows:
|
||||
- '%APPDATA%\Azahar\sysdata'
|
||||
# DuckStation (PS1)
|
||||
- pattern: 'scph*.bin'
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/duckstation/bios
|
||||
windows:
|
||||
- '%LOCALAPPDATA%\DuckStation\bios'
|
||||
- '%USERPROFILE%\Documents\DuckStation\bios'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/DuckStation/bios
|
||||
# PCSX2 (PS2)
|
||||
- pattern: 'ps2-*.bin'
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.config/PCSX2/bios
|
||||
- $HOME/.var/app/net.pcsx2.PCSX2/config/PCSX2/bios
|
||||
windows:
|
||||
- '%USERPROFILE%\Documents\PCSX2\bios'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/PCSX2/bios
|
||||
# RPCS3 (PS3) - needs menu install
|
||||
- note: 'PS3 firmware (PS3UPDAT.PUP) found. Install via RPCS3 > File > Install Firmware.'
|
||||
detect:
|
||||
linux:
|
||||
- $HOME/.config/rpcs3
|
||||
windows:
|
||||
- '%APPDATA%\rpcs3'
|
||||
# Dolphin (GameCube)
|
||||
- file: GC/USA/IPL.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/dolphin-emu/GC/USA
|
||||
windows:
|
||||
- '%APPDATA%\Dolphin Emulator\GC\USA'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/Dolphin/GC/USA
|
||||
- file: GC/EUR/IPL.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/dolphin-emu/GC/EUR
|
||||
windows:
|
||||
- '%APPDATA%\Dolphin Emulator\GC\EUR'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/Dolphin/GC/EUR
|
||||
- file: GC/JAP/IPL.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/dolphin-emu/GC/JAP
|
||||
windows:
|
||||
- '%APPDATA%\Dolphin Emulator\GC\JAP'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/Dolphin/GC/JAP
|
||||
- file: dsp_rom.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/dolphin-emu
|
||||
windows:
|
||||
- '%APPDATA%\Dolphin Emulator'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/Dolphin
|
||||
- file: dsp_coef.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/dolphin-emu
|
||||
windows:
|
||||
- '%APPDATA%\Dolphin Emulator'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/Dolphin
|
||||
# PPSSPP
|
||||
- file: PPSSPP/ppge_atlas.zim
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.config/ppsspp/PSP/SYSTEM
|
||||
windows:
|
||||
- '%USERPROFILE%\Documents\PPSSPP\PSP\SYSTEM'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/PPSSPP/PSP/SYSTEM
|
||||
# Flycast (Dreamcast)
|
||||
- file: dc/dc_boot.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/flycast/data
|
||||
- $HOME/.var/app/org.flycast.Flycast/data/flycast
|
||||
windows:
|
||||
- '%APPDATA%\flycast\data'
|
||||
- file: dc/dc_nvmem.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/flycast/data
|
||||
- $HOME/.var/app/org.flycast.Flycast/data/flycast
|
||||
windows:
|
||||
- '%APPDATA%\flycast\data'
|
||||
lakka:
|
||||
config: lakka.yml
|
||||
status: active
|
||||
@@ -752,7 +1428,145 @@ platforms:
|
||||
- os: linux
|
||||
method: path_exists
|
||||
path: $HOME/.var/app/net.retrodeck.retrodeck
|
||||
bios_path: $HOME/retrodeck/bios
|
||||
bios_path: $HOME/retrodeck
|
||||
standalone_copies:
|
||||
# Switch emulators (keys)
|
||||
- file: prod.keys
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/yuzu/keys
|
||||
- $HOME/.local/share/eden/keys
|
||||
- $HOME/.local/share/citron/keys
|
||||
- $HOME/.local/share/suyu/keys
|
||||
- $HOME/.config/Ryujinx/system
|
||||
windows:
|
||||
- '%APPDATA%\yuzu\keys'
|
||||
- '%APPDATA%\eden\keys'
|
||||
- '%APPDATA%\citron\keys'
|
||||
- '%APPDATA%\suyu\keys'
|
||||
- '%APPDATA%\Ryujinx\system'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/yuzu/keys
|
||||
- $HOME/Library/Application Support/Ryujinx/system
|
||||
- file: title.keys
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/yuzu/keys
|
||||
- $HOME/.local/share/eden/keys
|
||||
- $HOME/.local/share/citron/keys
|
||||
- $HOME/.local/share/suyu/keys
|
||||
windows:
|
||||
- '%APPDATA%\yuzu\keys'
|
||||
- '%APPDATA%\eden\keys'
|
||||
- '%APPDATA%\citron\keys'
|
||||
- '%APPDATA%\suyu\keys'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/yuzu/keys
|
||||
# 3DS emulators
|
||||
- file: Citra/sysdata/aes_keys.txt
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/azahar/sysdata
|
||||
windows:
|
||||
- '%APPDATA%\Azahar\sysdata'
|
||||
- file: Citra/sysdata/boot9.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/azahar/sysdata
|
||||
windows:
|
||||
- '%APPDATA%\Azahar\sysdata'
|
||||
# DuckStation (PS1)
|
||||
- pattern: 'scph*.bin'
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/duckstation/bios
|
||||
windows:
|
||||
- '%LOCALAPPDATA%\DuckStation\bios'
|
||||
- '%USERPROFILE%\Documents\DuckStation\bios'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/DuckStation/bios
|
||||
# PCSX2 (PS2)
|
||||
- pattern: 'ps2-*.bin'
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.config/PCSX2/bios
|
||||
- $HOME/.var/app/net.pcsx2.PCSX2/config/PCSX2/bios
|
||||
windows:
|
||||
- '%USERPROFILE%\Documents\PCSX2\bios'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/PCSX2/bios
|
||||
# RPCS3 (PS3) - needs menu install
|
||||
- note: 'PS3 firmware (PS3UPDAT.PUP) found. Install via RPCS3 > File > Install Firmware.'
|
||||
detect:
|
||||
linux:
|
||||
- $HOME/.config/rpcs3
|
||||
windows:
|
||||
- '%APPDATA%\rpcs3'
|
||||
# Dolphin (GameCube)
|
||||
- file: GC/USA/IPL.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/dolphin-emu/GC/USA
|
||||
windows:
|
||||
- '%APPDATA%\Dolphin Emulator\GC\USA'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/Dolphin/GC/USA
|
||||
- file: GC/EUR/IPL.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/dolphin-emu/GC/EUR
|
||||
windows:
|
||||
- '%APPDATA%\Dolphin Emulator\GC\EUR'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/Dolphin/GC/EUR
|
||||
- file: GC/JAP/IPL.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/dolphin-emu/GC/JAP
|
||||
windows:
|
||||
- '%APPDATA%\Dolphin Emulator\GC\JAP'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/Dolphin/GC/JAP
|
||||
- file: dsp_rom.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/dolphin-emu
|
||||
windows:
|
||||
- '%APPDATA%\Dolphin Emulator'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/Dolphin
|
||||
- file: dsp_coef.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/dolphin-emu
|
||||
windows:
|
||||
- '%APPDATA%\Dolphin Emulator'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/Dolphin
|
||||
# PPSSPP
|
||||
- file: PPSSPP/ppge_atlas.zim
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.config/ppsspp/PSP/SYSTEM
|
||||
windows:
|
||||
- '%USERPROFILE%\Documents\PPSSPP\PSP\SYSTEM'
|
||||
darwin:
|
||||
- $HOME/Library/Application Support/PPSSPP/PSP/SYSTEM
|
||||
# Flycast (Dreamcast)
|
||||
- file: dc/dc_boot.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/flycast/data
|
||||
- $HOME/.var/app/org.flycast.Flycast/data/flycast
|
||||
windows:
|
||||
- '%APPDATA%\flycast\data'
|
||||
- file: dc/dc_nvmem.bin
|
||||
targets:
|
||||
linux:
|
||||
- $HOME/.local/share/flycast/data
|
||||
- $HOME/.var/app/org.flycast.Flycast/data/flycast
|
||||
windows:
|
||||
- '%APPDATA%\flycast\data'
|
||||
romm:
|
||||
config: romm.yml
|
||||
status: active
|
||||
|
||||
@@ -743,15 +743,13 @@ def group_identical_platforms(
|
||||
inherits[platform] = False
|
||||
continue
|
||||
|
||||
base_dest = config.get("base_destination", "")
|
||||
entries = []
|
||||
for sys_id, system in sorted(config.get("systems", {}).items()):
|
||||
for fe in system.get("files", []):
|
||||
dest = fe.get("destination", fe.get("name", ""))
|
||||
full_dest = f"{base_dest}/{dest}" if base_dest else dest
|
||||
sha1 = fe.get("sha1", "")
|
||||
md5 = fe.get("md5", "")
|
||||
entries.append(f"{full_dest}|{sha1}|{md5}")
|
||||
entries.append(f"{dest}|{sha1}|{md5}")
|
||||
|
||||
fp = hashlib.sha1("|".join(sorted(entries)).encode()).hexdigest()
|
||||
if target_cores_cache:
|
||||
|
||||
@@ -246,6 +246,13 @@ def _register_path(dest: str, seen_files: set[str], seen_parents: set[str]) -> N
|
||||
seen_parents.add(parent)
|
||||
|
||||
|
||||
def _flat(arcname: str, prefix: str, flatten: bool) -> str:
|
||||
"""Strip base_destination prefix from ZIP arcname when flattening."""
|
||||
if flatten and prefix and arcname.startswith(prefix + "/"):
|
||||
return arcname[len(prefix) + 1:]
|
||||
return arcname
|
||||
|
||||
|
||||
def resolve_file(
|
||||
file_entry: dict,
|
||||
db: dict,
|
||||
@@ -783,15 +790,14 @@ def _build_readme(
|
||||
" 1. Find your RetroArch system directory:\n"
|
||||
" - RetroArch > Settings > Directory > System/BIOS\n"
|
||||
" - Default: retroarch/system/\n"
|
||||
' 2. Open the "system" folder from this archive\n'
|
||||
" 3. Copy ALL contents into your system directory\n"
|
||||
" 4. Overwrite if asked\n\n"
|
||||
" 2. Extract all files from this archive directly into your system directory\n"
|
||||
" 3. Overwrite if asked\n\n"
|
||||
" Option C: Manual (handheld / SD card)\n"
|
||||
" -------------------------------------\n"
|
||||
" Anbernic, Retroid, Miyoo, Trimui, etc.:\n"
|
||||
" 1. Connect your SD card to your PC\n"
|
||||
" 2. Find the BIOS folder (usually BIOS/ or system/)\n"
|
||||
' 3. Copy ALL contents of "system" from this archive\n'
|
||||
" 3. Extract all files from this archive directly into that folder\n"
|
||||
" 4. Eject SD card and reboot your device\n\n"
|
||||
" Common paths by device:\n"
|
||||
" Anbernic (ArkOS/JELOS): BIOS/\n"
|
||||
@@ -810,14 +816,13 @@ def _build_readme(
|
||||
" 1. On your PC, open the Batocera network share:\n"
|
||||
" - Windows: \\\\BATOCERA\\share\\bios\\\n"
|
||||
" - Mac/Linux: smb://batocera/share/bios/\n"
|
||||
' 2. Open the "bios" folder from this archive\n'
|
||||
" 3. Copy ALL contents into the share\n"
|
||||
" 4. Overwrite if asked\n\n"
|
||||
" 2. Extract all files from this archive directly into the share\n"
|
||||
" 3. Overwrite if asked\n\n"
|
||||
" Option C: Manual (SD card)\n"
|
||||
" --------------------------\n"
|
||||
" 1. Put the SD card in your PC\n"
|
||||
" 2. Navigate to /userdata/bios/ on the SHARE partition\n"
|
||||
' 3. Copy ALL contents of "bios" from this archive\n\n'
|
||||
" 3. Extract all files from this archive directly into that folder\n\n"
|
||||
" NOTE: Dreamcast flash memory is named dc_nvmem.bin\n"
|
||||
" (if your setup asks for dc_flash.bin, same file).\n\n"
|
||||
),
|
||||
@@ -831,13 +836,12 @@ def _build_readme(
|
||||
" 1. On your PC, open the Recalbox network share:\n"
|
||||
" - Windows: \\\\RECALBOX\\share\\bios\\\n"
|
||||
" - Mac/Linux: smb://recalbox/share/bios/\n"
|
||||
' 2. Open the "bios" folder from this archive\n'
|
||||
" 3. Copy ALL contents into the share\n\n"
|
||||
" 2. Extract all files from this archive directly into the share\n\n"
|
||||
" Option C: Manual (SD card)\n"
|
||||
" --------------------------\n"
|
||||
" 1. Put the SD card in your PC\n"
|
||||
" 2. Navigate to /recalbox/share/bios/\n"
|
||||
' 3. Copy ALL contents of "bios" from this archive\n\n'
|
||||
" 3. Extract all files from this archive directly into that folder\n\n"
|
||||
),
|
||||
"emudeck": (
|
||||
"INSTALLATION GUIDE (Steam Deck / Linux)\n\n"
|
||||
@@ -851,8 +855,7 @@ def _build_readme(
|
||||
" ----------------\n"
|
||||
" 1. Open Dolphin file manager\n"
|
||||
" 2. Navigate to ~/Emulation/bios/\n"
|
||||
' 3. Open the "bios" folder from this archive\n'
|
||||
" 4. Copy ALL contents into ~/Emulation/bios/\n\n"
|
||||
" 3. Extract all files from this archive directly into ~/Emulation/bios/\n\n"
|
||||
" STANDALONE EMULATORS (extra step)\n"
|
||||
" Switch and 3DS emulators need keys in specific folders:\n"
|
||||
" prod.keys -> ~/.local/share/yuzu/keys/\n"
|
||||
@@ -871,11 +874,8 @@ def _build_readme(
|
||||
" ----------------\n"
|
||||
" 1. Open Dolphin file manager\n"
|
||||
" 2. Show hidden files (Ctrl+H)\n"
|
||||
" 3. Navigate to ~/retrodeck/\n"
|
||||
' 4. Open the "bios" folder from this archive\n'
|
||||
" 5. Copy ALL contents into ~/retrodeck/bios/\n"
|
||||
' 6. If the archive contains a "roms" folder, copy\n'
|
||||
" its contents into ~/retrodeck/roms/\n\n"
|
||||
" 3. Navigate to ~/retrodeck/bios/\n"
|
||||
" 4. Extract all files from this archive directly into ~/retrodeck/bios/\n\n"
|
||||
" NOTE: RetroDECK uses its own BIOS checker. After\n"
|
||||
" copying, open RetroDECK > Tools > BIOS Checker to\n"
|
||||
" verify everything is detected.\n\n"
|
||||
@@ -891,9 +891,8 @@ def _build_readme(
|
||||
" 1. Open your RetroBat installation folder\n"
|
||||
" 2. Navigate to the bios\\ subfolder\n"
|
||||
" (default: C:\\RetroBat\\bios\\)\n"
|
||||
' 3. Open the "bios" folder from this archive\n'
|
||||
" 4. Copy ALL contents into your bios\\ folder\n"
|
||||
" 5. Overwrite if asked\n\n"
|
||||
" 3. Extract all files from this archive directly into your bios\\ folder\n"
|
||||
" 4. Overwrite if asked\n\n"
|
||||
),
|
||||
"bizhawk": (
|
||||
"INSTALLATION GUIDE\n\n"
|
||||
@@ -901,16 +900,15 @@ def _build_readme(
|
||||
" 2. Navigate to the Firmware subfolder:\n"
|
||||
" - Windows: BizHawk\\Firmware\\\n"
|
||||
" - Linux: ~/.config/BizHawk/Firmware/\n"
|
||||
' 3. Open the "Firmware" folder from this archive\n'
|
||||
" 4. Copy ALL contents into your Firmware folder\n"
|
||||
" 5. In BizHawk: Config > Paths > Firmware should\n"
|
||||
" 3. Extract all files from this archive directly into your Firmware folder\n"
|
||||
" 4. In BizHawk: Config > Paths > Firmware should\n"
|
||||
" point to this folder\n\n"
|
||||
),
|
||||
"romm": (
|
||||
"INSTALLATION GUIDE (RomM server)\n\n"
|
||||
" 1. Locate your RomM library folder\n"
|
||||
" 2. Navigate to the bios/ subdirectory\n"
|
||||
' 3. Copy ALL contents of "bios" from this archive\n'
|
||||
" 3. Extract all files from this archive directly into that folder\n"
|
||||
" 4. Restart the RomM service to detect new files\n\n"
|
||||
),
|
||||
"retropie": (
|
||||
@@ -918,7 +916,7 @@ def _build_readme(
|
||||
" Option A: Via network share\n"
|
||||
" --------------------------\n"
|
||||
" 1. On your PC, open: \\\\RETROPIE\\bios\\\n"
|
||||
' 2. Copy ALL contents of "BIOS" from this archive\n\n'
|
||||
" 2. Extract all files from this archive directly into that folder\n\n"
|
||||
" Option B: Via SSH\n"
|
||||
" -----------------\n"
|
||||
" 1. SSH into your Pi: ssh pi@retropie\n"
|
||||
@@ -927,7 +925,7 @@ def _build_readme(
|
||||
" ---------------------\n"
|
||||
" 1. Put the SD card in your PC\n"
|
||||
" 2. Navigate to /home/pi/RetroPie/BIOS/\n"
|
||||
' 3. Copy ALL contents of "BIOS" from this archive\n\n'
|
||||
" 3. Extract all files from this archive directly into that folder\n\n"
|
||||
),
|
||||
}
|
||||
|
||||
@@ -938,9 +936,8 @@ def _build_readme(
|
||||
platform_name,
|
||||
(
|
||||
f"INSTALLATION\n\n"
|
||||
f' 1. Open the "{base_dest or "files"}" folder in this archive\n'
|
||||
f" 2. Copy ALL contents to your BIOS directory\n"
|
||||
f" 3. Overwrite if asked\n\n"
|
||||
f" 1. Extract all files from this archive directly into your BIOS directory\n"
|
||||
f" 2. Overwrite if asked\n\n"
|
||||
),
|
||||
)
|
||||
|
||||
@@ -977,10 +974,7 @@ def _build_readme(
|
||||
credits = "\nCONTRIBUTORS\n\n"
|
||||
for cb in contributors:
|
||||
username = cb.get("username", "")
|
||||
contribution = cb.get("contribution", "")
|
||||
pr = cb.get("pr")
|
||||
pr_ref = f" (#{pr})" if pr else ""
|
||||
credits += f" @{username} - {contribution}{pr_ref}\n"
|
||||
credits += f" @{username}\n"
|
||||
credits += "\n"
|
||||
|
||||
return header + source_info + guide + credits + footer
|
||||
@@ -1022,6 +1016,7 @@ def generate_pack(
|
||||
system_filter: list[str] | None = None,
|
||||
precomputed_extras: list[dict] | None = None,
|
||||
source: str = "full",
|
||||
flatten: bool = True,
|
||||
) -> str | None:
|
||||
"""Generate a ZIP pack for a platform.
|
||||
|
||||
@@ -1157,7 +1152,7 @@ def generate_pack(
|
||||
f"{base_dest}/{instr_name}" if base_dest else instr_name
|
||||
)
|
||||
zf.writestr(
|
||||
instr_path,
|
||||
_flat(instr_path, base_dest, flatten),
|
||||
f"File needed: {file_entry['name']}\n\n{instructions}\n",
|
||||
)
|
||||
user_provided.append(file_entry["name"])
|
||||
@@ -1183,9 +1178,9 @@ def generate_pack(
|
||||
if download_external(file_entry, tmp_path):
|
||||
extract = file_entry.get("extract", False)
|
||||
if extract and tmp_path.endswith(".zip"):
|
||||
_extract_zip_to_archive(tmp_path, full_dest, zf)
|
||||
_extract_zip_to_archive(tmp_path, _flat(full_dest, base_dest, flatten), zf)
|
||||
else:
|
||||
zf.write(tmp_path, full_dest)
|
||||
zf.write(tmp_path, _flat(full_dest, base_dest, flatten))
|
||||
seen_destinations.add(dedup_key)
|
||||
_register_path(dedup_key, seen_destinations, seen_parents)
|
||||
if case_insensitive:
|
||||
@@ -1263,7 +1258,7 @@ def generate_pack(
|
||||
else readme_name
|
||||
)
|
||||
if readme_full not in seen_destinations:
|
||||
zf.writestr(readme_full, readme_text)
|
||||
zf.writestr(_flat(readme_full, base_dest, flatten), readme_text)
|
||||
seen_destinations.add(readme_full)
|
||||
status = "agnostic_fallback"
|
||||
# Fall through to normal packing below
|
||||
@@ -1349,12 +1344,13 @@ def generate_pack(
|
||||
seen_lower.add(dedup_key.lower())
|
||||
|
||||
extract = file_entry.get("extract", False)
|
||||
flat_dest = _flat(full_dest, base_dest, flatten)
|
||||
if extract and local_path.endswith(".zip"):
|
||||
_extract_zip_to_archive(local_path, full_dest, zf)
|
||||
_extract_zip_to_archive(local_path, flat_dest, zf)
|
||||
elif local_path.endswith(".zip"):
|
||||
_normalize_zip_for_pack(local_path, full_dest, zf)
|
||||
_normalize_zip_for_pack(local_path, flat_dest, zf)
|
||||
else:
|
||||
zf.write(local_path, full_dest)
|
||||
zf.write(local_path, flat_dest)
|
||||
total_files += 1
|
||||
|
||||
# Core requirements: files platform's cores need but YAML doesn't declare
|
||||
@@ -1440,10 +1436,11 @@ def generate_pack(
|
||||
if status in ("not_found", "external", "user_provided"):
|
||||
continue
|
||||
|
||||
flat_dest = _flat(full_dest, base_dest, flatten)
|
||||
if local_path.endswith(".zip"):
|
||||
_normalize_zip_for_pack(local_path, full_dest, zf)
|
||||
_normalize_zip_for_pack(local_path, flat_dest, zf)
|
||||
else:
|
||||
zf.write(local_path, full_dest)
|
||||
zf.write(local_path, flat_dest)
|
||||
seen_destinations.add(full_dest)
|
||||
_register_path(full_dest, seen_destinations, seen_parents)
|
||||
if case_insensitive:
|
||||
@@ -1489,7 +1486,7 @@ def generate_pack(
|
||||
_register_path(full, seen_destinations, seen_parents)
|
||||
if case_insensitive:
|
||||
seen_lower.add(full.lower())
|
||||
zf.write(src, full)
|
||||
zf.write(src, _flat(full, base_dest, flatten))
|
||||
total_files += 1
|
||||
|
||||
# README.txt for users -personalized step-by-step per platform
|
||||
@@ -2432,6 +2429,11 @@ def _run_verify_packs(args):
|
||||
with zipfile.ZipFile(zip_path) as zf:
|
||||
zf.extractall(extract_dir)
|
||||
|
||||
# Auto-detect flat vs nested extraction
|
||||
is_flat = bool(base_dest) and not os.path.isdir(
|
||||
os.path.join(extract_dir, base_dest)
|
||||
)
|
||||
|
||||
missing = []
|
||||
hash_fail = []
|
||||
ok = 0
|
||||
@@ -2442,7 +2444,7 @@ def _run_verify_packs(args):
|
||||
continue
|
||||
fp = (
|
||||
os.path.join(extract_dir, base_dest, dest)
|
||||
if base_dest
|
||||
if base_dest and not is_flat
|
||||
else os.path.join(extract_dir, dest)
|
||||
)
|
||||
# Case-insensitive fallback
|
||||
@@ -2613,9 +2615,11 @@ def _run_platform_packs(
|
||||
load_platform_config(p, args.platforms_dir).get("platform", p)
|
||||
for p in group_platforms
|
||||
]
|
||||
source_tag = {"platform": "_Platform", "truth": "_Truth"}.get(source, "")
|
||||
req_tag = "_Required" if required_only else ""
|
||||
combined = (
|
||||
"_".join(n.replace(" ", "") for n in all_names)
|
||||
+ f"{ver_tag}_BIOS_Pack.zip"
|
||||
+ f"{ver_tag}{source_tag}{req_tag}_BIOS_Pack.zip"
|
||||
)
|
||||
new_path = os.path.join(os.path.dirname(zip_path), combined)
|
||||
if new_path != zip_path:
|
||||
@@ -3275,7 +3279,11 @@ def verify_pack(
|
||||
# Data directory: check against cached files
|
||||
if status == "untracked" and _data_index:
|
||||
_bn = os.path.basename(name)
|
||||
_pr = name[len("system/") :] if name.startswith("system/") else name
|
||||
_pr = name
|
||||
for _known_prefix in ("system/", "bios/", "BIOS/", "Firmware/"):
|
||||
if name.startswith(_known_prefix):
|
||||
_pr = name[len(_known_prefix):]
|
||||
break
|
||||
_cands = []
|
||||
if _pr in _data_path_index:
|
||||
_cands.append(_data_path_index[_pr])
|
||||
@@ -3442,6 +3450,13 @@ def verify_pack_against_platform(
|
||||
zip_set = set(zf.namelist())
|
||||
zip_lower = {n.lower(): n for n in zip_set}
|
||||
|
||||
# Auto-detect flat vs nested ZIP
|
||||
is_flat = bool(base_dest) and not any(
|
||||
n.startswith(base_dest + "/")
|
||||
for n in zip_set
|
||||
if n not in ("README.txt", "manifest.json") and not n.endswith("/")
|
||||
)
|
||||
|
||||
# Structural checks
|
||||
dupes = sum(1 for c in Counter(zf.namelist()).values() if c > 1)
|
||||
if dupes:
|
||||
@@ -3471,7 +3486,7 @@ def verify_pack_against_platform(
|
||||
dest = fe.get("destination", fe.get("name", ""))
|
||||
if not dest:
|
||||
continue
|
||||
expected = f"{base_dest}/{dest}" if base_dest else dest
|
||||
expected = f"{base_dest}/{dest}" if base_dest and not is_flat else dest
|
||||
baseline_checked += 1
|
||||
|
||||
if expected in zip_set or expected.lower() in zip_lower:
|
||||
@@ -3498,7 +3513,7 @@ def verify_pack_against_platform(
|
||||
continue
|
||||
raw_dest = u.get("path") or u["name"]
|
||||
dest = f"{raw_dest}{u['name']}" if raw_dest.endswith("/") else raw_dest
|
||||
if extras_pfx:
|
||||
if extras_pfx and not (is_flat and extras_pfx == base_dest):
|
||||
if not dest.startswith(f"{extras_pfx}/"):
|
||||
full = f"{extras_pfx}/{dest}"
|
||||
else:
|
||||
|
||||
@@ -2211,10 +2211,12 @@ def generate_mkdocs_nav(
|
||||
{"Adding a scraper": "wiki/adding-a-scraper.md"},
|
||||
{"Testing guide": "wiki/testing-guide.md"},
|
||||
{"Release process": "wiki/release-process.md"},
|
||||
{"Community tools": "wiki/community-tools.md"},
|
||||
]
|
||||
|
||||
return [
|
||||
{"Home": "index.md"},
|
||||
{"Which pack?": "which-pack.md"},
|
||||
{"Platforms": platform_nav},
|
||||
{"Systems": system_nav},
|
||||
{"Emulators": emu_nav},
|
||||
|
||||
@@ -994,8 +994,10 @@ class TestE2E(unittest.TestCase):
|
||||
groups = group_identical_platforms(
|
||||
["test_existence", "test_inherited"], self.platforms_dir
|
||||
)
|
||||
# Different base_destination ->separate groups
|
||||
self.assertEqual(len(groups), 2)
|
||||
# With flat ZIPs, base_destination no longer separates groups
|
||||
# Platforms with same files (regardless of base_dest) are grouped
|
||||
self.assertEqual(len(groups), 1)
|
||||
self.assertEqual(len(groups[0][0]), 2)
|
||||
|
||||
def test_51_platform_grouping_same(self):
|
||||
# Create two identical platforms
|
||||
@@ -3383,10 +3385,17 @@ class TestE2E(unittest.TestCase):
|
||||
registry_path,
|
||||
emulators_dir=self.emulators_dir,
|
||||
)
|
||||
# Detect flat vs nested ZIP to build expected paths
|
||||
base = manifest.get("base_destination", "")
|
||||
is_flat = bool(base) and not any(
|
||||
n.startswith(base + "/") for n in zip_names
|
||||
)
|
||||
manifest_dests = set()
|
||||
for f in manifest["files"]:
|
||||
d = f"{base}/{f['dest']}" if base else f["dest"]
|
||||
if base and not is_flat:
|
||||
d = f"{base}/{f['dest']}"
|
||||
else:
|
||||
d = f["dest"]
|
||||
manifest_dests.add(d)
|
||||
|
||||
self.assertEqual(manifest_dests, zip_names)
|
||||
|
||||
21
wiki/community-tools.md
Normal file
21
wiki/community-tools.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# Community tools
|
||||
|
||||
Projects built on RetroBIOS data.
|
||||
|
||||
---
|
||||
|
||||
## BIOS Preservation Tool
|
||||
|
||||
**Author:** [monster-penguin](https://github.com/monster-penguin)
|
||||
**Repository:** [github.com/monster-penguin/BIOS-Preservation-Tool](https://github.com/monster-penguin/BIOS-Preservation-Tool)
|
||||
**License:** MIT
|
||||
|
||||
A local tool for managing your own BIOS collection. Point it at your files, it verifies them against RetroBIOS platform YAMLs, stores them in a deduplicated database, and produces ready-to-use directories for each platform. Supports scanning directories, archives, and URLs.
|
||||
|
||||
See the project's [README](https://github.com/monster-penguin/BIOS-Preservation-Tool#readme) for setup and usage.
|
||||
|
||||
---
|
||||
|
||||
!!! note "Add your project"
|
||||
|
||||
Open an issue with a link to your repository.
|
||||
@@ -28,6 +28,10 @@ If you just want to download BIOS packs, see the [home page](../index.md).
|
||||
|
||||
See [contributing](../contributing.md) for submission guidelines.
|
||||
|
||||
## Community
|
||||
|
||||
- **[Community tools](community-tools.md)** - projects built on RetroBIOS data
|
||||
|
||||
## Glossary
|
||||
|
||||
- **BIOS** - firmware burned into console hardware, needed by emulators that rely on original boot code
|
||||
|
||||
Reference in New Issue
Block a user