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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
_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.
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.
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.
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.
The 2.2n libemucore.so differs from 2.1 only in its three version
strings, so every offset and the three patched instructions hold. 2.2n
ships a new GameIndex.yaml, cheats_ws.zip and cheats_ni.zip (sizes and
hashes updated) and adds the network adapter to its settings pages.
Every other bundled asset is byte identical. The fourth instruction the
build script patches at 0x81b264 after the release is not in the package.
RetroBat, the only platform that runs RAINE, installs raine.7z whose
raine.exe reports 0.97.5 and was built on 16 March 2025, the bump its
CHANGELOG.md records at line 176. Upstream tagged 0.97.6b since. The
mass pin advance had moved the profile to master. It goes back to
8e25d5d, the last commit before that build, with the refs written for it.
Every system that runs from its SD card comes from card_setups(),
derived from the device rules: the setup list, its filter, --platform
and the line menus give each its own row and ask for its card. The
RetroArch row no longer lists handheld systems.
card_root_folder and card_choice share one identity check: another
system's card is refused for every system, KNULLI and ROCKNIX included,
and the same --dest gives the same folder from every entry point. WSL
drive letters are read as typed, the line question lists only that
system's cards and asks again after no.
Offline at a terminal, files left out count as missing: the run ends
with code 1 or 2, as the full screen does. Continue on the systems list
opens Confirm. Wording and layout points of code_audit_13 and
tui_audit_6.
The peripheral option is option(${opt_name} ... ON) at CMakeLists.txt:541;
the notes and the mouse card cited 538, a blank line one above it already
at the old pin.