Commit Graph
3628 Commits
Author SHA1 Message Date
Abdessamad Derraz 9c34e8891f chore: merge origin/main 2026-10-27 09:11:43 +01:00
Abdessamad Derraz ec2b7081ad docs: describe measurements/ in the repository 2026-10-27 09:11:12 +01:00
Abdessamad Derraz 571e50f2a8 refactor: read measurements from the local tree
The site compiles the index and the SQLite files from measurements/
instead of a pinned clone. The pin, the sync script, the CI clone steps,
the freshness area and its refresh handler are gone. core_probe --record
writes into measurements/ of the checkout by default, and a test fails
when a line or data file HEAD holds changed or vanished.
2026-10-27 09:11:12 +01:00
Abdessamad Derraz 7dca6ae052 feat: keep measurement records in measurements/
The seven core probe records move from Abdess/retrobios-measurements at
75e878143687 into this repository, copied byte for byte: one .jsonl per
emulator and a gzip data file per record. merge=union lets two branches
that each add a line merge.
2026-10-27 09:09:24 +01:00
Abdessamad Derraz 2439df40f7 chore: hold the test job on ubuntu 24.04 2026-10-27 09:02:56 +01:00
Abdessamad Derraz 7fa8d2d019 docs: document measurement sync clone and pin 2026-10-27 09:02:28 +01:00
Abdessamad Derraz 11a4698e06 chore: merge line and screen setup parity 2026-10-27 08:43:49 +01:00
Abdessamad Derraz 89d148dbea docs: line parity, card refusals and pad keys
First install says where a device name is typed. The key table gives each
pad route its buttons, the --plain claims match the parity work, and the
error event, exit code and --dest rows name the card refusals.
2026-10-27 08:43:11 +01:00
Abdessamad Derraz 4fbbd2c760 fix: one setup decision for line mode and screen
Line mode finds mounted cards, shows its menu and names the folder for a
pack, asks the folder instead of taking a default, and lists setups in the
screen's order. Devices have one spelling each, matched without case,
spaces or punctuation, and a device several systems run lists them all.
--tui --dest reads a card as --plain does. Card boundaries read every
parent up to a mount point from mountinfo. --offline with --yes counts the
files it leaves out as pending, never as failed. The P3 points of
code_audit_15 and tui_audit_8 follow.
2026-10-27 08:43:08 +01:00
Abdessamad Derraz b02dd77d37 docs: describe the measurements repository
core_probe options --emulator, --subject and --supersedes, the record split into line and sidecar, sync_measurements.py and what the site build compiles from the pin.
2026-10-27 08:30:20 +01:00
Abdessamad Derraz 087e5b4d73 feat: show measurements on the site
Each emulator with records gets a Tested block: claim, result, method, computer, core build and the permalink of its record at the pin. A Measurements page filters every test in the browser from the compact index, and the Data page lists measurements.sqlite with its tables. One SQLite file per emulator is linked from its page. wiki/measurements.md says how a test runs, held to the Start here budgets.

Both workflows fetch the pinned commit alone with git before the build, and the deploy fails without it.
2026-10-27 08:30:16 +01:00
Abdessamad Derraz effa9e332f feat: read measurements at a pinned commit
measurements-pin.json names the measurements repository and the commit read. sync_measurements.py reads the clone in .cache/measurements at that commit, checks every line against its id and sidecar, and writes the site index and the SQLite databases. --fetch refuses a remote that changed or removed a line the pin holds, --bump moves the pin. validate_schemas checks every line and sidecar against their schemas, check_freshness flags a pin behind the remote head.
2026-10-27 08:30:11 +01:00
Abdessamad Derraz 6109d7abd5 feat: split probe records into line and sidecar
A record is now one line of records/<emulator>.jsonl in the measurements repository, under 20 KB, and a gzip sidecar holding every repetition, the core logs and the raw timings, its sha256 in the line. record_version 2, core-probe-data.schema.json for the sidecar. core_probe --record appends to a measurements clone and refuses a directory inside this repository's tracked tree.

