|
| 1 | +# Packaged defaults |
| 2 | + |
| 3 | +Reference data that ships inside the plugin. The Decky CLI flattens this directory into the plugin root at package time, |
| 4 | +so the runtime reads these files by their bare name (no `defaults/` prefix); do not move or rename them. |
| 5 | + |
| 6 | +## `bios_registry.json` — vendored from emu-atlas |
| 7 | + |
| 8 | +The BIOS registry: which firmware files each platform and libretro core want, with the hashes and sizes that identify |
| 9 | +them. Read at runtime by `FirmwareService` (via `domain/bios.py`) to classify what a platform needs and whether a local |
| 10 | +file is the right one. |
| 11 | + |
| 12 | +It is **vendored verbatim** from [emu-atlas](https://github.com/danielcopper/emu-atlas), where the registry and its |
| 13 | +generator now live: |
| 14 | + |
| 15 | +- **Upstream:** <https://github.com/danielcopper/emu-atlas> |
| 16 | +- **Release:** `v0.1.0` |
| 17 | +- **Upstream path:** `atlas/data/bios_registry.json` |
| 18 | +- **Checksum:** pinned in `bios_registry.json.sha256` (SHA-256) |
| 19 | + |
| 20 | +This repo carries only the data snapshot — there is no in-tree generator. Generation is a dev-time, offline step that |
| 21 | +lives upstream (emu-atlas `scripts/generate_bios_registry.py`, documented in emu-atlas `atlas/data/README.md`); it |
| 22 | +derives the registry from the libretro `libretro-core-info` and `libretro-database` checkouts. **Never hand-edit the |
| 23 | +data here** — a manual edit would silently diverge from the released snapshot and break the checksum gate. |
| 24 | + |
| 25 | +### How to update |
| 26 | + |
| 27 | +1. Fetch the registry at the release tag (emu-atlas releases carry no binary assets — the tagged source tree is the |
| 28 | + artifact): |
| 29 | + |
| 30 | + ```sh |
| 31 | + curl -fL -o defaults/bios_registry.json \ |
| 32 | + "https://raw.githubusercontent.com/danielcopper/emu-atlas/<tag>/atlas/data/bios_registry.json" |
| 33 | + ``` |
| 34 | + |
| 35 | +2. Regenerate the pinned checksum and verify it (the bare filename keeps `sha256sum -c` working from within this |
| 36 | + directory): |
| 37 | + |
| 38 | + ```sh |
| 39 | + cd defaults && sha256sum bios_registry.json > bios_registry.json.sha256 && sha256sum -c bios_registry.json.sha256 |
| 40 | + ``` |
| 41 | + |
| 42 | +3. Bump the **Release** tag above. |
| 43 | +4. Re-run the firmware tests (`tests/services/test_firmware.py`, `tests/domain/test_bios.py`) — a `required` flag flip, |
| 44 | + a removed entry, or a changed hash is a behavior change for consumers, so call it out in the PR description. |
| 45 | + |
| 46 | +The checksum is re-verified by CI (`.github/workflows/ci.yml`, mirrored in `mise run gate` / `mise run lint`) and the |
| 47 | +release smoke test asserts the registry ships in the plugin zip, so both a hand-edited snapshot and a dropped file fail |
| 48 | +the pipeline. |
| 49 | + |
| 50 | +## `config.json` — in-tree default |
| 51 | + |
| 52 | +The platform-slug map and other default configuration. Unlike `bios_registry.json`, this is maintained in this repo (not |
| 53 | +vendored) and carries no checksum gate. |
0 commit comments