chore: merge site and docs fixes

This commit is contained in:
Abdessamad Derraz committed 2026-11-09 12:23:13 +01:00
commit 3368140e52
5 files changed
+12 -9

No files matched your search

+4 -2
View File
@@ -280,12 +280,14 @@ class TheScriptWiresBoth(unittest.TestCase):
# Visible words of each built page: measured before the round and after it,
# the ceiling being the after value with 5 % of room.
# the ceiling being the after value with 5 % of room. A page whose content
# grew is measured again on the same layout: Sega on 2026-11-09, with Model 2
# and new Chihiro and Hikaru files.
WORD_CEILINGS = {
"systems/sony": (2012, 1407),
"systems/sony-playstation": (2709, 2130),
"systems/nintendo": (3598, 2941),
"systems/sega": (4151, 3370),
"systems/sega": (4151, 3545),
"emulators/duckstation": (1188, 1117),
"emulators/yaps2": (3159, 2655),
}
+3 -2
View File
@@ -511,8 +511,9 @@ class TheBuiltEmulatorPages(unittest.TestCase):
page = self._html("emulators/aethersx2")
self.assertRegex(page, r'Download <a href="[^"]*/systems/sony[^"]*#sha1-[0-9a-f]{12}"')
# The command only where a setup launches AetherSX2 itself (KNULLI,
# ROCKNIX), never through RetroArch's folder, which the app never reads.
self.assertIn("With ROCKNIX or KNULLI:", page)
# ROCKNIX dropped the package in 20261101), never through RetroArch's
# folder, which the app never reads.
self.assertIn("With KNULLI:", page)
self.assertNotIn("RetroArch", page.split("Install this emulator", 1)[1].split("</details>", 1)[0])
def test_the_index_leaves_the_template_out(self):
+1 -1
View File
@@ -44,13 +44,13 @@ UNLINKED: dict[str, str] = {
"omicron": "Other > omicron",
"rpgmaker": "RPG Maker > easyrpg",
"sdlpal": "the SDLPAL section under its own top, named after the program",
"sega-model1": "Arcade > Arcade and Arcade > MAME: the I/O board device sets",
"sega-system16b": "Arcade > FBNeo, and isgsm.zip is also the ISG Selection Master's",
"smbx": "Game Engines > TheXTech",
"thomson-mo6": "Other > Clock Signal",
"vgmplay": "qsound.zip, ym2413.zip, ym2608.zip: sound chips, no board",
# Files filed with another machine: a link would name the wrong one.
"commodore-c64-supercpu": "VICE's tree under the C128",
"emerson-arcadia-2001": "ar_bios.zip is filed with the Saturn",
"spectravideo": "the SVI ROMs are filed with the MSX",
"taito-type-x": "mame2010 files taitogn.zip, the G-NET BIOS, under this id",
"vvvvvv": "SDL's controller database",
+2 -2
View File
@@ -90,7 +90,7 @@ def validate_format(self, raw_data: str) -> bool:
| `alt_md5` | `str \| None` | A second accepted MD5 (Batocera and ROCKNIX `altmd5`) |
| `native_path` | `str \| None` | The file reference as the platform writes it, kept when it differs from `name`. libretro writes `iplromco.dat` bare although the file lives under `keropi/`, and `ep128emu/roms/cpc464.rom` with its directory |
| `mirror_of` | `str \| None` | The native system whose entry this one repeats under another system. The platform's own file does not carry the copy, so the export skips it |
| `native` | `dict` | Fields the platform declares that the model has no place for, written back unchanged by the export: `native_name`, `md5_list` (a Batocera md5 written as a list), `core`, `note`, `description`, `hash_match_mandatory`, `mandatory_declared`, `alt_paths`, `component`, `required_label` |
| `native` | `dict` | Fields the platform declares that the model has no place for, written back unchanged by the export: `native_name`, `md5_list` (a Batocera md5 written as a list), `core`, `note`, `description`, `hash_match_mandatory`, `mandatory_declared`, `alt_paths`, `component`, `required_label`, `group` (RetroBat: files of one group are alternatives, one held is enough) |
`requirement_entry()` in `base_scraper.py` is the single serializer from a
requirement to a platform YAML entry, and every scraper goes through it.
@@ -355,7 +355,7 @@ by the resolver and by the pack check, as
describes.
`firmware_folder_flat: true` is set where the frontend reads a system's firmware
folder without descending into it (RomM 5.4.0,
folder without descending into it (RomM 5.4.1,
`backend/handler/filesystem/base_handler.py:1002`, `recursive=False`). On such a platform, a core file whose destination has a
subfolder is left out of the pack (`nested` in `scripts/packextras.py`), since no
core would receive it.
+2 -2
View File
@@ -154,7 +154,7 @@ If the inner file is not found inside the ZIP, the status is UNTESTED with a rea
### RomM verification
**Source**: RomM 5.4.0 [`backend/models/firmware.py:58-76`](https://github.com/rommapp/romm/blob/5.4.0/backend/models/firmware.py#L58-L76), `Firmware.verify_file_hashes`
**Source**: RomM 5.4.1 [`backend/models/firmware.py:58-76`](https://github.com/rommapp/romm/blob/5.4.1/backend/models/firmware.py#L58-L76), `Firmware.verify_file_hashes`
RomM reads the file's bytes (`verification_mode: md5`) but does not compare one
digest. Its platform YAML carries `hash_rule: size_and_any_hash`: the file's
@@ -170,7 +170,7 @@ not a single digest gets a new `hash_rule` value, never a new mode.
### ROCKNIX verification
**Source**: ROCKNIX 20261001 [`rocknix-systems:137-197`](https://github.com/ROCKNIX/distribution/blob/20261001/projects/ROCKNIX/packages/rocknix/sources/scripts/rocknix-systems#L137-L197), function `checkBios`
**Source**: ROCKNIX 20261101 [`rocknix-systems:137-197`](https://github.com/ROCKNIX/distribution/blob/20261101/projects/ROCKNIX/packages/rocknix/sources/scripts/rocknix-systems#L137-L197), function `checkBios`
ROCKNIX derives its BIOS checker from Batocera's, so the logic has the same
shape: `md5sum()` on the file, `checkInsideZip()` for archive entries, and an