Dropping the double-dash asides left 72 comments and docstrings with
half a dash glued to the next word ("shape -a size or a size range -is
all"). They now read as a colon, a comma or parentheses, and a prose
style test names any that comes back.
2.9 KiB
Contributing to RetroBIOS
Add a BIOS file
- Fork this repository
- Place the file in
bios/Manufacturer/Console/filename - Variants (alternate hashes for the same file):
bios/Manufacturer/Console/.variants/ - Open a pull request. Its hashes are checked automatically and reported in a comment
The dump provenance page lists catalogued dumps still missing from the collection, with their hashes. A file matching one of those is the most useful contribution.
Add a platform
- Write a scraper in
scripts/scraper/(inheritBaseScraper) - Read the platform's upstream source to determine how it checks BIOS files
- Register it in
platforms/_registry.yml - Generate the platform YAML and test:
python scripts/verify.py --platform <name>
Full walkthrough: adding a platform.
Add an emulator profile
- Clone the emulator's source code, upstream and libretro port
- Trace the file loading from the entry point, not from a keyword grep
- Document every file the code loads, with a
source_refline reference - Write the YAML to
emulators/<name>.yml - Test:
python scripts/cross_reference.py --emulator <name>
Full walkthrough: profiling guide.
File conventions
bios/Manufacturer/Console/filenamefor canonical filesbios/Manufacturer/Console/.variants/filename.sha1prefixfor alternate versions- A file too large for git goes to the
large-filesGitHub release and its path into.gitignore, the list that decides what is served from the release - Trees addressed by path are kept out of deduplication (
NODEDUP_DIRSinscripts/dedup.py) - Two paths differing only by case break clones on Windows and macOS,
and
tests/test_no_case_collisions.pyenforces this
Before opening a PR
The checks CI runs on a pull request (Python 3.12 or newer):
pip install pyyaml "jsonschema[format-nongpl]" markdown
python scripts/validate_pr.py --changed # the BIOS files the branch adds
python scripts/validate_schemas.py --source-only # profiles and platform files
python scripts/profile_sync.py --emulator NAME --strict # each profile the branch adds
python -m unittest discover -s tests -t .
The full pipeline is not needed for a contribution: it rebuilds every pack
(about 35 GB in dist/) and needs the data directories fetched first
(python scripts/refresh_data_dirs.py), which is why maintainers run it
before a release.
PR validation
CI computes SHA1/MD5/CRC32 for every new file, checks them against the platform configs, validates the YAML against the schemas, confronts each added profile with its upstream source, runs the test suite, and posts a report on the PR.
Contributors who add platform support are credited in the README, on the documentation site, and in the BIOS packs.