EmuELEC, AmberELEC and KNULLI launch standalone emulators by the name
their launch code dispatches on (HATARISA, PPSSPPSDL, FBNEOSA) and ship
32-bit or patched builds of libretro cores under their own .so names
(flycast_32b, mupen64plus_next_alt, genesis_plus_gx_cart_special,
mame0139, flycast-xtreme). Each name joins the profile of the project
its package builds. fceumm_mod reads gg.rom, not gamegenie.nes, and
never opens it, so it gets its own profile.
Both branches extracted RetroBat's Flycast BiosPath: value_folders
already produces the record, so the dedicated extractor is dropped and
its test reads the generic one.
DraStic opens nds_bios_arm9.bin, nds_bios_arm7.bin and nds_firmware.bin and checks their size. Its nine aliases are in none of its binaries, and neither platform launcher passes them: ROCKNIX links the two BIOS names from its bios folder, and RetroPie runs DraStic from $md_conf_root/nds/drastic (drastic.sh:48), now a passes_path record. The collection answers DraStic's names with its DS dumps in generate_db, where repository names belong.
standalone_path is relative to the directories a standalone build
resolves it against, now declared per profile (standalone_directories).
A launcher record that links or passes a whole folder of the BIOS tree
under one of them gives that folder, and platform_layouts rebases the
standalone view once for the builder, the manifest, verify and slots
(launchers.standalone_root, common.standalone_destination).
Flycast on RetroPie and ROCKNIX reads bios/dc, on EmuDeck
bios/flycast/bios, on Batocera (FLYCAST_BIOS_PATH) and RetroBat
(Dreamcast.BiosPath) bios/dc. The ROCKNIX, Batocera and RetroBat
scrapers now record the patched data directory, the environment
variable and the setting that say so.
RetroBat's launcher layer now records the Saturn names its generators
pick. The ymir aliases are the libretro port's own kBiosFilenames, and
the SSF aliases label dumps of a slot whose file name SSF leaves free.
Both entries now say so next to their source_ref.
The -listxml names the software lists each machine and slot card
declares and the floppy drives it can instantiate. --devices now writes
one entry per hash/<list>.xml the release ships under the systems of its
placed machines (111 lists, 666 stay with hash/), and files each floppy
sample under the systems whose drives select its form factor
(floppy.cpp:1428-1473, 1759-1767).
Machines a registered platform declares under one of the profile's
systems seed the walk too: bbcb, cdimono1, cdimono2, dragon32, ep64 and
ep128. Unplaced device sets go from 903 to 861.
6eabf224..6664c602 rewrites the .rom1 extension swap and shares one path buffer between the .nvm and .mec reads (BiosTools.cpp:189-230, CDVD.cpp:194-243). The names read and the fallbacks are unchanged. profile_sync: 0 to review.
The libretro port reads sega_101.bin, mpr-17933.bin and saturn_bios.bin in that order, gives the first two the JP and US_EU regions by hash, and loads the candidate the ymir_region option or the disc area code asks for (apps/ymir-libretro/src/libretro.cpp:305-309, 596-606, 627-702, 1231-1238, 1290-1306 at 8174cbbe). Area K maps to KR, which neither image carries.
The standalone build reads BIOS files from its data directory root, not from dc/ (core/oslib/oslib.cpp:118-196, core/stdclass.cpp:95-125, core/linux-dist/main.cpp:74-99). Each entry now carries standalone_path.
# Conflicts:
# wiki/testing-guide.md
The semantic check read systems: only. mame2010 filed seven BIOS root
sets under systems its list lacked: cpzn1, cpzn2 (zn.c:4543, 4563),
konamigv (konamigv.c:877), skns (suprnova.c:1686), alg_bios (alg.c:782),
maxaflex (maxaflex.c:541) and hng64 (hng64.c:2189) are GAME_IS_BIOS_ROOT
in mame2010-libretro at source_commit.
The flycast standalone paths (eb04fb50) stay out until the packs read the
platforms' launcher links. Two rosalies-mupen-gui aliases that only
RetroBat's launcher writes leave the profile, now that its layer
records them.
profile_sync --all reported 18 repositories the forge answers under another owner or name. Each pin resolves in the renamed repository, so the URLs change and the pins stay. flycast2021 builds from metallic77/flycast 603814c9 (ROCKNIX package.mk), whose upstream libretro/flycast now answers as libretro/parallel-dc with 4c293f30 still in its master history.
StrikerX3/Ymir answers as ymir-emu/Ymir, and the buildbot builds the libretro branch of warmenhoven/Emir, PR #746 having closed unmerged. The libretro build now reads all three BIOS names and picks one by region (apps/ymir-libretro/src/libretro.cpp:584-712, 1285-1306).
fgsfdsfgs/perfect_dark answers as perfect-dark-pc-port/perfect_dark. At 32a1cb9f the home path test reads the size lookup correctly, so data beside the executable is the last fallback (port/src/fs.c:96-121).
DraStic opens only nds_bios_arm9.bin, nds_bios_arm7.bin and nds_firmware.bin, and the collection holds those dumps under other names. Without the aliases the ROCKNIX and RetroPie packs lose all three files the emulator reads, and no launcher record fills those places.
Find_SoundFont (src/gui/midi_synth.h:82-134) now searches the working, resource and program directories before the system ones and adds GeneralUser-GS.sf2. Pin moved to 029bd65c with the shifted refs.
The standalone build reads BIOS files from its data directory root, not from dc/ (core/oslib/oslib.cpp:118-196, core/stdclass.cpp:95-125, core/linux-dist/main.cpp:74-99). Each entry now carries standalone_path.
Aliases equal to a name a platform launcher chooses were read in each emulator's code at its pin. Removed where the code opens no such name: xemu Complex_4627v1.03.bin (the core offers Complex_4627_v1.03.bin), mednafen gecard.pce, dosbox bios.rom, raze Roland_SC-55.sf2, nine DraStic names, and clk's upper-case MSX names, whose paths now read msx.rom, msx2.rom and msx2ext.rom as ROMCatalogue.cpp:777-841 names them. Kept aliases now name the code list they come from in the entry note.
SGB1.sfc, SGB2.sfc, STBIOS.bin and BS-X.bin cited EmuDeck's launcher. ares names none of them: the file opened as the Super Famicom game is the base cartridge, identified by the SHA-256 in mia's database or by its header (desktop-ui/emulator/super-famicom.cpp:158-217, mia/medium/super-famicom.cpp:42-62, 88-95, 570-602).
mame.yml filed BBC Micro, Elektronika BK, Enterprise and Vectrex sets under systems its systems: list lacked, so a --system pick of those never reached the profile. The three Astrocade sets were filed under astrocde while mame.yml and groovymame.yml list bally-astrocade, the id a pick of Batocera's astrocade matches. Full packs keep the same files.
naomi.cpp:10918-10921 declares hod2bios, f355dlx, f355bios and airlbios on the naomi machine config as NAOMI BIOS roots, viper.cpp:3213 declares kviper as the Viper BIOS. Every other MAME profile listing them already files them under sega-naomi and konami-viper.
emulatorLauncher writes a BIOS path into an emulator's configuration
only when the file exists: string x = Path.Combine(bios, "name");
if (File.Exists(x)) ini.WriteValue(section, key, x). The extractor now
records each such write as a fixed_name launcher record, with the
enclosing if and early-return conditions, and a key that receives the
bios folder itself as passes_path. A path reassigned before the check,
or a write under a loop or an else, is not read.
Generators read at 48cdc616: KegaFusion (SCD and 32X keys, GenesisBIOS
given the folder), Jgenesis, MelonDS (DS), Mupen64, Project64, mGBA.
The RetroBat paragraph of the Kega Fusion profile now lives in the
launcher layer.
Seven CommonPaths.h refs were written in March against a 2025 layout (bfef65a9..8cbfee21, IPL.bin at 138), and SYSCONF was later set to 118 from the current file, so no revision held all eight. They now cite d8558142, the merge base of shiiion/dolphin@53f53e0f with dolphin-emu master, where each define sits on the cited line, and upstream_commit names it.
EightyOne/Source/ROMs/... answers 404 at charlierobson/EightyOne@4de3cdb8. Source/ROMs/{FDCs/interface1.edition1,spectrum48.arabic,tk90,tk95}.rom hash to the md5 each entry declares. The notes refs drop the clone-directory prefix too and name their repository.
These refs were labelled upstream but land in the port at source_commit: flycast sb_mem.cpp:55-59,196-231, reios.cpp:737 and naomi_roms.h:87-94 in libretro/flycast@bde196bf (filestream_open, get_rom_names), lrps2 BiosTools.cpp:189-229,339-340 and CDVD.cpp:196-245 in libretro/ps2@6eabf224 (RETRO_VFS reads absent from PCSX2), mesence bios.col at FirmwareTypeExtensions.cs:70 in MesenCE@20f497c9 (line 62 in Mesen2).
source_commit 953db38f is the tip of branch groovymame0289, its makefile:1513 writes BARE_BUILD_VERSION "0.289", and the compare with mamedev tag mame0289 is 83 ahead, 0 behind, with no file under src/mame or src/devices. The notes described the earlier pin e3fa1305 (branch groovymame0288).
dosbox_pure takes the upstream tag its core_version names (1.0-preview7), triforce the Dolphin release its tree reports (2407). The others take the upstream commit at profiled_date, the revision profile_sync already compared them against: the standalone build for standalone + libretro profiles, and for cannonball and jl-mod the cited lines land there and not at the fork's merge base. Every upstream-role ref lands on its declared value at the pin.
np2pi reads 0x4000 bytes of scsi.rom as the SCSI BIOS (cbus/scsiio.c:
208-233). The only 16 KB copy of that name is Clock Signal's Apple II
card ROM, which the name step served and the RetroPie manifest installed.
The entry now carries unsourceable: and np2pi falls back on its stub.
NanoBoyAdvance opens general.bios_path, default bios.bin (src/platform/core/src/config.cpp:36 at 3bb6f478). gba_bios.bin is the path ROCKNIX's config.toml sets, recorded under launchers: in rocknix.yml.
Without the alias the entry met only PCem's and QEMU's bios.bin, 64 and 128 KB, which BIOSLoader refuses (bios.cpp:17-48). verify counted it held by name, so the launcher layer left it alone and the ROCKNIX pack gained PCem's image. A hashless entry whose every same-named copy fails its size is now not held, and the gba_bios.bin ROCKNIX declares settles it.
_holding_members kept every same-named copy when the best held nothing,
so galgames.zip, a lone assembler listing, resolved by name for mame,
groovymame and mame4droid-2024, and awbios.zip for mame4droid. Such a
copy now resolves as hash_mismatch.
mame2003_plus declared its contents by name only, while fileio.c:1031-1040
loads a member by CRC when the name is absent. The 61 members now carry
the CRC their driver declares, so stvbios, megatech and the six ZN sets
keep matching the archives the collection holds.
Dolphin and its forks map the Brazilian disc country code B, and the
SYSCONF countries of the Americas, to NTSC-U (DiscIO/Enums.cpp), whose
boot ROM is read from GC/USA. Tagged north-america alone, the IPL a
Brazilian disc boots left a --region brazil,europe pack. GC/USA/IPL.bin
in six profiles and triforce's IPL_TRI.bin now carry latin-america.
upstream_commit is the merge base the compare API gives between each port at its source_commit and the upstream default branch. holani and melonds_ds take the revision their build fetches (tag 0.9.9, and the melonDS branch whose merge base is 906e9ebb). The upstream-role refs land on their declared values there, except mesence bios.col, whose line 70 is in MesenCE's own FirmwareTypeExtensions.cs.
sms_cart_region_detect returns REGION_USA for any cartridge outside its
CRC list whose header is not Japanese, so Genesis Plus GX and its two
forks open bios_U.sms for Australian and Brazilian cartridges as well.
Tagged north-america and europe only, --region australia,japan dropped
it from the pack. The tag now adds latin-america and oceania.
Basilisk II opens rom_path or ROM_FILE_NAME "ROM" (BasiliskII/src/Unix/main_unix.cpp:109, 685) and never mac.rom. RetroPie's basilisk.sh:56 passes $romdir/macintosh/mac.rom with --rom, recorded under launchers: in retropie.yml.
load_dd_rom builds only <system>/Mupen64plus/IPL.n64 (mupen64plus-core/src/main/main.c:958-961 at 12edd2c7). 64DD_IPL.bin is Batocera's standalone mupen64plus name (mupenConfig.py:188-192), held in batocera.yml files and launchers. standalone_path described a build this libretro profile does not have.
Fusion.exe fixes only us_scd1_9210.bin, jp_mcd1_9111.bin and eu_mcd1_9210.bin (0x44b662-0x44b74d). bios_CD_U/J/E.bin are the names RetroBat's generator writes into Fusion.ini (KegaFusion.Generator.cs:105-116), and platforms/retrobat.yml declares all three.
The loader at speccy 0x3d970 gzopens only the name it is given and clears the model bit when that fails. ZXS16.ROM is passed with mask 1 (0x3dcb2), ZXS48.ROM separately with mask 2 (0x3dcc8), and the binary holds no 48.rom string (Speccy59-Ubuntu-x86-bin). The aliases let a root 48.rom settle the 16K ROM, which the gap report now lists.
The buildbot builds the stella core from stella-emu/stella master
(src/os/libretro), not from stella2014 code, and stella2023 claimed the
stella name. stella.yml now documents that tree at 2c3d7023: the KidVid
tapes are read from a stella folder under the save directory, loose or
in KidVidAudio.zip, and played. stella2023 keeps its own name only.
mame2000 opens hiscore.dat, history.dat and mameinfo.dat from IMAMEBASEPATH, the content directory (src/libretro/fileio.c:1002-1014, libretro.c:1044-1052). mame2014 and mame2015 open hiscore.dat through emu_file with no search path, the working directory (src/emu/hiscore.c:330-337, fileio.c:141-143). With no load_from the entries claimed system/ and the packs shipped files neither core opens there. ANoteOutsideTheSystemDirCarriesLoadFrom holds libretro notes and load_from together.