Commit Graph
5195 Commits
Author SHA1 Message Date
Abdessamad Derraz b8ed9b735a feat: profile the retroarch frontend config reads
AmberELEC and ROCKNIX install a retroarch.cfg whose system_directory
points every core at the BIOS folder. retroarch.yml (type utility, no
file, no system) reads that key, and ROCKNIX's systemfiles_in_content_dir,
at the RetroArch each one compiles: v1.22.2 and bdba046f. all_libretro
never picks a utility profile, and lists naming retroarch gain no file.

A libretro core option a frontend record writes stays the core's to
read: RetroDECK's pcsx2_bios keeps lrps2 as its reader.
2026-11-11 12:06:28 +01:00
Abdessamad Derraz 8770b9c067 fix: install emuelec configs from the boot copy
duckstation.sh quotes its glob, so its copy names a file called * and
installs nothing. userconfig-setup copies /usr/config into
/storage/.config at every boot, an existing file kept (false | cp -i),
and /emuelec links there: that copy installs settings.ini and
advmame.rc. A quoted glob is no install, and a redirection ends the
copy's operands. Rescraped at v4.8: only these installs change.
2026-11-11 11:57:12 +01:00
Abdessamad Derraz b29500846b feat: read retrobat's saturn and atari builds
RetroBat installs its stable archives, so each config_reads entry is
read at the build the binary names: Hatari 2.4.1, hatariB 0.3,
Hatari2014 at ab55c3e from the buildbot, Kronos 2.7.0 and Ymir 0.3.3.
SSF ships PreviewVer R28 and YabaSanshiro 1.20.32 has no public
source: binary_sha256 names the file their address refs are read in.
The seven RetroBat records citing an option list now hold.
2026-11-11 11:57:12 +01:00
Abdessamad Derraz 01ca625378 feat: rescrape retrobat at its pinned commit
The scraper read emulatorLauncher master on every run, so an extractor
change was diffed together with upstream's commits since the pin. It now
rereads the commit platforms/retrobat.yml pins. --revision master moves
it, and check_freshness and refresh_stale pass that through the
registry's rescrape_args.