The seven records of issue 85 moved to Abdess/retrobios-measurements: each line plus its sidecar rebuilds the first file, and keeps its first id.
2026-10-27 08:30:07 +01:00
Abdessamad Derraz 63d815977c docs: no semicolon in the search gate comment 2026-10-27 07:11:45 +01:00
Abdessamad Derraz cb5bb738cb fix: core probe through run_cli, documented
The probe skipped run_cli, accepted option prefixes in its shared options, left three options undocumented and was missing from the published schemas. The worker runs under -I, so the script directory is put back on sys.path before importing common.
2026-10-27 07:11:45 +01:00
Abdessamad Derraz e627f0cf49 chore: merge the core probe and issue 85 runs 2026-10-27 07:02:05 +01:00
Abdessamad Derraz 0c9ce75a1a chore: record Video CD card measurements
Seven core_probe check records for issue 85: Beetle Saturn and Yabause on a Video CD and on Lunar - Silver Star Story MPEG, each run with the eight mpeg_card.bin images, no file, zeros and a 1-byte file.
2026-10-27 06:58:38 +01:00
Abdessamad Derraz 22ece6998d docs: describe every core_probe option 2026-10-27 06:58:38 +01:00
Abdessamad Derraz fecc6d9d32 chore: merge round 5 search fixes 2026-10-27 06:54:51 +01:00
Abdessamad Derraz 57c5d3b7ce chore: check the PlayStation opening names a BIOS
The opening line follows the profiles' required and hle_fallback data: it reads "No file needed with ... Only ... require scph5501.bin" since most PlayStation cores run without the BIOS. The test asserted the words "Start with"; it now asserts what it meant, a linked scph BIOS before the first card.
2026-10-27 06:54:13 +01:00
Abdessamad Derraz 07f785cfd7 fix: rank a console first for its own name
The PlayStation 2 page holds every word of "playstation bios" and pagefind ignores the words a page has that the query lacks, so its own body matches put it first. A console whose every word another system page's consoles also hold is now written again in an `exact` field (weight 20). File names reach the `files` field as their parts: whole names let "ds" reach twelve dsi_* names on the DSi page. `consoles` weighs 100 so an emulator named after its console (Saturn.emu) comes second, and `aliases` 10 so the Nintendo page keeps "gba bios". The gate runs both directions of the PlayStation, Game Boy, DS and Wii pairs and Saturn.
2026-10-27 06:54:08 +01:00
Abdessamad Derraz 5431a42e23 docs: check three cores against recalbox build
Read the cores in the Recalbox 10.1.1 x86_64 image (sha1 b3d80ff0). The
sugarbox2 core, built from the token-gated v1.5, holds the 59 blobs of the
public v0.9 RomData.cpp byte for byte and opens the same paths: only its
on-screen keyboard placement differs. eightyone and exel-hence hold every
compiled embedded array of their public tags.
2026-10-27 06:49:28 +01:00
Abdessamad Derraz c2d745fbfa chore: merge one card reading and offline wording 2026-10-27 06:12:18 +01:00
Abdessamad Derraz 6afa9b97d1 docs: card setups, devices and offline endings
installer.md: one card reading, AmberELEC and EmuELEC cards, device names in the setup list and the line menu, the copy browser on the first mounted card, offline endings, the refused --dest in the exit table. first-install.md: a handheld found by its name, Finished with files missing.
2026-10-27 06:10:48 +01:00
Abdessamad Derraz 74f4e301a6 fix: one card reading and one offline wording
card_choice is the one reading of a card's root for --dest, the setup
list with --dest, a card listed, browsed, typed or numbered: a blank
stick named for KNULLI, ROCKNIX or a system no card file names gets its
folder below the root and the same note on the screen and in line mode,
kept on Create the folder? and the plan. The MinUI family refuses a blank
--dest. A card mounted as BIOS is that card, a folder inside another
system's card is refused up to the drive's mount point, a list named for
another system's card gets a note, a refused --dest emits an error
event. AmberELEC and EmuELEC get a card setup.

Offline, every surface says missing, not failed: no retry line, no
--from after --from, Nothing installed when nothing was, --check counts
what needs the internet, a suggested command keeps --offline.

Drive letters under WSL for every path option, shown as D:\.

