Three changes to the search-list model, one commit because the readers
and the profiles must move together for the schema to hold.
Set requirement in a groups map. pom2 falls back on apple2.rom for the
][ and the ][+, and on apple2e.rom for the //e it boots and for the
unenhanced //e: one required on the file could not say both. A profile
now declares groups: {name: {required}}, a member writes no required
of its own (schema and validate_schemas refuse one) and load_emulator_
profiles derives it, true when one of its sets is. group takes a name,
a list, or a map from set to rank where the rank differs per set. pom2
is grouped from SystemProfile.cpp and MainWindow.cpp:246-296 at its pin.
One member per required set under --required-only. The pick is the
first the code reads among the held members the region filter leaves,
by rank then declaration order; a set the platform declares a member
of is carried by that declaration. The emulator pack, verify
--emulator, the platform pack, its manifest and verify --platform read
alternatives.required_only_spares or core_file_spares.
variant_group is now selection_slot: files a core chooses between by
a rule other than first found (disc territory for PicoDrive and
Pizza Boy SC, the o2em_bios option, a WebAssembly probe in SWF
Player). Where the code takes any one, the field became a group:
ARMSX1 (ArmSxBackend.java:149-157, name order), ePSXe (load_bios
0x433540-0x433621 of the 2.0.5 Linux x64 binary, one configured path,
HLE when BiosHLE is set), FPse and FPse-NG, DXX-Rebirth's HOGs
(inferno.cpp:472-512). odin and zesarux carried it with no effect.
slot.py compares ranks only between candidates that share a set.
POM2 v1.1.0 ships no firmware dump in any package, so the 26 Apple II files dropped in ef8b37281 return byte for byte, with the DAN ][ slot EPROM from ThorstenBr/Apple2Card. The profile is re-read at de86e8e3: bundled false on the firmware, 8 entries for the new cards, refs re-anchored. (#86)
Each standalone profile records where its version is read: the source
at its pin (clk 2026-07-23-136-g9020107, shadps4 0.20.1 WIP, eden
v0.2.0-401-g26a03d2), the APK, binary or archive read (kind package),
or, where no reading can be made, kind unverified with the reason: a
host the tools cannot read, a forge gone or not answering, no build
recorded as read, a pin on another branch. Those keep their value,
unconfirmed.
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.
One run of profile_sync --all --rebase-refs --fresh. Every guard held:
no ref to review, no prose left under an older pin, no file name or hash
literal gained in a cited file since the pin, no built_by pin and no pin
keyed by build mode. The site's record of cited source paths is rebuilt
with them.
Same chain as the first pass: no ref to review, no file name or hash
literal added to a cited file since the pin, no profile a single
platform builds at a fixed commit, refs recaled with their pins, and the
written prose read again.
Adds the Memory Expansion Card ROM, the //c keyboard photo and the Monitor II and drive artwork, updates the //e keyboard photo, and follows the Virtual ][ list into VirtualIISoundCatalog.h with the Import sounds folder.
Every bundled flag was checked against the release or the build recipe of the build that reads the file. A libretro core zip holds the core alone: fMSX, Nuance, ep128emu and PCEE2 files the source tree carries are no longer bundled, and blueMSX, ARMSX2, YAPS2, Cemu and Jazz2 entries are split per build. Files the release ships and the profile missed are now bundled (POM2, ZQuest Classic, EmuCoreX, Linux Loader). Platform packages that differ are named: Batocera installs hcl and Hurrican without their data, ROCKNIX ships touchHLE's Liberation Sans fonts only, Batocera and RetroPie install blueMSX's machines beside the core.
POM2 reads nine Virtual ][ sounds from roms/virtual_ii_sons/. All nine are inside VirtualII.dmg from virtualii.com (13.3). The five AIFF files are taken as they are. The four .raw files are signed 16-bit little-endian mono at 44100 Hz, as Virtual ]['s own playback code declares them, and are wrapped in a WAV header, the data chunk being the raw file byte for byte. pom2 verifies 78/78.
Profiles, the wiki, comments, docstrings, command output and schema descriptions carried em-dashes, clause-joining semicolons, unicode arrows, box-drawing banners and check-mark glyphs. Each sentence was rewritten rather than having its character swapped. Hashes, paths, source_ref values and every cited file:line are unchanged, which a comparison of each parsed profile against the previous revision confirms.
validate_pr comments now say PASS and FAIL in words, and source_ref values in a profile's structured blocks render as code. test_prose_style fails if any of these comes back, in tracked files or in the generated site.