Skip to content

Data model - RetroBIOS

database.json

Primary key: SHA1. 7302 file entries.

Each entry:

{
  "path": "bios/Nintendo/GameCube/GC/USA/IPL.bin",
  "name": "IPL.bin",
  "size": 2097152,
  "sha1": "...",
  "md5": "...",
  "sha256": "...",
  "crc32": "...",
  "adler32": "..."
}

Indexes

Index Entries Purpose
by_md5 7302 MD5 to SHA1 lookup (Batocera, Recalbox verification)
by_name 7694 filename to SHA1 list (name-based resolution)
by_crc32 7302 CRC32 to SHA1 lookup
by_path_suffix 5379 relative path to SHA1 (regional variant disambiguation)
by_sha256 7302 SHA256 to SHA1 lookup (emulator profile validation)

File resolution order

resolve_local_file tries these steps in order:

  1. Path suffix exact match (for regional variants with same filename)
  2. SHA1 exact match
  3. MD5 direct lookup (supports truncated Batocera 29-char MD5)
  4. Name + alias lookup without hash (existence mode)
  5. Name + alias with md5_composite / direct MD5 per candidate
  6. zippedFile content match via inner ROM MD5 index
  7. MAME clone fallback (deduped ZIP mapped to canonical name)
  8. Data directory scan (exact path then case-insensitive basename walk)
  9. Agnostic fallback (size-constrained match under system path prefix)

Platform YAML

Scraped from upstream sources. Structure:

platform: Batocera
verification_mode: md5        # how the platform checks files
hash_type: md5                # hash type in file entries
base_destination: bios        # root directory for BIOS files
systems:
  system-id:
    files:
      - name: filename
        destination: path/in/bios/dir
        md5: expected_hash
        sha1: expected_hash
        required: true

Supports inheritance (inherits: retroarch) and shared groups (includes: [group_name] referencing _shared.yml).

Emulator YAML

329 profiles. Source-verified from emulator code.

See the profiling guide for the full field reference.