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.
--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.
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.
QEMU's 79 files go to QEMU/QEMU and Roland's four loose ROMs to MT-32
and CM-32L. The mt32-roms, soundcanvas-roms and sounddata trees stay as
the code addresses them. Chihiro joins Sega and the Oric joins
Tangerine, the names the site and libretro already use. No destination
held other bytes.
The three QEMU EDK2 images are release assets, and their .gitignore
lines follow them. Database and manifests are regenerated together.
verify --all and cross_reference give the same output once moved paths
are mapped.
trident cites the Panda3DS fork 3dsTrident vendors as a submodule, now
its upstream at the submodule pin 69095ee6. pce-emu, uqm and stonesoup
wrote paths from a subdirectory (PCE.emu/, sc2/, crawl-ref/), nesoid
named two Java files without their directory; lines unchanged, each read
at the pin.
The pages no longer take a binary citation (DesktopKinect.dll, an
address continuing a BAM.dll range) for a source path, and a Forgejo
tree is read page by page: mirrors/Ryujinx holds 4704 entries, 1000 a
page.
The name step tried the destination's basename alongside the entry's
own names. With dsi_nand.bin absent from a checkout, nand.bin from
dsi/nand.bin let the Wii NAND outrank the entry's own DSi variant, and
the site named melonDS Nightly a reader of it. The basename is now tried
only when no own name answers.
FileConsumers also resolved profile entries without the archive members
the emulator pack passes, so gngeopi and neo-emu were credited with the
MAME neogeo.zip instead of the archive their pack carries.
A profile entry without a hash matched the collection by name, but
only primary names were looked up, and which copy of identical bytes is
primary follows path order. After the refile, project64's
64DD_IPL_v12_JPN.bin was a copy, so 64dd_ipl_J.bin and 64dd_ipl_U.bin left
the name index. The lookup now counts every copy's name, and a name held
by two contents still names neither.
The start line keeps entries read for the section's own system, groups a section holding several, names files the way most setups do, links an Arcade-filed set the system requires and says when no file is needed. Cards of MAME and FBNeo sets name the releases whose recipe matches their members. Console headings lose their icon, Arcade gets its own group on the index, and install boxes count toward the weight that splits a heavy manufacturer page.
One card per systems page, titled with the manufacturer and listing its consoles as far as three lines hold. Rendered once and committed like the platform cards.
The new answers are shortened and the safety list, shown in full on the home page, is linked from each setup page instead of repeated. The setup ceiling stays at 220.
Romset row and line on MAME and FinalBurn pages, files an app ships
under their own badge and section, collection counts under the table,
empty or constant summary columns dropped, short hashes with the full
value in the title, the profile card and cards past Required folded,
data directory pages kept out of the search.
Setup pages name the setup version the ZIP was made from, offer a partial install, answer a file in place but reported missing, and link the offline install. Get your files folds its tables into one closed block with part buttons. The setup comparison moves to the verification modes page. New Linux handhelds guide page.
One row per system the installer detects RetroArch on, with the card folder and the devices each system's own pages list, every value carrying its source. Android and Linux handhelds become tiles of the handheld group.
Shown at 40 px, the 96 px PNG logos were 136 KiB of the home page. WebP at twice the display size is 27 KiB for the twelve raster marks. SVG stays as each project publishes it.
The CSV and SQLite carry zipped_file and the Recalbox flags, contracts
leave registry keys in a registry field and validate, every envelope
carries commit, lookup URLs are site-absolute, systems.json and
cores.json answer an id, the Data page shows the manifest fields and a
folder check, and platform overviews link emulators by name.
A setup's list for one console is a reference page kept out of the
search index, naming its setup as parent. System pages carry file names
and the platforms' own ids as attribute search fields, never as text.
Arcade gets its own sidebar group.
DS and DSi split into Nintendo DS and Nintendo DSi. 64DD, Mega-CD,
ZXSpectrum, VSmile, BBC and Game Engines/DOOM merge into the folder
of the same console. Same-named dumps with other bytes are kept:
BBC Micro's earlier zips in .variants/, the vsmilem set in vsmilem/,
the Doom II 1.666 IWAD in v1.666/, BizHawk's DSi firmware in bizhawk/.
Galaksija and Vircon get a console folder, sdlpal's desc.dat joins
its tree, VICE's PET and CBM-II ROMs leave C128 with their vice/ tail.
Database and manifests regenerated together. Verify and cross
reference give the same result once moved paths are mapped.
A reviewed SYSTEM_PARENTS table leads variants (WonderSwan Color, Neo Geo MVS, MSX2) to the section holding their files, an Arcade heading that reads the name exactly is accepted, and system_search_aliases() gives the platforms' native ids for search. 260 of 636 ids linked before, 338 after.
The script exporters (Batocera, ROCKNIX, KNULLI, AmberELEC, EmuELEC)
read the checker of the pinned original: when checkBios hands an
item's md5 to a function that tests it with isinstance(..., list),
as md5Matches does since batocera.linux 6b08b873, an entry whose
emulator code accepts several dumps is written with all of them, and
an addition that needed several becomes writable. Items with altmd5
keep a string, since checkBios wraps them in a list of its own.
No cached original reads lists today, so every export is unchanged.
The report records a list as a list, counts the lists written, and
records a list the truth extends without contradicting it.
batocera.linux 6b08b873 lets a biosFiles item declare its md5 as a
list of strings, and checkBios accepts a file matching any of them.
The scrapers join the values with commas, as for Recalbox, and record
md5_list so the export writes the list back as a list, byte for byte.
A row of the emulators index and of the cross-reference tables named
one core's class in the plural (Official ports). The upstream table's
headers no longer break inside a word.
Dolphin's Sys tree put 2,164 rows and 16,900 elements on the Dolphin,
PrimeHack and Ishiiruka pages. A tree past 400 files is now listed on
pages of its own, 1,000 files each, and the file lookup sends each
member's sha1 there.
The wanted lists of the provenance page and the files to source of the
gaps page move to pages of their own, cut in parts past 300 KB of
Markdown. System pages split from 300 KB and emulator cards from 220 per
page. A moved card keeps its anchor through the files/?sha1= lookup.
verify_entry_existence returned no path, so RetroArch, Lakka and
RetroPie pages showed no Served by line. It now returns the resolved
path as the hash modes do. verify.py --all prints the same bytes and
its JSON is unchanged.
Every page closed on a raw ISO stamp. It now reads data_as_of(), which
write_if_changed ignores as it ignored the old stamp. The diagram text
counts setups with setup_count(), and the data model page names the
Data and API page by its title.
A system link followed the folder its files sit in: emerson-arcadia-2001
reached the Saturn and sega-naomi the Dreamcast. It now goes to the
section system_name() reads, or stays a plain name. Console headings
carry an explicit id, so Sega's Mega-CD no longer shares mega-cd.
The decoration pass now forwards the logo front matter, pointed at the
local copy. The emulators index lists every profile under the initial
the sidebar draws, so each letter link lands on its section.