mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-04-13 12:22:33 -05:00
Regenerate database and update emulator profiles
Regenerate database.json and update README counts/timestamps; add and normalize numerous BIOS entries and hashes. Key changes: update generated_at timestamp and system count (355→357) in README; add OpenBIOS / HLE fallback and additional aliases to beetle_psx, include beetle_psx core name and profiled_date update; add laseractive to ares systems; adjust atari800 systems and source_ref line numbers; mark dinothawr as a system and expand its note; update gsplus upstream/profile date, add apple-iie system and tweak source_refs; add pcsx2 core to lrps2; refresh mame profiled_date and add multiple systems and BIOS root sets. Miscellaneous script changes and other JSON normalization to reflect newly discovered/merged BIOS files.
This commit is contained in:
@@ -732,14 +732,30 @@ def derive_manufacturer(system_id: str, system_data: dict) -> str:
|
||||
return "Other"
|
||||
|
||||
|
||||
# Abbreviations that normalization alone cannot resolve.
|
||||
# Maps platform-specific short names to canonical profile system IDs.
|
||||
SYSTEM_ALIASES: dict[str, str] = {
|
||||
"gmaster": "hartung-game-master",
|
||||
"n64dd": "nintendo-64dd",
|
||||
"neogeo64": "hyper-neogeo64",
|
||||
# Platform IDs missing the manufacturer-prefix hyphen
|
||||
"atari5200": "atari-5200",
|
||||
"atari7800": "atari-7800",
|
||||
"atarist": "atari-st",
|
||||
"sega32x": "sega-32x",
|
||||
"segastv": "sega-stv",
|
||||
}
|
||||
|
||||
|
||||
def _norm_system_id(sid: str) -> str:
|
||||
"""Normalize system ID for cross-platform matching.
|
||||
|
||||
Strips manufacturer prefixes and separators so that platform-specific
|
||||
IDs (e.g., "xbox", "nintendo-wiiu") match profile IDs
|
||||
(e.g., "microsoft-xbox", "nintendo-wii-u").
|
||||
Resolves known aliases, then strips manufacturer prefixes and separators
|
||||
so that platform-specific IDs (e.g., "xbox", "nintendo-wiiu") match
|
||||
profile IDs (e.g., "microsoft-xbox", "nintendo-wii-u").
|
||||
"""
|
||||
s = sid.lower().replace("_", "-")
|
||||
s = SYSTEM_ALIASES.get(s, s)
|
||||
for prefix in MANUFACTURER_PREFIXES:
|
||||
if s.startswith(prefix):
|
||||
s = s[len(prefix):]
|
||||
|
||||
@@ -429,6 +429,202 @@ def _collect_emulator_extras(
|
||||
return extras
|
||||
|
||||
|
||||
def _build_readme(platform_name: str, platform_display: str,
|
||||
base_dest: str, total_files: int, num_systems: int) -> str:
|
||||
"""Build a personalized step-by-step README for each platform pack."""
|
||||
sep = "=" * 50
|
||||
header = (
|
||||
f"{sep}\n"
|
||||
f" RETROBIOS - {platform_display} BIOS Pack\n"
|
||||
f" {total_files} files for {num_systems} systems\n"
|
||||
f"{sep}\n\n"
|
||||
)
|
||||
|
||||
guides: dict[str, str] = {
|
||||
"retroarch": (
|
||||
"INSTALLATION GUIDE\n\n"
|
||||
" Option A: Automatic (recommended)\n"
|
||||
" ---------------------------------\n"
|
||||
" Run this in a terminal:\n\n"
|
||||
" curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh\n\n"
|
||||
" The script auto-detects your RetroArch install and copies\n"
|
||||
" files to the correct location.\n\n"
|
||||
" Option B: Manual (PC)\n"
|
||||
" ---------------------\n"
|
||||
" 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"
|
||||
" 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"
|
||||
" 4. Eject SD card and reboot your device\n\n"
|
||||
" Common paths by device:\n"
|
||||
" Anbernic (ArkOS/JELOS): BIOS/\n"
|
||||
" Retroid (RetroArch): RetroArch/system/\n"
|
||||
" Miyoo Mini (Onion OS): BIOS/\n"
|
||||
" Steam Deck (RetroArch): ~/.config/retroarch/system/\n\n"
|
||||
),
|
||||
"batocera": (
|
||||
"INSTALLATION GUIDE\n\n"
|
||||
" Option A: Automatic (recommended)\n"
|
||||
" ---------------------------------\n"
|
||||
" Open a terminal (F1 from Batocera menu) and run:\n\n"
|
||||
" curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh\n\n"
|
||||
" Option B: Manual (network share)\n"
|
||||
" --------------------------------\n"
|
||||
" 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"
|
||||
" 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"
|
||||
" NOTE: Dreamcast flash memory is named dc_nvmem.bin\n"
|
||||
" (if your setup asks for dc_flash.bin, same file).\n\n"
|
||||
),
|
||||
"recalbox": (
|
||||
"INSTALLATION GUIDE\n\n"
|
||||
" Option A: Automatic\n"
|
||||
" -------------------\n"
|
||||
" curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh\n\n"
|
||||
" Option B: Manual (network share)\n"
|
||||
" --------------------------------\n"
|
||||
" 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"
|
||||
" 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"
|
||||
),
|
||||
"emudeck": (
|
||||
"INSTALLATION GUIDE (Steam Deck / Linux)\n\n"
|
||||
" Option A: Automatic (recommended)\n"
|
||||
" ---------------------------------\n"
|
||||
" Open Konsole (or any terminal) and run:\n\n"
|
||||
" curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh\n\n"
|
||||
" The script places BIOS files AND sets up standalone\n"
|
||||
" emulator keys automatically.\n\n"
|
||||
" Option B: Manual\n"
|
||||
" ----------------\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"
|
||||
" STANDALONE EMULATORS (extra step)\n"
|
||||
" Switch and 3DS emulators need keys in specific folders:\n"
|
||||
" prod.keys -> ~/.local/share/yuzu/keys/\n"
|
||||
" prod.keys -> ~/.local/share/eden/keys/\n"
|
||||
" prod.keys -> ~/.config/Ryujinx/system/\n"
|
||||
" aes_keys.txt -> ~/Emulation/bios/citra/keys/\n"
|
||||
" The automatic installer handles this for you.\n\n"
|
||||
),
|
||||
"retrodeck": (
|
||||
"INSTALLATION GUIDE (Steam Deck / Linux)\n\n"
|
||||
" Option A: Automatic (recommended)\n"
|
||||
" ---------------------------------\n"
|
||||
" Open Konsole (or any terminal) and run:\n\n"
|
||||
" curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh\n\n"
|
||||
" Option B: Manual\n"
|
||||
" ----------------\n"
|
||||
" 1. Open Dolphin file manager\n"
|
||||
" 2. Show hidden files (Ctrl+H)\n"
|
||||
" 3. Navigate to ~/retrodeck/bios/\n"
|
||||
" 4. Open this archive and go into the top-level folder\n"
|
||||
" 5. Copy ALL contents 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"
|
||||
),
|
||||
"retrobat": (
|
||||
"INSTALLATION GUIDE (Windows)\n\n"
|
||||
" Option A: Automatic (recommended)\n"
|
||||
" ---------------------------------\n"
|
||||
" Download and run install.bat from:\n"
|
||||
" https://github.com/Abdess/retrobios/releases\n\n"
|
||||
" Option B: Manual\n"
|
||||
" ----------------\n"
|
||||
" 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"
|
||||
),
|
||||
"bizhawk": (
|
||||
"INSTALLATION GUIDE\n\n"
|
||||
" 1. Open your BizHawk installation folder\n"
|
||||
" 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"
|
||||
" 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"
|
||||
" 4. Restart the RomM service to detect new files\n\n"
|
||||
),
|
||||
"retropie": (
|
||||
"INSTALLATION GUIDE (Raspberry Pi)\n\n"
|
||||
" 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"
|
||||
" Option B: Via SSH\n"
|
||||
" -----------------\n"
|
||||
" 1. SSH into your Pi: ssh pi@retropie\n"
|
||||
" 2. Copy files to ~/RetroPie/BIOS/\n\n"
|
||||
" Option C: Via SD card\n"
|
||||
" ---------------------\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"
|
||||
),
|
||||
}
|
||||
|
||||
# Lakka uses same guide as RetroArch
|
||||
guides["lakka"] = guides["retroarch"]
|
||||
|
||||
guide = guides.get(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"
|
||||
))
|
||||
|
||||
footer = (
|
||||
"TROUBLESHOOTING\n\n"
|
||||
" - Core says BIOS missing? Check the exact filename\n"
|
||||
" and make sure it's in the right subfolder.\n"
|
||||
" - Wrong region? Some systems have regional BIOS\n"
|
||||
" variants (USA/EUR/JAP). All are included.\n"
|
||||
" - Need help? https://github.com/Abdess/retrobios/issues\n\n"
|
||||
f"{sep}\n"
|
||||
f" https://github.com/Abdess/retrobios\n"
|
||||
f"{sep}\n"
|
||||
)
|
||||
|
||||
return header + guide + footer
|
||||
|
||||
|
||||
def generate_pack(
|
||||
platform_name: str,
|
||||
platforms_dir: str,
|
||||
@@ -765,66 +961,10 @@ def generate_pack(
|
||||
zf.write(src, full)
|
||||
total_files += 1
|
||||
|
||||
# README.txt for users
|
||||
extract_paths = {
|
||||
"retroarch": "system/", "lakka": "system/",
|
||||
"batocera": "/userdata/bios/", "recalbox": "/recalbox/share/bios/",
|
||||
"emudeck": "Emulation/bios/", "retrobat": "bios/",
|
||||
"retrodeck": "~/retrodeck/bios/", "romm": "bios/",
|
||||
"bizhawk": "Firmware/", "retropie": "BIOS/",
|
||||
}
|
||||
extract_to = extract_paths.get(platform_name, f"{base_dest}/")
|
||||
# README.txt for users — personalized step-by-step per platform
|
||||
num_systems = len(pack_systems)
|
||||
# Platform-specific notes
|
||||
platform_notes = {
|
||||
"emudeck": (
|
||||
"\nSTANDALONE EMULATORS\n"
|
||||
" Switch emulators (Yuzu, Eden, Ryujinx) and Citra need\n"
|
||||
" keys in their own folders, not in Emulation/bios/.\n"
|
||||
" Use the automatic installer to set this up, or copy\n"
|
||||
" manually:\n"
|
||||
" prod.keys -> ~/.local/share/yuzu/keys/\n"
|
||||
" prod.keys -> ~/.local/share/eden/keys/\n"
|
||||
" prod.keys -> ~/.config/Ryujinx/system/\n"
|
||||
" aes_keys.txt -> Emulation/bios/citra/keys/\n\n"
|
||||
),
|
||||
"retroarch": (
|
||||
"\nHANDHELDS (Anbernic, Retroid, Miyoo, etc.)\n"
|
||||
" Copy the contents of \"system/\" to your SD card's\n"
|
||||
" BIOS folder (usually BIOS/ or system/).\n\n"
|
||||
),
|
||||
"batocera": (
|
||||
"\nDREAMCAST NOTE\n"
|
||||
" The flash memory file is named dc_nvmem.bin\n"
|
||||
" (Flycast's canonical name). If your setup asks for\n"
|
||||
" dc_flash.bin, it serves the same purpose.\n\n"
|
||||
),
|
||||
}
|
||||
extra_notes = platform_notes.get(platform_name, "")
|
||||
# Lakka shares RetroArch notes
|
||||
if platform_name == "lakka":
|
||||
extra_notes = platform_notes.get("retroarch", "")
|
||||
|
||||
readme_text = (
|
||||
f"{'=' * 43}\n"
|
||||
f" RETROBIOS - {platform_display} BIOS Pack\n"
|
||||
f" {total_files} files for {num_systems} systems\n"
|
||||
f"{'=' * 43}\n\n"
|
||||
f"HOW TO INSTALL\n\n"
|
||||
f" 1. Open the \"{base_dest or 'files'}\" folder in this archive\n"
|
||||
f" 2. Select everything inside (Ctrl+A)\n"
|
||||
f" 3. Copy (Ctrl+C)\n"
|
||||
f" 4. Go to: {extract_to}\n"
|
||||
f" 5. Paste (Ctrl+V)\n\n"
|
||||
f"IMPORTANT\n"
|
||||
f" - Copy the FILES, not the folder itself\n"
|
||||
f" - If asked to replace, click Yes\n"
|
||||
f"{extra_notes}"
|
||||
f"AUTOMATIC INSTALL (recommended)\n"
|
||||
f" curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh\n\n"
|
||||
f"PROJECT: https://github.com/Abdess/retrobios\n"
|
||||
f"{'=' * 43}\n"
|
||||
)
|
||||
readme_text = _build_readme(platform_name, platform_display,
|
||||
base_dest, total_files, num_systems)
|
||||
zf.writestr("README.txt", readme_text)
|
||||
|
||||
files_ok = sum(1 for s in file_status.values() if s == "ok")
|
||||
|
||||
@@ -65,7 +65,7 @@ SYSTEM_ID_MAP: dict[str, str] = {
|
||||
"Amiga": "commodore-amiga",
|
||||
"AmstradCPC": "amstrad-cpc",
|
||||
"AppleII": "apple-ii",
|
||||
"BSX": "nintendo-bsx",
|
||||
"BSX": "nintendo-satellaview",
|
||||
"C64": "commodore-c64",
|
||||
"ChannelF": "fairchild-channel-f",
|
||||
"Coleco": "coleco-colecovision",
|
||||
|
||||
Reference in New Issue
Block a user