The setup list names each card system's devices and puts the cards after
RetroArch when nothing is found (Onion: 4 presses at 40x12, was 10), the
filter and the line menu take a device name, one match is chosen in one
press. Line mode names the BIOS folder and the card picked, leaves the
save directory files out before its menu, offers f) to copy from a
folder. Confirm shows no Install while it counts, Back from the systems
lands on Install, help keeps its column, one spelling per device.
2026-10-27 06:10:48 +01:00
Abdessamad Derraz 88324d595e fix: keep the host system out of a from test
On a WSL host the in-process run turned drive letters on for every test after it, and three TUI tests failed in the combined suite.
2026-10-27 06:10:31 +01:00
Abdessamad Derraz 4522f3ba01 fix: keep the paths of a tree no folder lists
A repository that answers 404 (TeknoParrotUI) was listed folder by folder,
every listing failed, and the tree read as holding nothing: a fetch without
its cached tree dropped its recorded paths. It is now unread, so the record
keeps what it held.
2026-10-27 05:55:10 +01:00
Abdessamad Derraz 8b12685c16 feat: settle a probe check per observable
A check is inconclusive when the compared observable differs between repetitions, a run fails to load or a file changes during it. A disagreement on another observable stays flagged without voiding the comparison. Core log lines name the staged directories instead of the host paths.
2026-10-27 05:53:52 +01:00
Abdessamad Derraz 58b23ebb6c chore: advance jazz2-native to ff9ddb7
AssetConverter dropped its table of known levels: an episode now owns
the levels its first level's exits reach, plus trainer (prince) and
psych3 (rescue), and a level is stored under its own name, so share1
becomes share/share1. Levels and tile sets convert on several threads.
Same Source/ and Content/ files, same lookup order.
2026-10-27 05:53:05 +01:00
Abdessamad Derraz cff75c9da4 chore: advance pom2 to dbf7673
Upstream now reads a Virtual ][ Contents/Resources folder as it is:
each take is also tried under its bare name and a .wav slot as the
headerless .raw (VirtualIISoundCatalog.h:47-66), macOS searches the
app bundle in /Applications and ~/Applications, a truncated AIFF is
rejected and AudioToolbox decodes .aiff on macOS
(VirtualIISoundLoader.h). Same nine takes, same paths.
2026-10-27 05:53:05 +01:00
Abdessamad Derraz 68f42bf8e2 fix: judge each build's refs in its own tree
A profile keyed by build mode compared a part in every repository and kept
the best outcome: xenia-edge's libretro tree carries emulator.cc offset,
and its lines vouched for standalone refs that had moved 4 lines. A part
of an entry with a mode is read in that build's repository, and a part
naming none in the first build declared, as _realign_part decides.
2026-10-27 05:41:27 +01:00
Abdessamad Derraz 6a611cd77a chore: cover the round 5 search package 2026-10-27 05:40:09 +01:00
Abdessamad Derraz 9b2cddfbe5 fix: structured data names releases, not pins
The home page is the site: named RetroBIOS, part of nothing. A source repository states the core_version of its build when it names a release, never a commit id or a pin, and no placeholder description.
2026-10-27 05:40:03 +01:00
Abdessamad Derraz 15f7c72077 feat: setup tab, letter crumbs, console words
get/ pages join the tab of the setup pages of the same name, so no page is excluded from every tab and the tabs keep their names. Groups filing emulators by first letter are no crumb. A console page carries "<name> BIOS" in its terms field. The search gate runs the console, checker, schema, license and iOS queries.
2026-10-27 05:39:59 +01:00
Abdessamad Derraz 06492ec6b8 chore: advance xenia-edge standalone to 7180422
Standalone pin d881a29 to 7180422, the latest release, now named in
core_version. Upstream identifies xbox.xex by its bounding path instead
of its PE name and answers the disc authentication IOCTL: the XeFu
files, paths and required flags are unchanged. Four lines added in
emulator.cc move the citations past IsXeFuDispatcher by four. The
libretro pin f23c14c is the head of its libretro branch.
2026-10-27 05:36:42 +01:00
Abdessamad Derraz fab8bddb7e chore: advance eka2l1 standalone to upstream head
Standalone pin d55da28 to cc30b45. The five commits touch the window
server and fbs bitmap code only: no file read, path or hash changes.
screen.cpp lost eight lines above the upscale shader call, so its
citation moves from 636-638 to 628-630. The libretro pin e39ccac is the
head of the libretro branch and 11f5b6c is still its merge base.
2026-10-27 05:36:42 +01:00
Abdessamad Derraz ce6b500214 chore: advance visual-pinball to upstream head
Pin 704f603 to 63770cd. The three new hashes in platforms/config.sh are
dependency revisions the build fetches: the bgfx patch, libaltsound and
libdof. libdof moved to 5c54ef7 with GetGlobalConfigPath unchanged at
src/DOF.cpp:36-45, and libaltsound still appends altsound/<rom> to the
base folder, so only the libdof revision in the notes changes.
prose_written_at records that the notes were read at the new pin.
2026-10-27 05:36:42 +01:00
Abdessamad Derraz 9690579f34 feat: record env files by name and sha256
A path given to --env is a detail of the host that ran the probe. The record keeps the file name and its sha256, which is what the run depended on.
2026-10-27 05:34:31 +01:00
Abdessamad Derraz d0de6dde30 fix: rebuild source paths from the written pins
load_emulator_profiles caches by directory, and the run had loaded the
profiles before writing them, so the record rebuilt after a write kept the
pins just replaced: linapple, then ten profiles in one advance. The cache
is cleared first. The record is rebuilt for those ten.
2026-10-27 05:24:04 +01:00
Abdessamad Derraz 5c89936d1a chore: advance ten profiles to upstream head
armsx2, clk, dosbox-x, imageviewer, openjkdf2, parallel_n64, px68k, rpcs3,
rust_dos and squirreljme. Refs recaled where they shifted; no file name or
hash gained since each pin.
2026-10-27 05:22:47 +01:00
Abdessamad Derraz 00b034612f feat: add headless libretro core probe
core_probe.py loads a libretro core with no window, runs it for a
number of frames and reports the files it opened (strace), its log
lines, frame, audio and save-state hashes and its speed. bench repeats
a run after warm-up and gives median, mean, deviation and range; check
swaps one system file between runs and compares one observable.

--record writes a JSON record with the core build, frontend commit,
host and every input by hash, validated against
core-probe-record.schema.json. A busy host is refused, and a
repetition that disagrees with the first is flagged.
2026-10-27 05:18:10 +01:00
Abdessamad Derraz f80dcb6d3c chore: mark three cores as recalbox builds
eightyone, exel-hence and sugarbox2 live in Recalbox's own package repos
and no other platform ships them. eightyone's pin v1.2 is the tag Recalbox
10.1.1 builds while v1.3 is out, so it is held; exel-hence is held on v0.9.
sugarbox2's built tag v1.5 is token-gated and stays on the public v0.9.
2026-10-27 04:55:23 +01:00
Abdessamad Derraz ee2332b799 chore: advance 44 profiles that cite no source
Held back by the skip until now. Each libretro core is built by the
buildbot from its default branch.
2026-10-27 04:26:28 +01:00
Abdessamad Derraz 951bd070bf feat: advance profiles that cite no source
_needs_review held every skipped report, so a profile with no source_ref
never moved: anarch sat behind a CI-only commit through every bulk advance.
Its source pin now moves; its upstream pin does not, since nothing was
compared there.
2026-10-27 04:26:28 +01:00
Abdessamad Derraz e96d1326a3 fix: skip the line mode pty run without pyte
The offline line mode test opened a pty with pyte missing and errored where its neighbours skip. A comment in install.py also carried a clause semicolon that the prose style test refuses.
2026-10-27 04:20:23 +01:00
Abdessamad Derraz 625bee35cc fix: record missing data dirs in the run
main() starts each run with no notices, so the mocked run records the
missing directory itself.
2026-10-27 04:16:33 +01:00
Abdessamad Derraz ed4580a2f7 chore: advance ymir standalone to fe439e9
v0.4.1-84. No cited file changed, no file name or hash gained since the pin.
2026-10-27 04:16:31 +01:00
Abdessamad Derraz 57fca413c0 chore: name the release each pin contains
Each pin already held a later release than core_version named, found by
the version check reading tags and numbers.
2026-10-27 04:16:31 +01:00
Abdessamad Derraz 4b11a43a86 feat: version check reads tags and numbers
A project that tags without releases (eightyone, higan) was never compared,
and a core_version naming no tag (parallel-launcher 9.0.5 beside v9.0-6)
silenced the passed-release warning. The newest tag stands in when it is a
version number, and an untagged core_version is compared by number within
one scheme. --emulator is repeatable: a stored value kept only the last.
2026-10-27 04:16:31 +01:00
Abdessamad Derraz e308b58fe1 chore: profile starboard at v0.40.0
Read from the signed Starboard-v0.40.0.apk (sha256 e03173ee, the
digest GitHub records, same signing certificate as v0.23.0). The rootfs
flow is unchanged apart from class names. The runtime release is now
starboard-rootfs-20261020.3 (586984114 bytes, sha256 883f1800), and its
.sha256 sidecar is published and matches, so the app checks the hash.
Runtimes now live in Starboard/libs on shared storage, bound into the
rootfs, the ES-DE sync no longer writes es_systems.xml, and the APK adds
libSDL2_dlopen, libSDL2_pysdl2, libsb_libguard and libsb_xhelper.
2026-10-27 03:55:02 +01:00