Commit Graph
46 Commits
Author SHA1 Message Date
Abdessamad Derraz 5297319f8c chore: drop the hppa name no profile uses
The QEMU profile stopped listing the HPPA target (bd292ba2f): its entry
in SYSTEM_NAMES was a leftover.
2026-11-11 10:27:52 +01:00
Abdessamad Derraz 75c9170666 fix: link Heretic, Hexen, Strife and Chex Quest
GZDoom now declares the path of each IWAD, so their files resolve by
path and these ids count as held. Their IWADs sit in the Doom folder,
and no parent led them there: the Doom section is theirs too.
2026-11-11 10:27:52 +01:00
Abdessamad Derraz 2dc427d5d0 chore: merge origin/main 2026-11-10 00:50:05 +01:00
Abdessamad Derraz baa89556d9 fix: drop the parent of an id nothing names
No platform or profile files a system under neo-geo-pocket-color since profiles name it snk-ngpc: its SYSTEM_PARENTS entry pointed at an id without a name.
2026-11-10 00:04:52 +01:00
Abdessamad Derraz bfa79d6788 fix: name the Neo Geo Pocket systems by their ids
Phase 0 files snk-neogeo-pocket and neo-geo-pocket-color under snk-ngp and snk-ngpc. The No-Intro catalogs, their importer map and the campaign list now use those ids, the games index is regenerated, and the site's name table drops the eleven entries the new aliases leave unread.
2026-11-09 23:12:26 +01:00
Abdessamad Derraz 314b15b4ad fix: type role libretro cores as libretro
2048 and gong (game), radio and video_processor (utility) and the test
cores (test) are libretro builds, but their role sat in type:, which
resolve_platform_cores filters on: all_libretro left them out, so no
platform resolved them and RetroArch's manifest named none, the
--installed-cores gap of issue 87. The role moves to role:, and type
stays libretro: type keeps saying how a profile is built and run, which
the resolver reads, while teaching the resolver that three role values
mean libretro would make type a classification again. The site and
coverage leave test cores out by role. fluidsynth, a library and no
libretro core, keeps type utility. A test keeps every buildbot core
named by RetroArch's resolution.
2026-11-09 23:01:22 +01:00
Abdessamad Derraz 09b2fc6a95 chore: drop the unreached sharpx1 name 2026-11-09 13:44:24 +01:00
Abdessamad Derraz 5dbde15f72 chore: regenerate artifacts, name sharpx1 2026-11-09 10:57:29 +01:00
Abdessamad Derraz 70276f098c chore: merge six core-info profiles 2026-11-09 07:37:11 +01:00
Abdessamad Derraz b690a03864 feat: profile six libretro cores from source
anybor, anygm, sm2, tgpulse_next_m1, zcdi and zesarpcw had a core-info file and no profile. parallel_psp and parallel_xbox are left out: no source is published for them.
2026-11-09 07:36:36 +01:00
Abdessamad Derraz 19cfd8132b feat: profile five new buildbot cores
parallel_dc (libretro/flycast renamed), hyperscanemu, hypseushw, n64emu
and odin reached the RetroArch buildbot after the last targets scrape and
resolved to no profile. Targets rescraped, each core profiled from its
source.
2026-11-09 06:52:44 +01:00
Abdessamad Derraz b6b26392e1 refactor: move the collection model to its module 2026-11-06 15:12:36 +01:00
Abdessamad Derraz 4d3f589ef4 refactor: drop the archived platform status
RetroPie was the only platform with status: archived, which kept it out
of verify --all, slots, the pipeline and list_platforms unless
--include-archived was typed. release_pack already decides which packs a
release publishes and the installer serves every platform, so the status
set nothing apart. The field, its schema entry and the flag are gone, and
RetroPie is covered by every full run like any other platform.
2026-11-06 11:52:34 +01:00
Abdessamad Derraz 9b871db83a fix: read the given profiles and platform files
Five generate_site helpers read ./emulators or ./platforms, and
has_release_pack read platforms relative to the working directory: run
from scripts/, a released setup's get page showed the No ZIP line.
siterender's fallbacks and sitediagrams read the repository too. All of
them now read siteinputs. platforms/_guides.yml stays the repository's:
siteguides loads it at import, before any flag is parsed.
2026-11-06 08:14:30 +01:00
Abdessamad Derraz 8c3e653234 fix: key the arcade sha1 cache by the database
The cache compared id(db), so a database freed and replaced at the same
address answered with the first one's Arcade set.
2026-11-06 03:15:07 +01:00
Abdessamad Derraz 394ef44e57 fix: one system slug for bermuda syndrome
bermuda.yml (the EmuELEC build) and bsyndrome.yml (RetroBat's bs.exe)
document the same cyxx/bermuda engine under two slugs, bermuda-syndrome
and bsyndrome, so the site gave the game two system pages. bsyndrome now
files its entries under bermuda-syndrome.
2026-11-05 12:23:41 +01:00
Abdessamad Derraz a0c560479b fix: join platform system names to profiles
The rom folder survey joined 463 folders to their default core's whole
profile, no system of it matching. SYSTEM_ALIASES, the one table
_norm_system_id reads, now folds ten more spellings of one machine:
apple2gs, astrocade, astrocde, creativision, gamepocketcomputer,
nintendo-super-game-boy, cps1, cps2, cps3 and pgm. The profiles that
used them take the canonical id (mame, groovymame, mamemess, mame0258,
mame0278, bsnes, mesen-s, mesence, jollycv, fbalpha2012 and its three
CPS cores, fbneo_cps12), as test_system_ids requires.

With bsnes and bsnes-hd now filing SGB1.sfc under one system, their
claims fold onto one report entry. _names_content read only the first
claim, hashless, and nSide's SGB1.sfc/ tree took the path before the
file. A hash on any folded claim now counts: every pack keeps the
destinations it had.

The site drops the eight display names the canonical ids replace and
names tvgames. README counts 533 systems instead of 541.
2026-11-03 15:23:30 +01:00
Abdessamad Derraz 3d7b374326 chore: drop a system name no source uses
No profile or platform names the gba id since the beetle_gba profile left. The table test reads every entry against the ids in use.
2026-10-24 01:26:49 +02:00
Abdessamad Derraz 4dd3800f11 fix: file system cards by board, machine, engine
Every board set sits on its board page whatever folder holds it, a set a
reviewed machine owns joins that machine (neogeo.zip under SNK, the Atom
under Acorn, the MZ-2000 under Sharp), and a game engine's files form one
section named after it. Board pages drop the heading that repeated their
title, parts drop the Part of line their crumbs already say, and pages
that moved redirect.
2026-10-24 01:19:56 +02:00
Abdessamad Derraz e5cd024e2e fix: settle the round 4 site merge
Root pages nothing produced are swept, so a table moved to a platform page no longer keeps the address its redirect needs. Data tree pages name their readers, board crumbs end on the Arcade page once, fba2012 is headed FB Alpha 2012, test profiles get no page, and the installer glance lists --declared-only and --offline. sitesources.py goes through run_cli.
2026-10-23 20:04:33 +02:00
Abdessamad Derraz af3caed8ab fix: give xbox 360 its own section 2026-10-23 18:01:45 +02:00
Abdessamad Derraz c4e58b54bd feat: link arcade boards and program folders 2026-10-23 14:45:02 +02:00
Abdessamad Derraz 6c52d24a30 feat: arcade boards and the 28 unlinked ids
siterender.arcade_board(sha1) names the board a set archive is the
BIOS of, from the profiles' bios_zip entries and their contents CRC32s,
never the folder. board_slug(id) gives the section slug. A board links
once the system pages call record_board_section(), so no page links a
section nobody wrote. Thirteen ids whose files sit in one program's
folder get a reviewed parent, mz800 the Sharp MZ section. The link
test counts set archives.
2026-10-23 14:32:34 +02:00
Abdessamad Derraz 15f69a2212 chore: file QEMU, Roland, Chihiro and Oric
QEMU's 79 files go to QEMU/QEMU and Roland's four loose ROMs to MT-32
and CM-32L. The mt32-roms, soundcanvas-roms and sounddata trees stay as
the code addresses them. Chihiro joins Sega and the Oric joins
Tangerine, the names the site and libretro already use. No destination
held other bytes.

The three QEMU EDK2 images are release assets, and their .gitignore
lines follow them. Database and manifests are regenerated together.
verify --all and cross_reference give the same output once moved paths
are mapped.
2026-10-23 13:49:37 +02:00
Abdessamad Derraz 3d0b013588 fix: link systems to their new console folders 2026-10-23 10:17:34 +02:00
Abdessamad Derraz 42c235abb9 chore: one folder per console 2026-10-23 10:16:51 +02:00
Abdessamad Derraz 3de2d52629 chore: one folder per console
DS and DSi split into Nintendo DS and Nintendo DSi. 64DD, Mega-CD,
ZXSpectrum, VSmile, BBC and Game Engines/DOOM merge into the folder
of the same console. Same-named dumps with other bytes are kept:
BBC Micro's earlier zips in .variants/, the vsmilem set in vsmilem/,
the Doom II 1.666 IWAD in v1.666/, BizHawk's DSi firmware in bizhawk/.
Galaksija and Vircon get a console folder, sdlpal's desc.dat joins
its tree, VICE's PET and CBM-II ROMs leave C128 with their vice/ tail.

Database and manifests regenerated together. Verify and cross
reference give the same result once moved paths are mapped.
2026-10-23 10:15:49 +02:00
Abdessamad Derraz fad947e9d0 feat: link system ids to their files' section
A reviewed SYSTEM_PARENTS table leads variants (WonderSwan Color, Neo Geo MVS, MSX2) to the section holding their files, an Arcade heading that reads the name exactly is accepted, and system_search_aliases() gives the platforms' native ids for search. 260 of 636 ids linked before, 338 after.
2026-10-23 09:06:55 +02:00
Abdessamad Derraz bb13e7b5f9 fix: link a system to the section of its name
A system link followed the folder its files sit in: emerson-arcadia-2001
reached the Saturn and sega-naomi the Dreamcast. It now goes to the
section system_name() reads, or stays a plain name. Console headings
carry an explicit id, so Sega's Mega-CD no longer shares mega-cd.
2026-10-23 07:08:09 +02:00
Abdessamad Derraz 72e7507ff9 feat: name each system once, from its own section
siterender.system_name reads the heading of the console section the id spells, then SYSTEM_NAMES, and raises for an id in neither. The emulator intro and the picker titles read it instead of the folder a system's files were voted onto.
2026-10-23 02:04:06 +02:00
Abdessamad Derraz 342d0f7271 feat: write the site for Starlight behind a flag
generate_site.py --engine starlight writes the pages, navigation and
data files of an Astro Starlight project in website/. Links resolve to
site addresses, every heading keeps its MkDocs id, and pages split by
size are measured in the MkDocs Markdown so both builds cut the same
files. The 839 pages and their 45,613 ids match the MkDocs build.
2026-10-22 15:41:39 +02:00
Abdessamad Derraz 36ac7b0cd6 feat: split the heavy site pages
A manufacturer page over 500 KB of Markdown becomes a summary: its
largest consoles move to pages of their own, cut into parts when one
console is still too large, and every console keeps its heading there.
MAME's 1,564 cards move to four pages, its page keeping a row per entry
with the card's old anchor. RetroDECK's arcade list gets its own page.
site.js follows a moved card by content or by its row.

The largest page drops from 10.5 MB to 0.88 MB. Emulator groups of the
navigation open by initial (65 KB to 41 KB before the content). File
cards are level 3 under a level 2, and the hook keeps the table of
contents of card pages to level 2: platform pages no longer list every
system id. Key/value cards name their columns. The sweep runs before
the decoration, which kept every page no generator wrote any more.
2026-10-22 13:13:52 +02:00
Abdessamad Derraz 1b9ea86e1b feat: draw site images from data, host them
scripts/sitediagrams.py writes the explainer, install flow, verification modes, MinUI card, pipeline and data layer diagrams as inline SVG from the registry, the platform files, the install manifests and the pipeline step list. A page asks for one with an image comment, which the decoration pass resolves. The two mermaid diagrams of the architecture page are replaced, so no page loads mermaid from unpkg.

Platform logos and system icons are copied once by fetch_site_images.py with their source and owner recorded, and the build rewrites the remote links to the copies. validate_site refuses an image from another host. Three registry logos named a personal avatar instead of the project's (RomM, ROCKNIX, MiSTer FPGA) and MyMinUI's was a GitHub identicon, now dropped.

One 1200x630 sharing card per section, a 404 page with search and the two entry pages, and a list of screenshots that need a real device.
2026-10-22 11:45:47 +02:00
Abdessamad Derraz 90e54dcb43 fix: show every field of structured profile blocks
The analysis and firmware blocks printed their source_ref as plain code,
dropped any list or map inside a list item (cemu's firmware title
contents), cut values at 200 characters and let a folded note's second
line leave its admonition. Citations are now pinned links and every
value is shown on its own line.
2026-10-21 05:09:56 +02:00
Abdessamad Derraz a0672d4459 refactor: derive the spelling index from its table
The index of other system spellings was rebuilt only when the page
table changed length, so a table of the same size kept the previous
links. The builder now returns its table and set_system_page_map
installs it with the index derived from it.
2026-10-21 05:05:50 +02:00
Abdessamad Derraz c87c73d0a8 fix: replace the system icon cache whole
The cache was truncated and dumped in place. A concurrent build read
half a file, took it for empty, and an offline run then wrote {} over
every recorded icon. The file is now replaced through a scratch file,
merged with what another run recorded meanwhile, and left alone when
nothing new was learned.
2026-10-21 05:05:46 +02:00
Abdessamad Derraz 721622c2ea fix: keep bold labels in nested profile blocks
The nested list structure stays, so each label renders bold instead of showing its asterisks. The platform details block becomes a list as well: its labels were paragraphs followed by items with no blank line between them. validate_site now reports any asterisks that reach a rendered page outside code, which runs in the deploy and in pipeline step 8b.
2026-10-20 12:46:37 +02:00
Abdessamad Derraz 90b0313470 fix: render nested profile blocks as lists
A key holding a mapping was written as a paragraph, and its children landed eight spaces deep inside the four-space admonition, where Markdown reads an indented code block: the clownmdemu analysis showed raw asterisks. Each level is now a list item with its children as a sublist, booleans read yes or no, and a null reads none.
2026-10-20 12:32:41 +02:00
Abdessamad Derraz c589ed49b8 fix: the site says 1 file, not 1 files
Counts were printed with a fixed plural and the site said "1 files" 234 times, "1 issues" and "1 entries" too. A shared helper picks the noun, and the generated-pages prose test refuses the form.
2026-10-20 05:57:05 +02:00
Abdessamad Derraz 91403aa149 fix: site systems match under every spelling
Platform pages matched emulators to systems by the exact id, so the RetroArch page listed none for sega-mega-drive (genesis_plus_gx says sega-megadrive), and listed every emulator of a system instead of those the platform runs. Emulator cards linked only ids a platform uses: 2,057 of 4,215 system lines had no link, now 327, the rest having no page. Ids are compared as _norm_system_id reads them, and a system only profiles name is placed by the files they file under it.
2026-10-20 04:55:16 +02:00
Abdessamad Derraz 4231902a6c docs: write prose without dashes or semicolons
Profiles, the wiki, comments, docstrings, command output and schema descriptions carried em-dashes, clause-joining semicolons, unicode arrows, box-drawing banners and check-mark glyphs. Each sentence was rewritten rather than having its character swapped. Hashes, paths, source_ref values and every cited file:line are unchanged, which a comparison of each parsed profile against the previous revision confirms.

validate_pr comments now say PASS and FAIL in words, and source_ref values in a profile's structured blocks render as code. test_prose_style fails if any of these comes back, in tracked files or in the generated site.
2026-10-19 06:47:31 +02:00
Abdessamad Derraz bd75defb61 fix: date sitemap entries from their pages
The sitemap gave every page the build date. A page now states its own date
and a mkdocs hook passes it on, or leaves lastmod out. The values added to
the site's code spans today are also escaped: a backtick in a profile or
file name could close the span and inject markup.
2026-10-18 10:08:18 +02:00
Abdessamad Derraz faa8af0800 refactor: annotate every remaining signature 2026-10-18 00:44:20 +02:00
Abdessamad Derraz 9ea6083b8a fix: show path placeholders and hash lists on site pages 2026-10-04 18:07:18 +02:00
Abdessamad Derraz ee6e7558f9 refactor: assign each module constant once 2026-09-04 10:19:04 +02:00
Abdessamad Derraz b8bdeec5ce refactor: lift the site's shared layers out
Three groups leave generate_site.py: the write-and-sweep bookkeeping the
whole build shares, the pinned permalinks into cited sources, and the
small renderings every page uses. Each sits below what calls it, so the
page generators stay the only composite layer.

Verified against the previous revision on frozen inputs: 571 artefacts
identical, and the rendered site still resolves all local links across
511 pages.
2026-08-12 12:37:27 +02:00