The engine counts the bytes a copy, the pack or a resumed partial copy
supplied, and those the network brought. A transfer event carries both
after each progress event and once when the downloads end, so a screen
shows a download speed without guessing.
The walk no longer enters another drive mounted below the folder (it is
named instead), /proc, /sys, /dev or a Windows junction, and the root of
the system is refused. from_folder_problem() checks a folder without
reading it. A scanned event reports each folder read, cut short or not.
A file, ZIP member or folder below a --from folder that could not be
read was taken as no match. When its size is that of a file the run
still needs, or unknown, --check, --dry-run and an install now name it
with the reason, and an unreadable event carries it.
A copy that could not be read when it was copied was reported as a
folder not writable. The source is now opened first and its errors are
its own, and a download failing after it names both reasons. A run
reading a pack falls back to the pack, never to the network.
A missing file walked every archive of the BIOS folder and every file of
its size: 3,000 ZIPs and 3,000 missing files took 186 s, now under 1 s.
--from copies and the owner of a refused file use the same lookups.
The Compatibility folder of an Xbox 360 drive is what xenia-edge mounts
as Xenia-Edge/xefu/ (libretro) and xefu/ (standalone): the collection
files it under that tail so the directory entry resolves.
Compatibility folder of an Xbox 360 hard drive and the April 2018
backward compatibility title update (FFFE07D2, v2.0.5832.0).
xbox.xex and xefu.xex (v2.0.1884.0) and dash/fonts/xbox.xtf are equal in
archive.org items backwards-compatibility-files and
xbox-360-backwards-compatibility-partition-backup. Xbox Book.xtf is equal
in backwards-compatibility-files and a second upload of the folder.
The xefu1_1 to xefu7b builds and xefutitle5 to xefutitle7b come from the
title update package tu20075c00_00000000 (backwards-compatibility-files).
Every block of the package matches its hash tables up to the header top
hash, and every XEX verifies against the retail PIRS public key. The
package's xbox.xexp and xefu.xexp name the base files above by the SHA-1
of their signatures.
mariani, nuance and pcsx2x6 move upstream_commit to their fork base,
dolphin-mmjr2, hatari and jl-mod to upstream HEAD now that their prose
reads in the right tree, boom3 and bsnes-jg record the upstream they are
read against, and groovymame's source pin follows its fork.
aps3e, emucorex, ax360e, snes9x-explus vendor an upstream tree at that
commit, nes-emu and higan_sfc_balanced synced to it, yaps2, flycast-dojo
and supermodel-dojo carry upstream up to it, and AmberELEC builds
mupen64plus's core there. Each reason is in the profile's notes.
upstream_frozen says why upstream_commit stays: the port vendors that
upstream tree, synced to that release, or merged that commit. The view
is then read at its own pin, the way pin_frozen holds source_commit, and
a bump leaves it. Outside a GitHub fork network nothing else could tell
aps3e's vendored RPCS3 1f080485 from an upstream read on a date.
The pins moved past a newer release: dice v0.4.3, geargrafx 1.8.4,
gearlynx 1.2.35, izapple2 v2.5.0, lightspark 0.10.0 (its CMake version
at the pin). The drhelius cores take their version from git describe,
dice and izapple2 carry none, so the release tag is the version.
--check-version said pcsx2x6's v0.2.22 was older than its code because
the pin holds release v0.2.20, the latest the project published. A
release that is an ancestor of the declared tag is not a later one.
A folded run rewritten whole keeps its separators (boom3, mame), a
double-quoted source_ref is matched as the loader reads it and escaped on
write (etlegacy), two files sharing a name take their build mode in the
field path (supermodel Games.xml), and a project word ending the line
before a path marks the citation external (genesis_plus_gx_expanded).
The build workflow downloads it from SourMesen/librashader's nightly
release on every build, so no shipped copy has a fixed hash: the entry
joins the recorded unidentified bundled files.
FAQ entry, the release_pack field and how to revisit it from download
counts, the get/ pages, and RetroPie 4.8 now installs from a computer with
the Pi's network folder as --dest. The start pages are back under their
word ceilings.
get/<platform>/ lists the files of the current release pack, read from
release.json, or gives the command for a setup without one. The README,
setup pages, Get your files and the release notes link it instead of
asset URLs, which die with each deleted tag. Setups without a ZIP say so
with the command beside it, and validate_site checks every get/ page.
release_pack: true in the registry is the list a release builds: RetroArch,
EmuDeck, RetroBat, Batocera, RomM and MiSTer, 83% of the downloads of
v2026.10.10. generate_pack --all, --verify-packs, the pipeline consistency
step, release_record and check_release read it. Manifests are still written
for every platform.
pak399.pk4 and pak399roe.pk4 as libretro/boom3 ships them at efe140c
(tools/vr_paks/compiled/, git blob 2f5c1ad6 and 18254709). VR builds
mount them over base/ and d3xp/.
The plan offers the folder browser, mounted cards first and ZIPs listed,
to add --from (Options adds a second one, Left takes it back), checks the
folder again and says how many files it holds and how many are left to
download. Misplaced files are counted with a Show list of their reasons,
and a local copy no longer counts in the download speed. The found event
test now holds that the interface reads it after a check and an install.
Without a network, muOS and ArkOS launchers ask to copy the BIOS files from the card the system does not read (muOS bind.sh, dArkOS roms2), then install with --from and the pack. CI checks that shellcheck is present, and the test fails under CI without it.
The interface accepted --from and its check and install runs never got it, so they downloaded what the folder holds. Pins in install.sh and install.ps1 follow install.py.
Expansion, accelerator, controller, freezer, bridgeboard and CDTV/CD32
ROMs that Amiberry and WinUAE identify by SHA-1 (rommgr.cpp). Each file
is named after its rommgr label and matches the listed SHA-1.
All 178 are in archive.org item doc_2025-08-26_04-38-36 ("Amiga
roms/bin"), compared by the item's per-file SHA-1.
Independent copies that reproduce the same bytes:
- MAME archives already in bios/Arcade (a590.zip, amiga_a590.zip,
amiga_a2091.zip, buddha.zip, amiga_ar1.zip, amiga_oktagon2008.zip,
amiga_a570.zip): 13 ROMs, 7 of them by byte-interleaving the
even/odd chip halves (A590/A2091 v4.4 to v7.0)
- TOSEC Commodore Amiga - Firmware (archive.org commodore-amiga-firmware):
Action Replay Mk I v1.0/v1.5, Action Replay 1200, Action Cartridge
Super IV Pro v4.3, CDTV A570 v2.30, Nordic Power v1.5/v2.0/v3.0,
X-Power Professional 500 v1.2/v1.3
- archive.org a2091-6_6, a2091PDMA-07, commodore-amiga-a-2286-bios-v-3.6
(even/odd halves merged), bios-a-2088 (A2088 BIOS 3.4, 3.6.1)
The files-to-source table outgrew one page and split in two. Both
parts opened on the same intro, which is the page description, and
validate_site refused the duplicate. Each part now opens on "Part n of
N.". The element-budget exception for the unsplit table is gone: the
parts hold 8,987 and 7,674 elements.
mame_hash_scraper --release rewrote the whole profile and dropped the
pin_frozen that mame0258 and mame0278 carry: libretro/mame HEAD is a
later release, so without it profile_sync compares their refs with code
the Recalbox build never had. A release profile now states it, from
built_by, and keeps the reason a reader wrote.
realign_prose stripped a path prefix, or read a path two repositories
share, in the repository whose pin moved, while the profile meant the
other. hatarib's hatari/src/tos.c became hatari/hatari's src/tos.c, and
freej2me_plus's fork citations were read in hex007/freej2me: 32 and 8
citations asked to be read again although their files were unchanged.
The path as written now decides first, and a shared path belongs to the
repository declared first, as in attribution.
test_a_frozen_build_files_its_content_with_the_build_that_follows paired
every pin_frozen profile with every live one of the same source. It now
skips platform builds (built_by), and requires the frozen systems to be
a subset: a later release can add a board (advancemame's coh1002v).
RetroPie builds the master tip (RetroPie scriptmodules/emulators/px68k.sh:15 at 46128cd2). The one commit since e29ce400 bounds string copies in SDL/winui.c; no file is read differently.
Batocera 43.1 builds RapidEdwin08 a0b5a033 (libretro-genesisplusgx-expanded.mk:7), not 181e8f93. Both carry the same core/, libretro/ and Makefile.libretro trees as the pin dea3528.
The new crc32 values in d_neogeo.cpp belong to game sets (doubledd, pulstarae, kizuna4p); neogeoRomDesc is unchanged and fbneo_hash_scraper reports no updated entry. The coleco refs pointed at the BurnDriver struct and now cite cv_colecoRomDesc (d_coleco.cpp:1061-1064).
ebe8322 adds the Video System PSX driver with its coh1002v root set (src/drivers/zn.c:4062-4068, 4692). The new hashes in pgm.c and the other drivers belong to game sets (killbldp, kovsh, svg, oldsplus...); the pgm BIOS ROM_START is unchanged.
Edge e569a1a runs original Xbox games through XeFu (src/xenia/emulator.cc:748-768, 882-895): xbox.xex and the xefu*.xex builds from an Xbox 360 Compatibility folder, read from xefu/ under the storage root. config.bin at emulator.cc:2339 is written by XeFu there. The libretro tree f23c14c carries the same code. Refs recaled to e569a1a.
The firmware name refs cited lines of an older revision of
RealtekFirmwareLoader.cpp. Each now names its return in
GetFirmwareName (410-448), the device table is 76-207.
Upstream changes are nv2a rendering, CI and a GitHub issue menu item.
The -config_path parsing in ui/xemu.c moved up nine lines. Libretro
pin unchanged, already the HEAD of xemu-libretro.
Games.xml gained the pro1000 set (Real3D Pro-1000 firmware loaded as
a ROM set) and a vs298 CRC fix, so its hash moves. Main.cpp and
GameLoader.cpp refs recaled to the new lines. Libretro pin unchanged.
The standalone now loads librashader.dll or librashader.so for shader
presets and ships it in Dependencies.zip (librashader_ld.h:45-88).
Standalone pin to 4b8a196, Mesen2 to b9fa69d. SGB1's UseSgb2 ref
names the standalone line, the notes name the libretro tree.
Recalbox 10.1.1 builds the standalone from tag v1.1 (rb5000.mk:7),
the revision source_commit already names. The libretro pin is the
HEAD of libretro-rb5000.
Upstream dropped the Emscripten paths, the pak checks are unchanged.
The old pin already sat between v2.86.0 and v2.86.1, so core_version
was behind; HEAD contains v2.86.2.
VR builds mount base_vr/ over base/ and d3xp_vr/ over d3xp/ when
boom3_vr_enable is on, and warn when base_vr/pak399.pk4 is absent
(libretro.cpp:4313-4335). Pin moved to efe140c, notes recaled from
bare basenames to their repository paths.
Upstream added tape autoload and PCG-8100 audio, which read no ROM.
load_system_file moved to libretro.c:977, the ROM table is the same.
Comment citations now carry their repository path.
A disc image runs the configured System Card ROM and refuses to load
without one (mainloop/pce.rs:29-50). The default Arcade Card wants a
v3.0 ROM. Pin moved to d41e2d9, core_version 0.14.1 as Cargo.toml
already read at the old pin.
Port changes are VR, DSU and audio options, no file loading. The
SegaBoot refs now cite the libretro lookup (Sys, then User/Triforce)
at AMMediaboard.cpp:500-514; upstream to e1d35f6, CommonPaths.h same.
The PortMaster port now starts install.py --tui on the console (or in
foot or xterm under a compositor), with gptokeyb in kill mode on the
installer's path, retrobios.gptk, TERM=linux and a Terminus font, and
puts the console, font and mapper back on exit. pugwash screens stay as
the fallback where no terminal can show, and start in no-check mode so
PortMaster's A/B fix applies. Without a network, every launcher installs
from a pack found on the card or names the pack and the folder.
Adds launchers for Batocera and Knulli (Ports, evmapy .keys), muOS
(.muxapp in muxterm with gptokeyb2) and the Tools menu of ArkOS,
dArkOS, ROCKNIX, JELOS and AmberELEC, built by build_port.py with the
pinned installer and tested on a simulated device.
bennugd, eden, play, scummvm and uzem cited files their repositories have
since moved (libretro.c into libretro/, fs_paths.h into src/common/fs/,
uzem.cpp into oldsrcs/). Lines unchanged. scummvm's upstream_commit is
its fork base e0ddc60.
For a port that is a GitHub fork of its upstream, the upstream code it
carries is the merge base of the two, not upstream's HEAD. The bump moved
upstream_commit to upstream HEAD on snes9x, kronos, np2kai and others
whose pin was that base. The upstream view's head is now the merge base
GitHub's compare names, the way _follow_submodule already reads a
vendored submodule. Outside a fork network the HEAD stays.
The note citations hold under three source pins; read again at 583f0e9 they land on the acgame loader, the BIOS scan and the resource reads, recorded as prose_written_at. GameDatabase.cpp:39, Patch.cpp:117, SDLInputSource.cpp:24 and linux_build_qt.yml:129 read the same in the fork, the tree RetroBat ships.
libretro/Omicron master is msx80/Omicron aaaa2f1 (2020-09-29) plus .gitlab-ci.yml and the core Makefile. Upstream HEAD 49e4e05 is 168 commits later and moved the libretro frontend files the notes cite.
upstream_commit 3353efd3 is the higan v106r25 release commit nSide synced with (Emulator::Version 106.25). gitlab higan HEAD 00684d2 is a later higan and stays out.
Boot.cpp:408-442, WiimoteEmu.cpp:156-165, NWC24Config.cpp:17 and TitleDatabase.cpp:54-58 land on their code in Dolphin-MMJR2 at 4d0fdb8 and miss it in dolphin-emu at 4ff214c: every citation reads the fork.
Profile the rommgr.cpp table at 376b22c: 208 entries for CPU boards,
freezer cartridges, SCSI and IDE controllers, Picasso IV, x86
bridgeboards, CD32 FMV and the CD32/CDTV images the scan identifies
by SHA-1. A CPU board without its ROM does not start, so the A1200
and A4000 accelerator quickstarts need these files.
A sentence written in two fields was located over the whole file, found
twice and left in both: the writer now searches the lines of its own
scalar. A structured ref was judged pending when its old text appeared
anywhere, so a chain of shifts (tr1x cut2 508 to 531, cut3 531 to 552)
held the pin on the values the previous entries took: it is now looked
up at its own field.
The recale skipped runs in YAML comments and runs wrapped over two
lines of a literal block, while the pin check counted them: the run
wrote nothing and said nothing. Both are now rewritten at their located
position. A citation that still cannot move is named on stderr and the
profile is left untouched.
The bulk advance moved upstream_commit to upstream HEAD. On freej2me_plus,
hakux, kronos, mesen-s, np2kai and snes9x it was, and still is, the
merge base of upstream with the fork's pin (GitHub compare), the revision
the port carries. ax360e, nes-emu and snes9x-explus vendor an upstream
tree whose commit their notes name.
The zn.c rewrite filed the Time Warner and Raizing BIOS sets under new
ids zn1-atari and zn1-raizing, which have no name and stop
generate_site. Every other MAME profile files them as atari-zn1 and
eighting-zn1 (Raizing is Eighting's label).
hiscore.dat and artwork/dotron.zip as mame2003-plus ships them at
ffc68e3 (sha1 d41b1c32, c6d6579f, both as its profile declares), and
Plus.j2d from the JJ2+ installer of 2026-08-31 (get.jj2.plus, sha1
fcec91aa), which jazz2-native converts textured layers from.
A stop by SIGTERM (Start+Select under gptokeyb) reads the summary like
Ctrl-C and prints the count on disk. The systems filter keeps the ticks
and the focus. The bar names what A does on the focused row. Options
check the folder again, a missing network fails in 15 s with plain words,
an unwritable folder offers another one, a folder inside a card offers
its root, and only a failure keeps its log.
New event kind: checking, with files_done and files_total, while the
files in place are hashed. The exact event lists of the check and
install runs now carry two of them, for the two files in place.
The 2.43 tag sits on main2 (b5ae1af, changelog ending at 1.38) while
the 2.43.apk asset carries main4's changelog and RPCS3 20071-1f080485.
The two branches share merge base d4622157. The pin c6ca182 already
names the released tree.
Music tracks are now looked up through the audio language chain,
music/<language>/ first and then music/, and a catalog row may list
alternate names (backend_files.c:108-134). Same level, FMV and track
names.
Upstream split the sound code into crates (soundblaster, sc55, mt32,
gus). The AWE32 and Sound Canvas tables are unchanged. Adds the
optional 128 KB Verite board ROM that verite_rom names, which the
emulated RISC reads in place of the image the emulator builds
(src/bus/verite.rs:45-71).
Upstream changes at the cited lines are the sprite atlas type passed to
loadSff and a branch input for the screenpack clone in the release
workflow. Every file is still read from the same place.
rom_load now maps Scorpion ZS-256, ZS-256 Turbo+, Scorpion GMX and
Didaktik Gama to four new bundled ROMs (src/cpu.c:3549-3564), sized by
get_rom_size at 64K, 64K, 512K and the 16K default. The TK90X Ferranti
models reuse tk90x.rom and tk90xs.rom. Both ZX Evolution ROM images
were replaced upstream, so their sha1 changed.
The game database now merges resources/emucorex_overrides.yaml over
GameIndex.yaml (GameDatabase.cpp:1274-1278), and a libvulkan_malisx2.so
driver is kept only on the Mali GPUs GpuDriverCompatibility.kt:204-208
lists. tfx.glsl changed upstream. Both convert.glsl entries now carry
the size and sha1 of the vendored tree.