v1.8.0 (4e899aa) searches the system directory, then the directory of
the loaded game, each for the loose BIOS and then stvbios.zip
(ss.cpp:1540-1582). Same files, sizes and hashes.
The pin 53f53e0 is the 1.0.9 tag commit, and the build names itself
from git describe (Common/Version.cpp). 1.0.9 ships a single Windows
zip whose Sys/ fonts and codehandler.bin match the declared hashes.
The 20251112 APKs are built from tag commit 9198dc2. HEAD 302b0c3 is a
sibling commit off the same base that only adds shader caches under
cache/, so src/ and every ref are identical at both.
The pin b2ff53f is release 2.5-4 (tag 65f1d85) plus a README commit, versionName 2.5 in app/build.gradle. Bare Java file names in the notes now carry their app/src/main/java path. No file changed.
The port now merges PCSX2 ab0b401f and embeds patches.zip, packed from the pcsx2_patches submodule (pcsx2/CMakeLists.txt:1183-1205, pcsx2/Patch.cpp:292-331). The resources copy is read only with PCEE2_EXTERNAL_RESOURCES set. Same files.
Disk images now open through the frontend VFS (Libretro/libretro.c:149-162, src/disk.c:13-65). No system file. core_version is the pin's commit date, the source carries only the git rev.
Same four files. A CD BIOS outside the two CRC32 constants is accepted on a plausible run address (libretro.c:5706-5781), and a custom cart boot ROM must be exactly 131072 bytes (libretro.c:6010-6050). core_version follows CORE_BASE_VERSION in the Makefile.
Same five firmware sets and CRCs. On Auto a 1.44 MB floppy now selects the HG, the first model with a three-mode drive (src/geartowns_core.cpp:1968-1976).
libjavam3g.so rebuilt from changed m3g render context sources, hashed
from the 1.8.2-dev-1973 build. The config screen now copies picked
shaders and sound banks into their directories.
Base directory falls back to a Steam, GOG or Epic install when it has no
game data. The embedded pak gained crosshairs and a console background.
QuakeEX.kpf documented: it serves rerelease localization when no loose copy exists.
supertux runs only on EmuELEC, which builds 37cddf24 (v0.6.3), and
advanced_drastic only on KNULLI, which builds eaf41ab. Both pins stay on
those builds.
chocolate-doom, supertuxkart and fheroes2 run only on EmuELEC, piemu only
on AmberELEC, alephone only on RetroPie. Each of those builds a fixed
revision (package.mk PKG_VERSION, or the release-20250829 tag), so the
pin stays on it and profile_sync judges the profile against itself.
Every cited block was read again at HEAD: no ref left to review, no
file name or hash literal added to a cited file since the pin
(--detect-new-files --watch-hashes), refs recaled with their pins.
Profiles built by a platform at a fixed commit, or whose bump would
leave prose under an older pin, stay where they were.
The prose guard read citations under the pins a profile held before the
write. A bump that moves upstream_commit alone could then leave prose the
report had judged in the fork under the new upstream pin: ten profiles
(dolphin-mmjr2, hatari, xenios among them) came out of a bump with prose
to read again. The written file is now read again and the original bytes
put back when a citation is left under an older pin.
A pin_frozen reason was printed as a tag name ("pinned to tag EmuELEC,
the only platform..."); it now reads "pin held (...)".
check_version read latest_tag as the first entry of GitHub's REST
listing, which sorts by name (nesoid: 2.5 before 2.5-4, gargoyle:
stable-20090825 before 2026.1.1), and found the declared tag only on that
first page of 100. The newest tag now comes from GraphQL by commit date,
and the declared one is asked for by name on GitHub, GitLab and Forgejo.
The clean-tree guard of the write modes looked at the whole emulators
directory: a loop of --emulator X --rebase-refs refused every profile
after the first it wrote. It now looks at the selected profiles only.
bump_commit advanced any profile whose refs all anchored at HEAD. On a
built_by profile the pin is the commit a platform compiles (mame0258,
mame0278, gsplus-legacy at recalbox gsplus.mk:8-9), so HEAD is a build
nobody ships under that name. The bump now refuses those profiles.
--check-version said only that core_version names a tag other than the
pin. It now counts the pin against that tag (after it, before it, or off
its history), and names the latest release when the pin already contains
it. Of 52 warnings, 43 are builds between releases; ares, boytacean,
nesoid and primehack name an older release than their code, vkquake and
vkquake2 a later one.
A single 429 from git.libretro.com on cemu's tree ended profile_sync --all
with a traceback and no report for the other 646 profiles. upstream now
waits a 429 out (Retry-After up to 120 s, else 5, 20, 60 s), as
base_scraper already did, and stops asking a host that outlasts the
waits. profile_sync reports that profile as rate limited, fails the run,
and carries on with the other forges.
The test released the held downloads after a fixed pause. Under load the stop arrived after the release, all three files landed and nothing was stopped. It now waits for the run to say it is stopping.
The three committed samples sat under FBAlpha 2012 while the four
release assets and the profile use fba2012/samples. The folder check
now folds Alpha to A and also reads database paths, which list the
release assets the index never holds.
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.
With nothing detected, the menu had no Enter default, while --help and
the --dest menu name RetroArch as the fallback. Its title now also says
why the question is asked.
--system nintendo-gba wrote system events for gb, gbc and ds, each made
of the few SkyEmu files the choice kept. With systems chosen, only those
are described.
The systems step and --list-systems gave 3do 1704 files, 349 MB, of
which 1689 are MAME hash and plugin files six systems carry. Each line
now shows the system's own files, and the shared ones beside them.
The step for another folder now gives the command with --dest for each
system, the PowerShell one in its script block form. The check line that
means all good is shown whole, since an empty folder also reads 0 hash
mismatches. The port archive is said to come with releases cut after the
port, which v2026.10.10, the latest, predates.
An empty NO_COLOR turned colour off, which no-color.org reads as unset.
FORCE_COLOR and CLICOLOR_FORCE now paint a pipe. --check with several
platforms asks which to check rather than "Install for:", and
--list-platforms says when nothing is detected here.
Offline, the run printed "[Errno -2] Name or service not known". The
common failures now read as words, the raw text kept under --verbose.
A refused certificate under a clock set before the installer was written
is reported as reason clock, with the date it reads, and no trusted
certificate list on the machine as reason no_ca, naming SSL_CERT_FILE.
Neither is retried, and verification is never turned off.
Saying no to a large download sent a beginner to --help. When the
question about what to install was asked, the line now names the c
entry, and i with its size when installed cores were found.
--list-platforms said the MinUI layout was not written yet while
--from-pack and --dest wrote it. On the device the card root is now
found and its version.txt names the file list, and a card without one
gets the --platform and --dest to use. A core with no file of its own
says its files are the platform's, always kept, instead of 0 files.
--system gba, psx or ps1 was refused with no suggestion on RetroArch.
Short names now suggest the ids they stand for, never taken in their
place, and two aliases of one system name it once. --platform muos and
the other systems --list-platforms names stand for the file list they
get, and the run says which.
The size hint drew from every core of the system and named ares, which
loads no file of its own, so --core ares was refused. It now picks among
the names --core resolves against.