The extractors also read master (f681f435): Kronos and YabaSanshiro
fall back to sega_101.bin then mpr-17933.bin when the chosen BIOS is
absent, Ymir writes a forced BIOS only under its override flag, and a
folder created below bios (Ymir's cdb) is a passes_path record. At the
pin the 187 records are unchanged.
2026-11-11 11:40:05 +01:00
Abdessamad Derraz 5c1d810086 chore: merge the launcher evidence rule 2026-11-11 11:15:53 +01:00
Abdessamad Derraz a6716796a9 feat: write config_reads into the profiles
Where each shipped build finds the config a platform installs and reads
every key it opens a file from, read at the build the platform ships:
duckstation (EmuELEC, ROCKNIX, RetroBat), xemu, armsx2, hatari, melonDS,
dsperate, NanoBoyAdvance, mednafen (ROCKNIX's sydarn fork) and ares,
gzdoom, xroar, lrps2 and the amiberry builds at their pins. pin_build
names the builds ROCKNIX, EmuELEC and AmberELEC compile, revision the
ones RetroBat and Flathub install unpinned.

tests/test_launcher_evidence.py covers the rule, the extractor helpers,
the invariants and the chains that move placements.
2026-11-11 11:11:50 +01:00
Abdessamad Derraz f950482567 feat: cite option lists as choices_from
RetroBat's es_features.cfg and KNULLI's es_features.yml list the values
a menu offers. They move out of source_ref into choices_from, beside the
generator that writes the choice. RetroBat's xemu flashrom record holds
outside a Chihiro launch (Xemu.Generator.cs:48, 284), and KNULLI's
libretro boot disk records name the one core es_features offers them
for. Rescraped at the pinned revisions.
2026-11-11 11:04:08 +01:00
Abdessamad Derraz c5d3e85bac feat: record config installs in shell extractors
ROCKNIX, EmuELEC, AmberELEC, EmuDeck and RetroDECK records citing a
config now carry the code installing it, whether that keeps a file
already there, and the launch code rewriting its keys. Rescraped at the
pinned revisions.

Records the shipped code never reads are no longer written: EmuELEC's
mame.ini folders (MAME.opt turns paths off), AmberELEC's atari800.cfg
(read only under an option that is off), the six RetroDECK XRoar ROM
lists no machine looks up, and the ROCKNIX melonDS DSi BIOS keys
(DSiExternalBIOSEnable is set by no shipped ini).

Conditions added: ROCKNIX and AmberELEC amiberry kickstarts hold only
outside a WHDLoad --autoload boot, ROCKNIX NanoBoyAdvance exits without
its BIOS, the EmuELEC scummvm.ini copy runs from an action no launch
passes, and the EmuDeck melonDS.toml keys need ExternalBIOSEnable (DS)
or ConsoleType 1 (DSi).
2026-11-11 11:04:02 +01:00
Abdessamad Derraz 3129eaf10c feat: bind config launcher records on evidence
A launcher record citing a config, option or feature file binds only
when the platform's code installs the file (installs), its launch code
was read for what replaces it (overrides), and the emulator's profile
shows where the shipped build loads it and reads each key
(config_reads, read at pin_build). Unproven records place no file and
hand no directory. verify, cross_reference and the platform page list
them apart, outside severity and --strict.
2026-11-11 11:03:47 +01:00
Abdessamad Derraz 8b6e2587aa chore: merge the reversed closed-source refs 2026-11-11 10:29:53 +01:00
Abdessamad Derraz f07edf03ec docs: drop the FPseNG site FAQ claim
The recommendation quoted from the FPse site FAQ is gone. The HLE
fallback beside it is cited in libfpse.so.
2026-11-11 10:28:53 +01:00
Abdessamad Derraz 33624d13c0 docs: drop README claims from advanced_drastic
The hooked SDL2 description rested on the README alone. The notes now
say what launch.sh does at the pinned commit.
2026-11-11 10:28:53 +01:00
Abdessamad Derraz 3422d90acf docs: drop ePSXe manual claims from its notes
Two claims resting on the ePSXe manual alone are gone. The code refs
beside them stay.
2026-11-11 10:27:58 +01:00
Abdessamad Derraz c660aabfa8 docs: cite CSpect.exe in place of its readme
The platform and version facts now cite the assembly attributes and
the host selection in CSpect.exe 3.3.1.0.
2026-11-11 10:27:58 +01:00
Abdessamad Derraz 302994d209 fix: read the SSF BIOS rules from SSF.exe
Readme claims give way to the boot routine of SSF.exe R38: the Saturn
BIOS must read 0x80000 bytes, a failed read or NoBIOS falls back to the
embedded boot ROM, so the BIOS is optional with an HLE fallback, and
ST-V reads its EPROM whatever NoBIOS says.
2026-11-11 10:27:58 +01:00
Abdessamad Derraz ecfe8157bb fix: keep .mdx pages through the sweep
A body is written as .md and the decoration pass, after the sweep,
gives a page with components its .mdx name. The sweep did not count the
.mdx of the run before as produced: 402 pages were deleted and written
again on every run, so write_if_changed never kept their bytes.
2026-11-11 10:27:53 +01:00
Abdessamad Derraz 8d69ad54df fix: space Starlight's previous and next links
The word and the page title were split by a <br> only, which a copy,
textContent and an assistant read as "PreviousWhat the packs do not
hold". The override keeps Starlight's look, spaces them, names each link
by direction and page, and makes the pair a navigation landmark.
2026-11-11 10:27:53 +01:00
Abdessamad Derraz baa42df2a7 chore: record the trees and parts after the merge
sitesources.py --fetch records the three pinned trees the merged
profiles added and drops paths they no longer cite. generate_site.py
records the new MSX part pages.
2026-11-11 10:27:53 +01:00
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 9627c79591 docs: list two test modules in the testing guide
test_content_checks and test_data_only_refs read profile content and
citations: they sit with the verification and profile checks.
2026-11-11 10:27:52 +01:00
Abdessamad Derraz 95bb3ab127 docs: drop MasterGear FAQ claims from its notes
FAQ quotes give way to the SF7000 branch of the reset routine in the
MG 4.9 desktop binary, or are gone.
2026-11-10 14:25:43 +01:00
Abdessamad Derraz b7f4139008 docs: cite Speccy code in place of its manual
The -home, -palette, DEFAULT.Z80 and Sam Coupe claims now cite the
option table and loaders of the Speccy 5.9 desktop binary. Quotes with
no code behind them are gone.
2026-11-10 14:25:43 +01:00
Abdessamad Derraz 9d2df170e8 docs: cite MFME code in place of its history file
Notes claims taken from history.txt and the readmes now cite the code
in MFME.exe 20.1.0.0 or the installer payload, or are gone.
2026-11-10 14:25:43 +01:00
Abdessamad Derraz 23f3c1b231 docs: drop manual claims from Future Pinball notes
Notes now cite code for the fpRam directory, the registry keys and the
Tables path, and drop the manual, installer and Batocera changelog
wording. The code spells the directory fpRam.
2026-11-10 14:25:21 +01:00
Abdessamad Derraz 3ff241a189 fix: prove the cascade loads in BAM camera plugins
The four camera plugins link OpenCV statically. Refs now cite the
CascadeClassifier::load call, its path built from the plugin directory
and the three-entry table, and the empty detector that follows a
failed load.
2026-11-10 14:25:21 +01:00
Abdessamad Derraz b66471538c fix: trace xm6g.exe startup to the ROM loader
The step from the frame's create handler down to Memory::Init was
inferred from the error message. Refs now give the chain through
AfxWinMain, InitInstance, the message map, VM::Init and the device
vtable, and the notes say where the SRAM machine index is set.
2026-11-10 14:21:38 +01:00
Abdessamad Derraz bae3453278 fix: state the boot.id gate in Chihiro-DS notes
The media board ROM is needed only when a boot.id sits beside the XBE,
cited at the system detection block of cxbxr-emu.dll.
2026-11-10 14:17:08 +01:00
Abdessamad Derraz 499c81a8de fix: prove the boot.id gate in TeknoParrot cxbxr
The media board ROM ref now cites the XBE directory build, the boot.id
exists test that makes the system Chihiro and the gate that skips the
ROM checks in TeknoParrot's cxbxr-emu.dll.
2026-11-10 14:17:08 +01:00
Abdessamad Derraz 0fce01826d docs: hash the Caprice Forever ROM resources
Each built-in ROM resource of Caprice.exe 26.4 is listed with the sha1
of its bytes and the dump it equals in this and other profiles. The
release date taken from History.txt is gone.
2026-11-10 14:13:51 +01:00
Abdessamad Derraz b2890d53ca chore: merge the integration into site-text 2026-11-10 14:13:07 +01:00
Abdessamad Derraz c2e8338a24 feat: test the text a page gives a reader
Generated and built pages read without the stylesheet, skipping hidden,
aria-hidden, scripts and styles: no step or figure text read twice, no
counter glued to a label, no empty picker, every laid out box spaced.
The build's filter box is compared with the generator's through node.
2026-11-10 14:12:06 +01:00
Abdessamad Derraz a4d5c6149b fix: space tile, stat and file row labels
Tiles read "BizHawkWindows, Linux", stats "168/168Coverage" and a
file row "SVI603.ROMbios/Machines/...OK": the stylesheet lays them
out as boxes, the markup had no space between them. A setup without a
logo draws its initials from the stylesheet, so its name is read once.
2026-11-10 14:12:06 +01:00
Abdessamad Derraz c916503958 fix: hide filter boxes and picker until wired
A filter box read "Filter Options41 rows" in the page text and the
file picker an empty "Setup Choose a setup": both do nothing without
the script. They are written hidden, keep their room so nothing moves,
and site.ts or the picker's script shows them. The count describes the
input and is spaced from the label. One box markup for the build and
the generator, and the Markdown copy skips hidden chrome.
2026-11-10 14:12:00 +01:00
Abdessamad Derraz fda6845289 refactor: show diagrams as themed SVG images
An inline SVG put every label of both layouts, its title and its desc
into the page text, next to the prose that already says the steps: a
text dump of the Steam Deck tab read the steps three times, glued.
Each drawing is now one SVG file per layout and theme under
assets/diagrams, shown through <picture> with alt="". The figure says
its words once, in one screen-reader line and its caption.
2026-11-10 14:11:47 +01:00
Abdessamad Derraz 8c18f12643 feat: refuse a binary ref without a place in it
A source_ref part that names a compiled image now has to carry an
address, a decompiled function or an IL method. An import directory, a
string table or readelf output only says the binary exists. A name
under a directory is a file of the tree and a .dll.map is not a DLL.
The exception list is empty: every closed profile now cites code.
2026-11-10 14:10:00 +01:00
Abdessamad Derraz e00045ba0e fix: cite NetherSX2 asset loaders in classes.dex
The flag, star, FAQ and notice assets cited format strings only. They
now name the decompiled methods that build each asset path and open it
through the AssetManager or a WebView, in all three builds.
2026-11-10 14:09:54 +01:00
Abdessamad Derraz 91512742a2 fix: give FPse plugin libraries NEEDED entries
The readelf parts of the FPse 12.1 and FPseNG 1.13 plugin refs now
carry the DT_NEEDED entry address in each build's libfpse.so.
2026-11-10 14:09:54 +01:00
Abdessamad Derraz 825e617014 fix: cite BAM 1.5-408 and plugin load sites
Import and .rdata citations now name the loader, LoadLibrary, cascade
and SQLite call sites in BAM.dll and its plugins. TrackIR.dll keeps the
NPClient.dll Future Pinball loads, Kinect10.dll is imported by the two
Kinect plugins only, and the PostFX, iCom and OpenVR configs gain
entries.
2026-11-10 14:09:02 +01:00
Abdessamad Derraz 0f3f3ab1f5 fix: cite Future Pinball 1.9.1 call sites
Import directory lines and manual pages gave way to the IAT ranges and
the calls that use each library in Future Pinball.exe 1.9.1.20101231.
fpLatestTables.xml is written by the program, not by libcurl.
2026-11-10 14:09:02 +01:00
Abdessamad Derraz 4f5951e2fb chore: merge the MAME search paths 2026-11-10 14:06:37 +01:00
Abdessamad Derraz 409578e20e feat: read Batocera's MAME search paths
Batocera starts MAME with -rompath <romDirname>;/userdata/bios/mame;
/userdata/bios, /userdata/roms/mame and the softlist folder added for
MESS systems, and -samplepath, -artpath and -crosshairpath below
/userdata/bios/mame (generators/mame/mameGenerator.py:129-143, 189 at
batocera-43.1, MAME_BIOS in mamePaths.py). No extractor read that
generator. It now goes through the generic reader KNULLI uses for its fork
of the same file, keeping the command line search settings: the
Macintosh boot disk the command names is a file.

Rescraped at batocera-43.1: the six records are the only change.

Manifests: Batocera drops samples/bbc.zip at the BIOS root, read by
neither build. mame/samples/bbc.zip, which its list declares, serves both.
The sets stay at the BIOS root, which the rompath lists.
2026-11-10 14:05:10 +01:00
Abdessamad Derraz 83e901a5d4 feat: read RetroPie search lists below $romdir
RetroPie writes MAME's mame.ini with samplepath $romdir/mame/samples;
$romdir/arcade/samples and artpath the same way (scriptmodules/emulators/
mame.sh:135-136), and MAME4ALL's mame.cfg with rompath and samplepath
below $romdir (mame4all.sh:78-79). The extractor kept the lines naming
$biosdir only. An iniSet whose value lists folders below $romdir is now a
search path, one folder alone being where the program writes
(cfg_directory and the others). $romdir is read as RetroPie's roms root
(retropie_packages.sh:47-49).

Rescraped at the pinned revision 427e7621: the four records are the only
change.

Manifests: RetroPie's standalone MAME reads bbc.zip in roms/mame/samples,
no longer named as read outside the BIOS folder, and its 19 floppy
samples there.
2026-11-10 14:05:03 +01:00
Abdessamad Derraz bd8cf8ed2c fix: deliver MAME trees a search setting moves
A tree installed with MAME sits where its search setting points by
default. When a launcher passes the setting, MAME reads the folder it is
given and never the installed copy: RetroBat passes -hash bios/mame/hash
and -sp bios/mame/samples (Mame64.Generator.cs:30, 101, 106-107, 172,
177-178), KNULLI -samplepath /userdata/bios/mame/samples
(mameGenerator.py:129), RetroDECK samplepath $bios_path/mame-sa/samples
(mame/component_prepare.sh:94, 117). A bundled entry whose layout folder a
passed search setting (standalone_pools) binds is now delivered there.

A moved directory entry is found by its layout path and laid out below
the platform's folder, the folder proving nothing about content. A layout
tail two trees answer (MAME's hash/) falls back on the platform's tail. A
file the profile names itself only shadows a tree member of the same build
below the same root.

Manifests: RetroDECK gains the 19 floppy samples in bios/mame-sa/samples/
floppy. RetroBat's hash/ and samples/floppy and KNULLI's samples/floppy
reach the folders the libretro layout already fills, with the same files.
2026-11-10 14:04:54 +01:00
Abdessamad Derraz 6c41ff95ea fix: give AdvanceMAME's sets both dir_rom folders
EmuELEC starts AdvanceMAME for arcade, mame and cps1-3 (es_systems.json).
advmame.sh sets dir_rom to /storage/roms/arcade for arcade and keeps
/storage/roms/mame for every other system (advmame.sh:26-30, 80), so an
arcade set is read in both. A binding gave each entry one place: an entry
launched both for a system a record names and for one it does not now
takes the place of each, in the pack, the manifest and verify. A system
the platform's list or machines put the entry under stands for the
entry's own ids, so XRoar's coco3.rom stays in RetroBat's bios/coco alone.

The AdvanceMAME sets are filed under arcade as well as their board.

A second-pass copy outside the BIOS tree now carries its layout path and
resolves by it, as the first pass does: EmuELEC's roms/mame/stvbios.zip
took bios/Arcade/MAME's set by that tail, roms/arcade/stvbios.zip the
Arcade/Arcade one.

Manifests: EmuELEC gains the 29 sets in roms/arcade, each the file
roms/mame holds. roms/mame/stvbios.zip changes from bios/Arcade/MAME to
bios/Arcade/Arcade/stvbios.zip, the copy the entry resolves to. Nothing
else moves.
2026-11-10 14:04:44 +01:00
Abdessamad Derraz 1b711b96f5 fix: read libretro MAME sets in mame/bios
libretro/mame hands MAME the rompath <content folder>;<system>/mame/bios;
<system>/mame/roms (src/osd/libretro/libretro-internal/retro_init.cpp:580-597
at 5f5a0774, 573-579 at dc1a9653 for 0.258, 582-588 at fba50741 for 0.278,
CORE_NAME "mame" in libretro_shared.h). The system folder itself is never
searched, and every pack put the sets there. The mame, mame0258, mame0278,
mamearcade and mamemess profiles now lay their sets out in mame/bios, the
standalone build keeping the top of its rompath. The release profile writer
and the device and set merge write the same paths on new entries.

RetroBat offers MAME as the libretro core mame and as the standalone mame64
(es_systems.cfg), two names of one profile, and laid out only the
standalone build. A libretro name whose profile the platform also runs
standalone under another name now makes the profile dual mode.

Manifests: mame/bios gains 1453 sets on RetroArch, Lakka, RetroPie,
EmuDeck and RetroDECK, 1427 on Batocera, KNULLI, RetroBat, ROCKNIX,
AmberELEC and EmuELEC, 78 on Recalbox. Root copies only these cores
claimed leave: 1373 on RetroArch and Lakka, 1372 on RetroPie, 1349 on
ROCKNIX, 1347 on AmberELEC, 1365 on EmuELEC, 240 on RetroDECK, 26 on
EmuDeck, 9 on Recalbox. Batocera, KNULLI and RetroBat keep theirs for the
standalone rompath. RetroBat gains the libretro layout: mame/hash (725),
mame/samples/floppy (19) and mame/plugins (71). The root copies other cores
still claim now hold the copy those cores resolve (38 on RetroArch).
Recalbox drops three Arcade/Arcade copies (coh3002t, pumpitup, naomi2)
that only the root claim reached, mame/bios holding the copies with every
member the 0.258 and 0.278 sets list. No set is lost.
2026-11-10 14:03:41 +01:00
Abdessamad Derraz 87aa74e09e chore: merge the code refs of data files 2026-11-10 14:02:10 +01:00
Abdessamad Derraz e32cdf9154 fix: keep only the EDK2 images -bios can start
Each EDK2 code image was run through a .qemu_cmd_line with -bios in the buildbot qemu_libretro.so (linux x86_64, 2026-07-27, 06ad814b) under scripts/core_probe.py, every pc-bios file staged in system/qemu.

edk2-aarch64-code.fd and edk2-arm-code.fd reach the TianoCore boot screen on -M virt with ramfb. edk2-x86_64-code.fd makes QEMU exit at once, as bios-256k.bin on the same command line does not: the x86 images are 3653632 bytes, not a multiple of 64 KiB, and x86_bios_rom_init refuses them (hw/i386/x86-common.c:1000-1002), the i386 and secure images included. edk2-riscv-code.fd leaves a black screen: it is S-mode code for pflash0 (docs/system/riscv/virt.rst:59-70).

The x86 and RISC-V images are read only as pflash drives, opened by path from the content folder, so the five entries are removed.
2026-11-10 14:00:49 +01:00
Abdessamad Derraz 0569626ff4 fix: cite munt's ROM table source in DREAMM refs
The mt32emu part named the bundled library only. It now cites the munt
ROMInfo::getROMInfo table that library is built from.
2026-11-10 13:58:55 +01:00
Abdessamad Derraz caa2e1076b fix: give the Lexaloffle NEEDED entries addresses
Library dependency parts of the PICO-8 and Voxatron refs now carry the
DT_NEEDED entry or import descriptor address in each binary.
2026-11-10 13:58:09 +01:00