mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-04-14 12:52:31 -05:00
shared groups in _shared.yml: np2kai, keropi, quasi88, kronos, ep128emu with source references for each subdirectory requirement. libretro_scraper: CORE_SUBDIR_MAP applies subdirectory prefixes at generation time (np2kai/, keropi/, dc/). EXTRA_SYSTEMS adds QUASI88. SYSTEM_SHARED_GROUPS injects includes for kronos/np2kai/keropi. new BIOS: CPS3 (23 ZIPs), Cannonball OutRun (40 ROMs), PCem PC BIOS (73 files), VICE Commodore ROMs, Spectrum ZIPs, dc_bios.bin, X1 fonts. new emulator profiles: redream, melonds_ds, lrps2 with doc vs source notes. platforms/README.md documents shared groups architecture.
78 lines
3.4 KiB
Markdown
78 lines
3.4 KiB
Markdown
# Platform Configs
|
|
|
|
How platform YAML files work and where subdirectory requirements come from.
|
|
|
|
## Files
|
|
|
|
- `_registry.yml` -- platform metadata (name, status, display order)
|
|
- `_shared.yml` -- shared file groups with canonical destinations
|
|
- `<platform>.yml` -- per-platform BIOS declarations
|
|
- Inheritance: `lakka.yml` inherits `retroarch`, `retropie.yml` inherits `retroarch`
|
|
|
|
## Shared groups (`_shared.yml`)
|
|
|
|
The subdirectory a BIOS goes into is determined by the **libretro core**, not
|
|
the platform. NP2kai expects `np2kai/BIOS.ROM` whether you're on RetroArch,
|
|
Batocera, or Recalbox. Only `base_destination` varies (`system/` vs `bios/`).
|
|
|
|
Shared groups define files with correct destinations **once**. Platforms
|
|
reference them via `includes: [group_name]` in their system definitions.
|
|
`load_platform_config()` in `common.py` resolves includes at load time,
|
|
deduplicating by filename.
|
|
|
|
When to use shared groups: whenever 2+ platforms share files that a core
|
|
expects in a specific subdirectory. The group carries the correct destination
|
|
so platforms can't drift.
|
|
|
|
For RetroArch specifically, `libretro_scraper.py` injects `includes:`
|
|
references and applies subdirectory prefixes via `CORE_SUBDIR_MAP` during
|
|
generation. Manual edits to `retroarch.yml` will be overwritten on next scrape.
|
|
|
|
## Subdirectory reference
|
|
|
|
Each entry documents where the requirement comes from. Check these source
|
|
files to verify or update the paths.
|
|
|
|
| Core | Subdirectory | Source |
|
|
|------|-------------|--------|
|
|
| NP2kai | `np2kai/` | `libretro-np2kai/sdl/libretro.c` |
|
|
| PX68k | `keropi/` | `px68k/libretro/libretro.c` |
|
|
| QUASI88 | `quasi88/` | `quasi88/src/libretro.c` |
|
|
| Kronos | `kronos/` | `libretro-kronos/libretro/libretro.c` |
|
|
| ep128emu | `ep128emu/rom/` | `ep128emu-core/src/libretro.cpp` |
|
|
| Flycast | `dc/` | `flycast/shell/libretro/libretro.cpp` |
|
|
| FBNeo NeoCD | `neocd/` | `fbneo/src/burn/drv/neogeo/neo_run.cpp` |
|
|
| Fuse | `fuse/` | `fuse-libretro/fuse/settings.c` |
|
|
| hatari | `hatari/tos/` | `hatari/src/tos.c` |
|
|
|
|
Full libretro docs: `https://docs.libretro.com/library/<core>/`
|
|
|
|
## Adding a platform
|
|
|
|
1. Create `platforms/<name>.yml`
|
|
2. Set `base_destination` (`system` or `bios`), `verification_mode`, `hash_type`
|
|
3. Use `includes: [group]` for systems with subdirectory requirements
|
|
4. Use `inherits: retroarch` to share RetroArch's file set
|
|
5. Add platform-specific overrides in `overrides.systems`
|
|
6. Test: `python scripts/verify.py --platform <name>`
|
|
|
|
## Adding a shared group
|
|
|
|
1. Add the group to `_shared.yml` with a source ref comment
|
|
2. Include: filename, destination with subdirectory prefix, required flag, hashes
|
|
3. Reference via `includes: [group_name]` in platform system definitions
|
|
4. For scraper-generated platforms, add the mapping in the scraper's
|
|
`SYSTEM_SHARED_GROUPS` dict so it persists across regeneration
|
|
|
|
## Verification modes
|
|
|
|
| Platform | Mode | Native logic | Upstream source |
|
|
|----------|------|-------------|----------------|
|
|
| RetroArch | existence | `path_is_valid()` -- file exists | `core_info.c` |
|
|
| Lakka | existence | inherits RetroArch | idem |
|
|
| RetroPie | existence | inherits RetroArch | idem |
|
|
| Batocera | md5 | `md5sum()` + `checkInsideZip()` | `batocera-systems` |
|
|
| RetroBat | md5 | MD5 check via JSON config | `batocera-systems.json` |
|
|
| EmuDeck | md5 | MD5 whitelist per system | `checkBIOS.sh` |
|
|
| Recalbox | md5 | multi-hash comma-separated | `es_bios.xml` + `Bios.cpp` |
|