chore: merge profile batch two

This commit is contained in:
Abdessamad Derraz committed 2026-11-09 08:11:51 +01:00
commit 1aa78fd0dc
14 files changed
+994 -637

No files matched your search

+92 -76
View File
@@ -3,14 +3,14 @@ type: standalone
core_classification: enhanced_fork
source: "https://github.com/amadvance/advancemame"
upstream: "https://www.mamedev.org"
profiled_date: "2026-10-26"
source_commit: "81670476672b59f430518a63e9a116db58ed6232"
core_version: "v5.0-185-g8167047"
profiled_date: "2026-11-09"
source_commit: "e29103266ebf2debde456c4a21193baf4a0192c8"
core_version: "v5.0-453-ge291032"
version_basis:
kind: tag
match: "v*"
tag: "v5.0"
distance: 185
distance: 453
mame_version: "0.106"
display_name: "Arcade (AdvanceMAME)"
mode: standalone
@@ -42,7 +42,6 @@ systems:
- atari-zn1
- acclaim-zn1
- videosystem-zn1
- hyper-neogeo64
- nintendo-aleck64
- arcadia-systems
- exidy-maxaflex
@@ -50,14 +49,17 @@ systems:
- imax-macs
- arcade
- barcrest-mpu4
- atari-system1
- efo-cedar-magnet
notes: |
MAME 0.106 core (src/version.c:12) carrying its own video layer and driver
backports from later MAME releases. Twenty-eight BIOS root sets, each a
NOT_A_DRIVER entry (src/driver.h:180) registered in src/mamedriv.c, release
MAME 0.106 core (src/version.c:11) carrying its own video layer and driver
backports from later MAME releases. Twenty-nine BIOS root sets, each a
NOT_A_DRIVER entry (src/driver.h:179) registered in src/mamedriv.c, release
5.0 having all but coh1002v, which came with the Video System PSX driver,
and aleck64, which came with the Aleck64 games.
src/drivers/macs.c:613 declares a twenty-ninth, macs2bios, that
aleck64, which came with the Aleck64 games, atarisy1, which came with the
Atari System 1 driver, and cedmag, which came with the Cedar Magnet System
driver. src/drivers/macs.c:615 declares a thirtieth, macs2bios, that
src/mamedriv.c never registers, so no build reaches it and the five MACS
games all parent to macsbios.
@@ -66,39 +68,41 @@ notes: |
DIR/GAME/ROM.EXT, DIR/GAME.zip/ROM.EXT and DIR/GAME/ROM.zip/ROM
(advance/osd/fileio.c:74, doc/advmame.d:680,699-701). $home is $ADVANCE, or
$HOME/.advance when that variable is unset (doc/advmame.d:503-509). Each ROM
is looked up along the parent chain (src/romload.c:481-483), so a child game
is looked up along the parent chain (src/romload.c:527-529), so a child game
reads its BIOS from the root set's own archive, which has to sit beside the
game archive. Inside an archive a member is matched by name, then by its
printable CRC32 (src/fileio.c:1213-1223).
printable CRC32 (src/fileio.c:1191-1201).
No BIOS ROM carries ROM_OPTIONAL or a no-good-dump marker, so a missing one
counts as an error rather than a warning and aborts with "required files are
missing, the game cannot be run" (src/romload.c:248-268,385-388). Loaded
missing, the game cannot be run" (src/romload.c:294-314,431-434). Loaded
ROMs are checked for exact length and against the declared CRC32 and SHA1,
both mismatches being warnings (src/romload.c:327-363).
both mismatches being warnings (src/romload.c:373-409).
Where a system offers several BIOS revisions, SYSTEM_BIOS_ADD names them and
misc_bios selects one, entry 0 being the default (doc/advmame.d:2086-2094).
misc_bios selects one, entry 0 being the default (doc/advmame.d:2142-2150).
Only the selected revision is read, and the others share the archive as
alternatives. Neo Geo lists MVS revisions alone, the AES, Universe and debug
entries being commented out (src/drivers/neogeo.c:1420-1423,1439-1442).
entries being commented out (src/drivers/neogeo.c:1422-1425,1441-1444).
The support files sit directly in $home or $data
(advance/osd/fileio.c:81,88-90, advance/linux/file.c:249-256). A language
file is read too, under whatever name misc_languagefile carries
(advance/osd/glue.c:855-856). The project ships none, English being built
into the binary (src/ui_text.c:263-265). Samples and
artwork are per-game archives under dir_sample and dir_artwork, ZIP only,
named after the driver: WAV members for samples
(src/sound/samples.c:226-228), a <driver>.art layout and its PNGs for
artwork (src/artwork.c:2119,2224).
(advance/osd/glue.c:865-866). The project ships none, English being built
into the binary (src/ui_text.c:262-264). Samples and
artwork are per-game, under dir_sample and dir_artwork. Samples are ZIP
archives named after the driver with WAV members
(src/sound/samples.c:228-230). Artwork is a folder or ZIP archive named
after the driver or one of its parents, holding default.lay and the PNG or
JPEG images it names (src/artwork_package.c:43-81,
src/artwork_lay.c:1615-1625).
misc_historyfile and misc_infofile were retired and are discarded when found
in a configuration file (advance/osd/emu.c:517-518), leaving history.dat and
in a configuration file (advance/osd/emu.c:515-516), leaving history.dat and
mameinfo.dat unread. options.controller is pinned to zero
(advance/osd/glue.c:848), so no controller file is read either. blitmax.dat,
(advance/osd/glue.c:858), so no controller file is read either. blitmax.dat,
startup.dat and help.dat are compiled into the binary
(advance/osd/video.c:1787,1795, advance/osd/ui.c:1575).
(advance/osd/video.c:1794,1802, advance/osd/ui.c:1575).
files:
# Support files ($home or $data)
@@ -110,10 +114,10 @@ files:
sha1: "23e0dec66680aa4545eafe436c23d2bf5622e32e"
md5: "2490bad5079ec0991c23c579092cca19"
size: 176851
source_ref: "src/hiscore.c:28,133-147,313, src/mame.c:1105-1106"
source_ref: "src/hiscore.c:27,132-146,312, src/mame.c:1104-1105"
note: >-
High score definitions, selected by misc_hiscorefile
(advance/osd/glue.c:940,3473). Absent, hiscore_open matches no entry and
(advance/osd/glue.c:950,3484). Absent, hiscore_open matches no entry and
no high score is restored or saved. support/hiscore.dat, installed by
MAME_INSTALL_DATAFILES (advance/advance.mak:30-32). is_mem_range reads
only "cpu:addr:len:start:end" lines under a "gamename:" header.
@@ -126,12 +130,12 @@ files:
sha1: "4978ecafc4634cf20b639d8801c044dc156ab162"
md5: "69c6bbe7194e4bc62d53764dd6c6d890"
size: 13923773
source_ref: "src/cheat.c:8682,8751"
source_ref: "src/cheat.c:8681,8750"
note: >-
Cheat definitions, selected by misc_cheatfile
(advance/osd/glue.c:939,3471) and read only when misc_cheat is on, which
(advance/osd/glue.c:949,3482) and read only when misc_cheat is on, which
it is not by default. Absent, the cheat menu reads "cheat database not
found" (src/cheat.c:2536). Installed beside hiscore.dat by
found" (src/cheat.c:2535). Installed beside hiscore.dat by
MAME_INSTALL_DATAFILES, and shipped in the 5.0 Windows zip and .deb.
- name: event.dat
@@ -155,7 +159,7 @@ files:
required: true
category: bios_zip
system: snk-neogeo-mvs
source_ref: "src/drivers/neogeo.c:7939-7953,8553"
source_ref: "src/drivers/neogeo.c:7941-7955,8555"
note: >-
Eight MVS BIOS variants selected with misc_bios (euro, euro-s1, us,
us-e, asia, japan, japan-s2, japan-s1), euro by default. sm1.sm1,
@@ -222,7 +226,7 @@ files:
required: true
category: bios_zip
system: igs-pgm
source_ref: "src/drivers/pgm.c:4413-4424, src/drivers/pgm.c:6902"
source_ref: "src/drivers/pgm.c:4415-4426, src/drivers/pgm.c:6904"
contents:
- name: pgm_p01s.rom
description: 68000 BIOS
@@ -245,7 +249,7 @@ files:
required: true
category: bios_zip
system: sega-stv
source_ref: "src/drivers/stv.c:3196-3198,4184"
source_ref: "src/drivers/stv.c:3251-3253,4281"
note: >-
Nine BIOS variants selected with misc_bios (japan, japana, us, japanb,
taiwan, europe, unknown, dev1061, japanc), japan by default.
@@ -301,7 +305,7 @@ files:
required: true
category: bios_zip
system: sega-megaplay
source_ref: "src/drivers/megaplay.c:735-738,933"
source_ref: "src/drivers/megaplay.c:793-796,991"
note: >-
Two BIOS variants selected with misc_bios (ver1, ver2), ver1 by
default.
@@ -322,7 +326,7 @@ files:
required: true
category: bios_zip
system: sega-megatech
source_ref: "src/drivers/megatech.c:454-457,866"
source_ref: "src/drivers/megatech.c:456-459,868"
contents:
- name: epr12664.20
size: 32768
@@ -334,7 +338,7 @@ files:
required: true
category: bios_zip
system: deco-cassette
source_ref: "src/drivers/decocass.c:727-730,1213"
source_ref: "src/drivers/decocass.c:729-732,1215"
note: >-
Two main CPU BIOS variants selected with misc_bios (bios0, bios1),
bios0 by default. The audio CPU, MCU and PROMs are loaded whichever
@@ -386,7 +390,7 @@ files:
required: true
category: bios_zip
system: nintendo-playch10
source_ref: "src/drivers/playch10.c:1648-1651,1659"
source_ref: "src/drivers/playch10.c:1650-1653,1661"
note: >-
Two BIOS variants selected with misc_bios (dual, single), dual by
default. Tiles and PROMs are loaded whichever variant is selected.
@@ -437,7 +441,7 @@ files:
required: true
category: bios_zip
system: nintendo-nss
source_ref: "src/drivers/nss.c:524-526,657"
source_ref: "src/drivers/nss.c:526-528,659"
contents:
- name: spc700.rom
description: SPC700 IPL ROM
@@ -465,7 +469,7 @@ files:
required: true
category: bios_zip
system: super-kaneko-nova
source_ref: "src/drivers/suprnova.c:1269-1276,1744"
source_ref: "src/drivers/suprnova.c:1272-1279,1767"
note: >-
Five region BIOS ROMs, all loaded into the same region.
contents:
@@ -500,7 +504,7 @@ files:
required: true
category: bios_zip
system: konami-gx
source_ref: "src/drivers/konamigx.c:2138-2141,3485"
source_ref: "src/drivers/konamigx.c:2180-2183,3521"
contents:
- name: 300a01.34k
size: 131072
@@ -512,7 +516,7 @@ files:
required: true
category: bios_zip
system: konami-gv
source_ref: "src/drivers/konamigv.c:972-976,1058"
source_ref: "src/drivers/konamigv.c:974-978,1060"
contents:
- name: 999a01.7e
size: 524288
@@ -524,7 +528,7 @@ files:
required: true
category: bios_zip
system: century-cvs
source_ref: "src/drivers/cvs.c:420-430,1401"
source_ref: "src/drivers/cvs.c:422-432,1403"
contents:
- name: 5b.bin
description: sound CPU
@@ -547,7 +551,7 @@ files:
required: true
category: bios_zip
system: capcom-zn1
source_ref: "src/drivers/zn.c:3179-3181, src/drivers/zn.c:4607"
source_ref: "src/drivers/zn.c:3188-3190, src/drivers/zn.c:4635"
contents:
- name: coh-1000c.353
size: 524288
@@ -559,7 +563,7 @@ files:
required: true
category: bios_zip
system: capcom-zn2
source_ref: "src/drivers/zn.c:3414-3416, src/drivers/zn.c:4625"
source_ref: "src/drivers/zn.c:3423-3425, src/drivers/zn.c:4653"
contents:
- name: coh-3002c.353
size: 524288
@@ -571,7 +575,7 @@ files:
required: true
category: bios_zip
system: tecmo-tps
source_ref: "src/drivers/zn.c:3857-3859, src/drivers/zn.c:4672"
source_ref: "src/drivers/zn.c:3866-3868, src/drivers/zn.c:4700"
contents:
- name: coh-1002m.353
size: 524288
@@ -583,7 +587,7 @@ files:
required: true
category: bios_zip
system: taito-fx1
source_ref: "src/drivers/zn.c:4134-4136, src/drivers/zn.c:4703"
source_ref: "src/drivers/zn.c:4162-4164, src/drivers/zn.c:4733"
contents:
- name: coh-1000t.353
size: 524288
@@ -595,7 +599,7 @@ files:
required: true
category: bios_zip
system: eighting-zn1
source_ref: "src/drivers/zn.c:4406-4408, src/drivers/zn.c:4730"
source_ref: "src/drivers/zn.c:4434-4436, src/drivers/zn.c:4760"
contents:
- name: coh-1002e.353
size: 524288
@@ -607,7 +611,7 @@ files:
required: true
category: bios_zip
system: atlus-zn1
source_ref: "src/drivers/zn.c:4577-4579, src/drivers/zn.c:4742"
source_ref: "src/drivers/zn.c:4605-4607, src/drivers/zn.c:4772"
contents:
- name: coh-1001l.353
size: 524288
@@ -619,7 +623,7 @@ files:
required: true
category: bios_zip
system: atari-zn1
source_ref: "src/drivers/zn.c:4492-4494, src/drivers/zn.c:4652"
source_ref: "src/drivers/zn.c:4520-4522, src/drivers/zn.c:4680"
contents:
- name: coh-1000w.353
size: 524288
@@ -631,7 +635,7 @@ files:
required: true
category: bios_zip
system: acclaim-zn1
source_ref: "src/drivers/zn.c:4515-4517, src/drivers/zn.c:4661"
source_ref: "src/drivers/zn.c:4543-4545, src/drivers/zn.c:4689"
contents:
- name: coh-1000a.353
size: 524288
@@ -643,7 +647,7 @@ files:
required: true
category: bios_zip
system: videosystem-zn1
source_ref: "src/drivers/zn.c:4062-4068, src/drivers/zn.c:4692"
source_ref: "src/drivers/zn.c:4090-4096, src/drivers/zn.c:4722"
contents:
- name: coh-1002v.ic353
size: 524288
@@ -655,42 +659,54 @@ files:
required: true
category: bios_zip
system: nintendo-aleck64
source_ref: "src/drivers/aleck64.c:695-697,776"
source_ref: "src/drivers/aleck64.c:697-699,778"
contents:
- name: pifdata.bin
size: 2048
crc32: "5ec82be9"
sha1: "9174eadc0f0ea2654c95fd941406ab46b9dc9bdd"
# SNK Hyper Neo Geo 64
- name: hng64.zip
# Atari System 1
- name: atarisy1.zip
required: true
category: bios_zip
system: hyper-neogeo64
source_ref: "src/drivers/hng64.c:1425-1431,1718"
system: atari-system1
source_ref: "src/drivers/atarisy1.c:837-850, src/drivers/atarisy1.c:2299"
contents:
- name: brom1.bin
description: R4300 BIOS
size: 524288
crc32: "a30dd3de"
sha1: "3e2fd0a56214e6f5dcb93687e409af13d065ea30"
- name: from1.bin
description: unused BIOS ROM
size: 524288
crc32: "6b933005"
sha1: "e992747f46c48b66e5509fe0adf19c91250b00c7"
- name: rom1.bin
description: unused BIOS ROM
size: 130866
crc32: "4a6832dc"
sha1: "ae504f7733c2f40450157cd1d3b85bc83fac8569"
- name: "136032.114.j11"
description: LSI BIOS, even bytes
size: 16384
crc32: "195c54ad"
sha1: "d7cda3cd3db4c6f77074ca05e96ae11b62e048b7"
- name: "136032.115.j10"
description: LSI BIOS, odd bytes
size: 16384
crc32: "7275b4dc"
sha1: "0896ab37ea832a1335046353612c1b4c86d8d040"
- name: "136032.107.b2"
description: alphanumerics
size: 8192
crc32: "7a29dc07"
sha1: "72ba464da01bd6d3a91b8d9997d5ac14b6f47aad"
# EFO Cedar Magnet System
- name: cedmag.zip
required: true
category: bios_zip
system: efo-cedar-magnet
source_ref: "src/drivers/cedar_magnet.c:881-890, src/drivers/cedar_magnet.c:948"
contents:
- name: "magnet-master-vid-e03.bin"
size: 8192
crc32: "86c4a4f0"
sha1: "6db1a006b2e0b2a7cc9748ade881debb098b6757"
# Arcadia Systems
- name: ar_bios.zip
required: true
category: bios_zip
system: arcadia-systems
source_ref: "src/drivers/arcadia.c:352-354,717"
source_ref: "src/drivers/arsystems.c:356-377,823"
note: >-
Three BIOS variants selected with misc_bios (onep300, onep211,
tenp211), onep300 by default. kick12.rom is loaded whichever variant
@@ -757,7 +773,7 @@ files:
required: true
category: bios_zip
system: exidy-maxaflex
source_ref: "src/drivers/maxaflex.c:518-527,583"
source_ref: "src/drivers/maxaflex.c:520-529,585"
contents:
- name: atarixl.rom
description: main CPU ROM
@@ -780,7 +796,7 @@ files:
required: true
category: bios_zip
system: brezzasoft-crystal
source_ref: "src/drivers/crystal.c:854-857,923"
source_ref: "src/drivers/crystal.c:924-929,1032"
contents:
- name: mx27l1000.u14
size: 131072
@@ -792,7 +808,7 @@ files:
required: true
category: bios_zip
system: imax-macs
source_ref: "src/drivers/macs.c:394-402,612"
source_ref: "src/drivers/macs.c:396-404,614"
contents:
- name: macsos_l.u43
description: BIOS low byte
@@ -810,7 +826,7 @@ files:
required: true
category: bios_zip
system: barcrest-mpu4
source_ref: "src/drivers/mpu4.c:2014-2017,2175"
source_ref: "src/drivers/mpu4.c:2016-2019,2177"
contents:
- name: vid.p1
size: 65536
+523 -275
View File
File diff suppressed because it is too large. Load diff
+11 -11
View File
@@ -6,8 +6,8 @@ source_mirror: "https://github.com/WizzardSK/cemu-libretro"
upstream: "https://github.com/cemu-project/Cemu"
logo: "https://raw.githubusercontent.com/cemu-project/Cemu/main/dist/linux/info.cemu.Cemu.png"
profiled_date: "2026-10-23"
source_commit: "14f56b569b3668db01a4972225993abd3e8f2096"
upstream_commit: "42876aa86d2b92f9c620a76959a792bf392b89d3"
source_commit: "91fb753ab8f8fcd35a6ae16ecdb1a750a9240d6b"
upstream_commit: "3b1031612eb21302a8032e2f7a6db31549bd269b"
core_version: "2.6-372-g29f2f1fa"
version_basis:
kind: file
@@ -57,7 +57,7 @@ notes: |
gameProfiles/default/) comes with the core. The community graphic packs,
which standalone downloads, are compiled into it.
ref: CMakeLists.txt:4-7, src/CMakeLists.txt:75-90,
.gitlab-ci.yml:123, 129, 152, 414, 435, 440, 448, 478, 564, 583
.gitlab-ci.yml:123, 129, 152, 410, 431, 436, 444, 474, 560, 579
Path model. Cemu resolves every file through four roots: the user data
path (keys.txt, otp.bin, seeprom.bin, cafeLibs/, graphicPacks/,
@@ -79,7 +79,7 @@ notes: |
(src/libretro/CemuLibretro.cpp:4173).
ref: src/libretro/CemuLibretro.cpp:2110-2170,
src/libretro/CemuLibretro.cpp:4083-4091,
src/gui/wxgui/CemuApp.cpp:90-123, src/gui/wxgui/CemuApp.cpp:127-171,
src/gui/wxgui/CemuApp.cpp:89-124, src/gui/wxgui/CemuApp.cpp:126-172,
src/config/ActiveSettings.cpp:295-321
keys.txt is read once from the user data path. A missing file is created
@@ -93,7 +93,7 @@ notes: |
disc image does not start without it. .wua archives, .rpx and NUS
directories are not encrypted with a disc key and load without the file.
ref: src/Cafe/Filesystem/FST/KeyCache.cpp:65-137,
src/Cafe/Filesystem/FST/FST.cpp:192-246,
src/Cafe/Filesystem/FST/FST.cpp:192-239,
src/libretro/CemuLibretro.cpp:6094-6142
Shared fonts. LoadSharedData runs at every title start and looks for the
@@ -159,8 +159,8 @@ notes: |
under the user data path when the Nintendo network service is selected.
ref: src/Cafe/GameProfile/GameProfile.cpp:181-195,
src/Cafe/GraphicPack/GraphicPack2.cpp:96-111,
src/gui/wxgui/DownloadGraphicPacksWindow.cpp:133,
src/gui/wxgui/DownloadGraphicPacksWindow.cpp:234-238,
src/gui/wxgui/DownloadGraphicPacksWindow.cpp:131-133,
src/gui/wxgui/DownloadGraphicPacksWindow.cpp:234, 238,
src/libretro/embed_graphic_packs.cmake:8-54,
src/libretro/LibretroGraphicPacks.cpp:30-103,
src/libretro/CemuLibretro.cpp:6355,
@@ -181,8 +181,8 @@ notes: |
The core writes account_name.txt under <system_dir>/Cemu with a
"<persistent id> = <name>" line per account and names the accounts from
it when a title starts.
ref: src/main.cpp:117-141, src/config/NetworkSettings.cpp:10-14,
src/gui/wxgui/CemuApp.cpp:580-606,
ref: src/main.cpp:127-142, src/config/NetworkSettings.cpp:10-14,
src/gui/wxgui/CemuApp.cpp:590-620,
src/libretro/CemuLibretro.cpp:2072-2108,
src/libretro/CemuLibretro.cpp:4108-4114,
src/libretro/CemuLibretro.cpp:4906-4918,
@@ -199,7 +199,7 @@ files:
or .wux image, with a 16-byte <image>.key beside the image as the last
resort. Created with a template when absent. The libretro core
refuses to load an encrypted image whose key is not in it.
source_ref: "source src/Cafe/Filesystem/FST/KeyCache.cpp:65-137, upstream src/Cafe/Filesystem/FST/FST.cpp:192-246, source src/libretro/CemuLibretro.cpp:6094-6142"
source_ref: "source src/Cafe/Filesystem/FST/KeyCache.cpp:65-137, upstream src/Cafe/Filesystem/FST/FST.cpp:192-239, source src/libretro/CemuLibretro.cpp:6094-6142"
- name: otp.bin
path: Cemu/otp.bin
@@ -885,7 +885,7 @@ firmware_titles:
content: ["language.txt", "country.txt"]
required: false
note: "Written when absent, by the wx frontend on first run and by the libretro core at init."
source_ref: "upstream src/gui/wxgui/CemuApp.cpp:580-606, source src/libretro/CemuLibretro.cpp:2072-2108"
source_ref: "upstream src/gui/wxgui/CemuApp.cpp:590-620, source src/libretro/CemuLibretro.cpp:2072-2108"
mlc_structure:
- "mlc01/sys/title/0005001b/10042400/content/"
+27 -27
View File
@@ -2,20 +2,20 @@ emulator: "DSperate"
type: standalone
core_classification: other
source: "https://github.com/beebono/DSperate"
profiled_date: "2026-10-17"
source_commit: "81b73832c2e68e2b10cb5850f0a6d393ffc6fbb7"
pin_frozen: "ROCKNIX 20261001 ships the v2.0.1 release binaries, built by CI from the v2.0.1 tag at this commit."
profiled_date: "2026-11-09"
source_commit: "ddf2910e6d80220c6b22b4df61f0786ac9879cda"
pin_frozen: "ROCKNIX 20261101 ships the v3.0.5 release binaries, built by CI from the v3.0.5 tag at this commit."
pin_build:
- platform: rocknix
repo: "https://github.com/ROCKNIX/distribution"
revision: "20261001"
revision: "20261101"
path: "projects/ROCKNIX/packages/emulators/standalone/dsperate-sa/package.mk"
variable: PKG_VERSION
value: "2.0.1"
core_version: "v2.0.1"
value: "3.0.5"
core_version: "v3.0.5"
version_basis:
kind: tag
tag: "v2.0.1"
tag: "v3.0.5"
distance: 0
display_name: "Nintendo - DS / DSi (DSperate)"
cores:
@@ -28,7 +28,7 @@ systems:
data_root:
linux:
path: "$XDG_CONFIG_HOME/dsperate"
source_ref: "src/frontend/sdl/config.cpp:31-41"
source_ref: "src/frontend/sdl/config.cpp:39-49"
note: "~/.config/dsperate when XDG_CONFIG_HOME is unset. System files are read wherever the [paths] keys of the ini point."
notes: |
@@ -40,7 +40,7 @@ notes: |
the matching command-line flag), and a key that is unset or names no file
counts as absent. The names below are the ones ROCKNIX's dsperate.ini gives,
all in /storage/roms/bios/.
ref: src/frontend/sdl/config.cpp:184-205, src/frontend/sdl/main.cpp:1289-1303
ref: src/frontend/sdl/config.cpp:177-217, src/frontend/sdl/main.cpp:1175-1181
DS BIOS: both halves or neither, the ARM9 image 4 KB and the ARM7 image 16 KB
exactly. Without them the built-in FreeBIOS runs games by direct boot. The
@@ -48,8 +48,8 @@ notes: |
the [user] settings. Booting the DS menu needs both BIOS dumps and a real
firmware. No hash is checked: an FNV-1a of the loaded regions only tags save
states.
ref: src/core/nds.cpp:101-133, src/core/mem/bus.h:121-131,
src/frontend/sdl/main.cpp:1410, src/frontend/sdl/main.cpp:1440-1447
ref: src/core/nds.cpp:114-145, src/core/mem/bus.h:137-138,
src/frontend/sdl/main.cpp:1268-1274, src/frontend/sdl/main.cpp:1291-1299
DSi: DSiWare and --dsi-mode need the DSi BIOS pair, 64 KB each, and the DS
BIOS dumps as well. FreeBIOS cannot run a DSi session. dsi_firmware replaces
@@ -58,14 +58,14 @@ notes: |
(at the end, or at 0x000FF800). DSiWare without a NAND runs on a generated
console whose system font is DSperate's own unless dsi_font names a
TWLFontTable.dat.
ref: src/frontend/sdl/main.cpp:1294-1308, src/frontend/sdl/main.cpp:1452-1460,
src/core/nds_dsi.cpp:95-112, src/core/nds_dsi.cpp:121-127,
src/core/io/dsi_sd.cpp:111-140, src/core/nds_dsi.cpp:356-373,
src/frontend/sdl/main.cpp:1915-1919
ref: src/frontend/sdl/main.cpp:1153-1186, src/frontend/sdl/main.cpp:1301-1303,
src/core/nds_dsi.cpp:88-104, src/core/nds_dsi.cpp:112-118,
src/core/io/dsi_sd.cpp:105-138, src/core/nds_dsi.cpp:310-327,
src/frontend/sdl/main.cpp:1774-1778
Cheats come from usrcheat.dat: the [paths] cheats entry, else beside the ROM,
else the config directory.
ref: src/frontend/sdl/main.cpp:709-735
ref: src/frontend/sdl/main.cpp:635-657
files:
- name: "bios9.bin"
@@ -77,7 +77,7 @@ files:
config_key: "paths.bios9"
description: "DS ARM9 BIOS"
note: "Loaded only together with bios7.bin. Absent, FreeBIOS runs games by direct boot. Needed to boot the DS menu and for any DSi session."
source_ref: "src/core/nds.cpp:105-108, src/core/mem/bus.h:130, src/frontend/sdl/main.cpp:1440-1460"
source_ref: "src/core/nds.cpp:119-121, src/core/mem/bus.h:137, src/frontend/sdl/main.cpp:1268-1274, src/frontend/sdl/main.cpp:1291-1303"
- name: "bios7.bin"
system: nintendo-ds
@@ -88,7 +88,7 @@ files:
config_key: "paths.bios7"
description: "DS ARM7 BIOS"
note: "Loaded only together with bios9.bin. Absent, FreeBIOS runs games by direct boot. Needed to boot the DS menu and for any DSi session."
source_ref: "src/core/nds.cpp:105-109, src/core/mem/bus.h:131, src/frontend/sdl/main.cpp:1440-1460"
source_ref: "src/core/nds.cpp:119-120, src/core/nds.cpp:122, src/core/mem/bus.h:138, src/frontend/sdl/main.cpp:1268-1274, src/frontend/sdl/main.cpp:1291-1303"
- name: "firmware.bin"
system: nintendo-ds
@@ -97,7 +97,7 @@ files:
config_key: "paths.firmware"
description: "DS firmware"
note: "Any non-empty file is accepted. Absent, a firmware is generated from [user]. Needed to boot the DS menu."
source_ref: "src/core/nds.cpp:110, src/core/nds.cpp:124-125, src/frontend/sdl/main.cpp:1441-1447"
source_ref: "src/core/nds.cpp:123, src/core/nds.cpp:133-134, src/frontend/sdl/main.cpp:1178, src/frontend/sdl/main.cpp:1292-1299"
- name: "dsi_bios9.bin"
system: nintendo-dsi
@@ -107,7 +107,7 @@ files:
config_key: "paths.bios9i"
description: "DSi ARM9 BIOS"
note: "Loaded only together with dsi_bios7.bin. Without the pair DSiWare and --dsi-mode are refused, while DS games do not use it."
source_ref: "src/core/nds_dsi.cpp:95-106, src/core/mem/bus.h:121, src/frontend/sdl/main.cpp:1301-1308"
source_ref: "src/core/nds_dsi.cpp:88-104, src/core/mem/bus.h:128, src/frontend/sdl/main.cpp:1179-1186"
- name: "dsi_bios7.bin"
system: nintendo-dsi
@@ -117,7 +117,7 @@ files:
config_key: "paths.bios7i"
description: "DSi ARM7 BIOS"
note: "Loaded only together with dsi_bios9.bin. Without the pair DSiWare and --dsi-mode are refused, while DS games do not use it."
source_ref: "src/core/nds_dsi.cpp:95-106, src/core/mem/bus.h:122, src/frontend/sdl/main.cpp:1301-1308"
source_ref: "src/core/nds_dsi.cpp:88-104, src/core/mem/bus.h:129, src/frontend/sdl/main.cpp:1179-1186"
- name: "dsi_firmware.bin"
system: nintendo-dsi
@@ -125,7 +125,7 @@ files:
config_key: "paths.dsi_firmware"
description: "DSi firmware"
note: "Used instead of firmware.bin for a DSi session when no --firmware is given."
source_ref: "src/frontend/sdl/main.cpp:1294-1298"
source_ref: "src/frontend/sdl/main.cpp:1176-1178"
- name: "dsi_nand.bin"
system: nintendo-dsi
@@ -133,7 +133,7 @@ files:
config_key: "paths.dsi_nand"
description: "DSi NAND image with nocash footer"
note: "Read only by --dsi-mode and NAND title shortcuts. DSiWare run from the game list does without it. Opened read-only, rejected without the \"DSi eMMC CID/CPU\" footer."
source_ref: "src/frontend/sdl/main.cpp:1263-1272, src/core/nds_dsi.cpp:121-127, src/core/io/dsi_sd.cpp:111-140"
source_ref: "src/frontend/sdl/main.cpp:1153-1166, src/frontend/sdl/main.cpp:1331-1337, src/core/nds_dsi.cpp:112-118, src/core/io/dsi_sd.cpp:105-138"
- name: "TWLFontTable.dat"
system: nintendo-dsi
@@ -144,7 +144,7 @@ files:
config_key: "paths.dsi_font"
description: "DSi system font (Japan, Americas, Europe, Australia)"
note: "Used for DSiWare run without a NAND. Absent, DSperate's own font table is generated. ROCKNIX's ini leaves the key unset. A file under 256 bytes is refused. No hash is checked, only the layout bytes 0x84 and 0x86, and a table whose layout differs from the title's region draws a warning. This is the normal layout (0x84 = 3, 0x86 = 0), read from nand:/sys/TWLFontTable.dat of a retail DSi NAND dump. The FAT16 partition is AES-CTR encrypted with the normal key ROL128((KeyX XOR KeyY) + 0xFFFEFB4E295902582A680F5F1A4F3E79, 42), where KeyX is built from the console ID in the nocash footer and KeyY is 0x0AB9DC76 0xBD4DC4D3 0x202DDD1D 0xE1A00005. The counter is the first 16 bytes of SHA-1 of the footer's eMMC CID, and each 16-byte block is byte-reversed before and after AES. The USA, Europe, Japan and Australia consoles, four different console IDs, give the same bytes."
source_ref: "src/core/nds_dsi.cpp:356-373, src/core/io/dsi_font.cpp:38-43, src/core/io/dsi_nand_fs.cpp:794-809, src/core/io/dsi_aes.cpp:39-47, src/frontend/sdl/main.cpp:1915-1919"
source_ref: "src/core/nds_dsi.cpp:310-327, src/core/io/dsi_font.cpp:38-43, src/core/io/dsi_nand_fs.cpp:786-800, src/core/io/dsi_aes.cpp:38-46, src/frontend/sdl/main.cpp:1774-1778"
- name: "TWLFontTable.dat"
system: nintendo-dsi
@@ -155,7 +155,7 @@ files:
config_key: "paths.dsi_font"
description: "DSi system font (China)"
note: "The Chinese layout (0x84 = 9, 0x86 = 4), which Chinese DSiWare needs to find its fonts. Read from nand:/sys/TWLFontTable.dat of a retail Chinese DSi NAND dump, decrypted as for the normal table."
source_ref: "src/core/nds_dsi.cpp:360-367, src/core/io/dsi_font.cpp:38-43, src/core/io/dsi_nand_fs.cpp:794-809, src/core/io/dsi_aes.cpp:39-47"
source_ref: "src/core/nds_dsi.cpp:313-320, src/core/io/dsi_font.cpp:38-43, src/core/io/dsi_nand_fs.cpp:786-800, src/core/io/dsi_aes.cpp:38-46"
- name: "TWLFontTable.dat"
system: nintendo-dsi
@@ -166,7 +166,7 @@ files:
config_key: "paths.dsi_font"
description: "DSi system font (Korea)"
note: "The Korean layout (0x84 = 9, 0x86 = 5), which Korean DSiWare needs to find its fonts. Read from nand:/sys/TWLFontTable.dat of a retail Korean DSi NAND dump, decrypted as for the normal table."
source_ref: "src/core/nds_dsi.cpp:360-367, src/core/io/dsi_font.cpp:38-43, src/core/io/dsi_nand_fs.cpp:794-809, src/core/io/dsi_aes.cpp:39-47"
source_ref: "src/core/nds_dsi.cpp:313-320, src/core/io/dsi_font.cpp:38-43, src/core/io/dsi_nand_fs.cpp:786-800, src/core/io/dsi_aes.cpp:38-46"
- name: "usrcheat.dat"
system: nintendo-ds
@@ -175,4 +175,4 @@ files:
config_key: "paths.cheats"
description: "Action Replay cheat database"
note: "Looked up by game code and header checksum. Nothing is enabled by its presence."
source_ref: "src/frontend/sdl/main.cpp:709-735"
source_ref: "src/frontend/sdl/main.cpp:635-657"
+14 -13
View File
@@ -4,7 +4,7 @@ core_classification: enhanced_fork
source: "https://github.com/TASEmulators/freej2me-plus"
upstream: "https://github.com/hex007/freej2me"
profiled_date: "2026-10-04"
source_commit: "3933e75ef927a95eab9f5e065f0b76dabf336069"
source_commit: "869a16b28ffd366722f419f8bac4a7cfe60d69a3"
upstream_commit: "8b9bc8a19baf26e3d92f88934a64a32f1cbc2795"
core_version: "1.53"
version_basis:
@@ -51,16 +51,17 @@ notes: |
overridden by the core options the bridge sends), FreeJ2ME.log, and the
SiemensData/ and XceData/ directories that the Siemens and XCE file APIs
write to. FreeJ2MEDumps/KDDI/ receives the jar and jad extracted from a
.kjx. Saves go to <save_dir>/freej2me/ (rms/<suite>/ and
config/<suite>/game.conf), falling back to the system directory when the
frontend has no save directory.
.kjx. Saves go to <save_dir>/freej2me/ (rms/<suite>/, the suite name with
any of \/:*?"<>| replaced by an underscore, and config/<suite>/game.conf),
falling back to the system directory when the frontend has no save
directory.
ref: src/org/recompile/freej2me/Config.java:47-48,
src/org/recompile/freej2me/Config.java:186-206,
src/org/recompile/mobile/Mobile.java:121-123,
src/org/recompile/mobile/Mobile.java:135,
src/org/recompile/freej2me/Config.java:188-208,
src/org/recompile/mobile/Mobile.java:119-121,
src/org/recompile/mobile/Mobile.java:133,
src/libretro/freej2me_libretro.c:937-945,
src/org/recompile/freej2me/Libretro.java:201-205,
src/javax/microedition/rms/RecordStore.java:111
src/javax/microedition/rms/RecordStore.java:111-112, 1134
Two files are user supplied and optional. With the freej2me_midifont core
option on, Manager.checkCustomMidi loads the first .sf2 or .gm listed in
@@ -74,9 +75,9 @@ notes: |
src/libretro/freej2me_libretro.c:481-486,
src/org/recompile/freej2me/Libretro.java:240,
src/org/recompile/freej2me/Libretro.java:254,
src/org/recompile/mobile/Mobile.java:1056-1064,
src/javax/microedition/media/Manager.java:55,
src/javax/microedition/media/Manager.java:329-352,
src/org/recompile/mobile/Mobile.java:1048-1056,
src/javax/microedition/media/Manager.java:56,
src/javax/microedition/media/Manager.java:330-353,
src/org/recompile/mobile/PlatformFont.java:63,
src/org/recompile/mobile/PlatformFont.java:133-154
@@ -98,7 +99,7 @@ files:
category: game_data
description: "MIDI soundbank for J2ME audio"
note: "First .sf2 or .gm in the directory listing, loaded through MidiSystem.getSoundbank when the freej2me_midifont option is on. A rejected file is logged and the JVM default soundbank stays."
source_ref: "source src/javax/microedition/media/Manager.java:55, source src/javax/microedition/media/Manager.java:329-352, source src/org/recompile/mobile/Mobile.java:1056-1058"
source_ref: "source src/javax/microedition/media/Manager.java:56, source src/javax/microedition/media/Manager.java:330-353, source src/org/recompile/mobile/Mobile.java:1048-1050"
- name: "<font>.ttf"
system: j2me
@@ -108,4 +109,4 @@ files:
category: game_data
description: "TrueType font for J2ME text"
note: "First .ttf, .otf or .ttc in the directory listing, loaded through Font.createFont when the freej2me_textfont option is on. A rejected file is logged and the AWT faces stay."
source_ref: "source src/org/recompile/mobile/PlatformFont.java:63, source src/org/recompile/mobile/PlatformFont.java:133-154, source src/org/recompile/mobile/Mobile.java:1062-1064"
source_ref: "source src/org/recompile/mobile/PlatformFont.java:63, source src/org/recompile/mobile/PlatformFont.java:133-154, source src/org/recompile/mobile/Mobile.java:1054-1056"
+41 -13
View File
@@ -4,11 +4,11 @@ core_classification: embedded_hle
source: "https://github.com/ivanizag/izapple2"
upstream: "https://github.com/ivanizag/izapple2"
profiled_date: "2026-08-08"
source_commit: "4e773baf9f1f3fb692e3f3444eb5f42fddb205ef"
core_version: "v2.5.0-3-g4e773ba"
source_commit: "9d8aafa596bb04aedebbe7af95b9564fbe3de331"
core_version: "v2.6.0-3-g9d8aafa"
version_basis:
kind: tag
tag: "v2.5.0"
tag: "v2.6.0"
distance: 3
display_name: "Apple - Apple II (izapple2)"
cores:
@@ -19,25 +19,29 @@ mode: standalone
notes: |
Apple II emulator written in Go by Ivan Izaguirre. Boards: Apple ][ and ][+
with 48 KB, Apple IIe and //e enhanced with 128 KB, and two clones, the Copam
Base 64A and the Basis 108 (setup.go:45-67).
with 48 KB, Apple IIe and //e enhanced with 128 KB, Apple IIc with ROM 255,
0, 3 and 4, and two clones, the Copam Base 64A and the Basis 108
(setup.go:51-90). The IIc board refuses any card but its built-in ones: the
language card in slot 0, the two serial ports in slots 1 and 2 and the disk
port in slot 6, and only the memory expansion may be added, in slot 4
(boardApple2c.go:369-401).
Every ROM the machine needs is compiled into the binary. The whole resources
directory is embedded with //go:embed (resources.go:25-26) and the 17 machine
configs with //go:embed configs/*.cfg (configuration.go:57-58). LoadResource
directory is embedded with //go:embed (resources.go:25-26) and the 24 config
files with //go:embed configs/*.cfg (configuration.go:59-60). LoadResource
routes a name by its prefix: <internal>/ reads the embedded filesystem,
http:// and https:// fetch over the network, anything else is a path on disk
(resources.go:55-88). The shipped configs name main ROM, character ROM and
boot diskette as <internal>/ paths, so the emulator starts into DOS 3.3 with
no file on disk. The base64a and basis108 configs set rom: <custom>, which
dispatches to loadMultiPageRom over six embedded PROM dumps each
(setup.go:203-213, boardBase64a.go:7-16, boardBasis108.go:28-37).
(setup.go:222-232, boardBase64a.go:7-16, boardBasis108.go:28-37).
Two of the 27 registered cards name an image the emulator downloads instead
of carrying: prodosromdrive and prodosromcard3 (cardBuilder.go:87-88). Both
Two of the 35 registered cards name an image the emulator downloads instead
of carrying: prodosromdrive and prodosromcard3 (cardBuilder.go:108-109). Both
read the card slot ROM out of that image, so neither card has a boot ROM
without it. No shipped model uses either card, they are reached with -sN.
prodosnvramdrive is left out of the factory (cardBuilder.go:89).
prodosnvramdrive is left out of the factory (cardBuilder.go:110).
-rom and -charrom replace the embedded main and character ROM with a file of
the user's choosing, and every disk, hard disk and cassette parameter takes
@@ -47,7 +51,7 @@ notes: |
console and headless. ES-DE runs a2sdl, built as izapple2sdl_linux_amd64 or
izapple2sdl_windows_amd64.exe, and passes the image as a positional argument.
The libretro core in frontend/a2libretro builds from source only, is absent
from the buildbot and the RetroArch online updater (doc/libretro.md), and its
from the buildbot and the RetroArch online updater (doc/frontend_libretro.md), and its
izapple2_libretro.info declares firmware_count = 0. It exposes the machine as
a model option and no card configuration, so the two card images cannot be
reached through it.
@@ -73,7 +77,7 @@ analysis:
embedded_resources:
mechanism: "//go:embed resources, served by LoadResource on the <internal>/ prefix"
source_ref: "resources.go:25-26,55-70"
count: 59
count: 65
main_roms:
- filename: "341-000x_integer.rom"
size: 8192
@@ -95,6 +99,22 @@ analysis:
size: 32768
md5: 2f52e3571b952c0c6a7111bbe7d40b06
sha1: 5f7b851dbcab1df8f1883d2112f6ab1d16109f24
- filename: Apple2c_ROM255.rom
size: 16384
md5: 6b2cf9588da87954de396ccb0286ecb4
sha1: 1a9b8aca5e32bb702ddb7791daddd60a89655729
- filename: Apple2c_ROM0.rom
size: 32768
md5: e0d67bb1aabe2030547b4cbdf3905b60
sha1: 10767e96cc17bad0970afda3a4146564e6272ba1
- filename: Apple2c_ROM3.rom
size: 32768
md5: a513397de6fdbb96a23d8ef7647e8c9a
sha1: 5338d9baa7ae202457b6500fde5883dbdc86e5d3
- filename: Apple2c_ROM4.rom
size: 32768
md5: eeef93ad674e43776d00050dccc1d774
sha1: 015061597c4cda7755aeb88b735994ffd2f235ca
main_roms_clones:
- filename: BASE64A_D0.BIN
@@ -253,6 +273,14 @@ analysis:
size: 512
md5: d2cf1b181b1934f9533c6d8b9d02f44c
sha1: 5e2737d233f5769df654d2d5aa96d24f2fd85671
- filename: Apple II Super Serial Card ROM 341-0065-A.bin
size: 2048
md5: 67c0d61ab0911183faf05270f881a97e
sha1: 6dab633470c6bc4cb3e81d09fda46597caf8ee57
- filename: Apple II UniDisk 3.5 Interface Card ROM.bin
size: 4096
md5: 6e3eb8c47b60948a2e069af0dbeb8224
sha1: fa94ecc2aa23f336f7da9e18bc8f4a6cfbb4ea60
diskettes:
- filename: dos33.dsk
+9 -8
View File
@@ -5,11 +5,12 @@ source: "https://git.ryujinx.app/projects/Kenji-NX"
source_branch: libryujinx_bionic
upstream: "https://git.ryujinx.app/projects/Ryubing"
profiled_date: "2026-08-11"
source_commit: "53d32a761e61dc8e9b5c0744199a890fc8d934d5"
source_commit: "280c427c550c5fe3bcc46b378e06a9b90a7e6b09"
core_version: "2.1.0-pr.2"
version_basis:
kind: unverified
why: host_unreachable
kind: file
path: "src/KenjinxAndroid/app/build.gradle"
pattern: "versionName '([^']+)'"
display_name: "Nintendo - Switch (Kenji-NX)"
cores:
- kenji-nx
@@ -65,9 +66,9 @@ notes: |
of a path but reaches the same two methods. Nothing gates the launch on it:
homebrew NRO goes through ProcessLoader without touching the key set, and the
failure is deferred to the first service that needs a system archive.
ref: src/Ryujinx.HLE/FileSystem/ContentManager.cs:431-498,675-749,893-903,
ref: src/Ryujinx.HLE/FileSystem/ContentManager.cs:431-498,675-749,891-904,
src/LibKenjinx/Android/JniExportedMethods.cs:462-498,
src/Ryujinx.HLE/Loaders/Processes/ProcessLoader.cs:189-205
src/Ryujinx.HLE/Loaders/Processes/ProcessLoader.cs:186-214
Two read paths belong to the desktop build alone, because the Android build
drops LibKenjinx.Native.cs and wires those subsystems differently.
@@ -80,10 +81,10 @@ notes: |
KenjinxAmiiboShim and INfp reads the figure id straight out of offset 0x1DC.
ref: src/LibKenjinx/LibKenjinx.csproj:11-13,
src/LibKenjinx/Android/JniExportedMethods.cs:350-351,1049-1063,
src/LibKenjinx/LibKenjinx.Input.cs:28-39,
src/Ryujinx.HLE/Kenjinx/AmiiboBridge.cs:10-44,
src/LibKenjinx/LibKenjinx.Input.cs:31-42,
src/Ryujinx.HLE/Kenjinx/AmiiboBridge.cs:10-43,
src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/KenjinxAmiiboShim.cs:15-41,
src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/INfp.cs:149-166,257-279
src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/INfp.cs:149-165,256-279
Config.json, Profiles.json, updates.json, dlc.json, mods.json, metadata.json
and system/amiibo/<amiibo id>.json are written by the emulator itself, and
+35 -35
View File
@@ -5,7 +5,7 @@ cores: [puae, uae]
source: "https://github.com/libretro/libretro-uae"
upstream: "https://github.com/GnoStiC/PUAE"
profiled_date: "2026-03-24"
source_commit: "7387937066b1b693816c3b4e2b7a0c601d41363d"
source_commit: "d366f77c60e5a5f059f129cc3773d3048306083b"
core_version: "5.3.1"
version_basis:
kind: file
@@ -64,18 +64,18 @@ notes: |
other format works (sources/src/caps/caps.c:37-41, 71-96, 467-487).
Data files are read from system/uae_data/, or system/uae/ when uae_data/
does not exist (libretro/libretro-core.c:746-751). The "Floppy Sound
does not exist (libretro/libretro-core.c:745-750). The "Floppy Sound
Type" option picks the floppy drive samples embedded in the core
(internal, the default) or the external A500 or LOUD set from that folder
(libretro/libretro-core.c:1871-1885, libretro/libretro-core.c:4174-4202).
(libretro/libretro-core.c:1875-1889, libretro/libretro-core.c:4182-4210).
Each sample is drive_<click|spin|spinnd|startup|snatch>_<set>, with .wav
appended when the bare name does not open. When none of the five opens,
floppy sound is turned off for that drive (sources/src/driveclick.c:77-104,
sources/src/driveclick.c:200-235). The same folder is scanned for files
ending in rom, offered as cartridge images by the Cartridge option.
Source: libretro/libretro-core.h:140-245, libretro/libretro-core.c:5609-5777,
libretro/libretro-core.c:6044-6093
Source: libretro/libretro-core.h:142-247, libretro/libretro-core.c:5617-5784,
libretro/libretro-core.c:6043-6096
files:
# -------------------------------------------------------
@@ -90,7 +90,7 @@ files:
aliases:
- "amiga-os-110-ntsc.rom"
- "Kickstart v1.1 rev 31.34 (1985)(Commodore)(A1000)(NTSC).rom"
source_ref: "libretro/libretro-core.h:170-174"
source_ref: "libretro/libretro-core.h:172-176"
- name: "kick32034.A1000"
system: commodore-amiga
@@ -101,7 +101,7 @@ files:
aliases:
- "amiga-os-110-pal.rom"
- "Kickstart v1.1 rev 32.34 (1986)(Commodore)(A1000)(PAL).rom"
source_ref: "libretro/libretro-core.h:176-179"
source_ref: "libretro/libretro-core.h:178-181"
# -------------------------------------------------------
# Amiga 500 / 2000
@@ -116,18 +116,18 @@ files:
- "amiga-os-120.rom"
- "Kickstart v1.2 rev 33.180 (1986)(Commodore)(A500-A2000)[!].rom"
- "Kickstart v1.2 rev 33.180 (1986)(Commodore)(A500-A1000-A2000).rom"
source_ref: "libretro/libretro-core.h:182-185"
source_ref: "libretro/libretro-core.h:184-187"
- name: "kick34005.A500"
system: commodore-amiga
required: true
size: 262144 # 256 KB
note: "Kickstart 1.3 rev 34.5 (1987). Default for A500/A2000OG/CDTV models. Also used by WHDLoad."
note: "Kickstart 1.3 rev 34.5 (1987). Default for A500/A500OG/A500ECS/A2000OG/CDTV models. Also used by WHDLoad."
aliases:
- "amiga-os-130.rom"
- "Kickstart v1.3 rev 34.5 (1987)(Commodore)(A500-A1000-A2000-CDTV)[!].rom"
- "Kickstart v1.3 rev 34.5 (1987)(Commodore)(A500-A1000-A2000-CDTV).rom"
source_ref: "libretro/libretro-core.h:187-190"
source_ref: "libretro/libretro-core.h:189-192"
- name: "kick37175.A500"
system: commodore-amiga
@@ -139,7 +139,7 @@ files:
- "amiga-os-204.rom"
- "Kickstart v2.04 rev 37.175 (1991)(Commodore)(A500+)[!].rom"
- "Kickstart v2.04 rev 37.175 (1991)(Commodore)(A500+).rom"
source_ref: "libretro/libretro-core.h:192-195"
source_ref: "libretro/libretro-core.h:194-197"
# -------------------------------------------------------
# Amiga 600
@@ -153,19 +153,19 @@ files:
aliases:
- "amiga-os-205-a600.rom"
- "Kickstart v2.05 rev 37.350 (1992)(Commodore)(A600HD)[!].rom"
source_ref: "libretro/libretro-core.h:198-201"
source_ref: "libretro/libretro-core.h:200-203"
- name: "kick40063.A600"
system: commodore-amiga
required: false
hle_fallback: true
size: 524288 # 512 KB
note: "Kickstart 3.1 rev 40.63 (1993). Default for A600/A2000 models. Also used by WHDLoad."
note: "Kickstart 3.1 rev 40.63 (1993). Default for A600/A600OG/A2000 models. Also used by WHDLoad."
aliases:
- "amiga-os-310-a600.rom"
- "Kickstart v3.1 rev 40.63 (1993)(Commodore)(A500-A600-A2000)[!].rom"
- "Kickstart v3.1 rev 40.63 (1993)(Commodore)(A500-A600-A2000).rom"
source_ref: "libretro/libretro-core.h:203-206"
source_ref: "libretro/libretro-core.h:205-208"
# -------------------------------------------------------
# Amiga 1200
@@ -179,7 +179,7 @@ files:
aliases:
- "amiga-os-300-a1200.rom"
- "Kickstart v3.0 rev 39.106 (1992)(Commodore)(A1200)[!].rom"
source_ref: "libretro/libretro-core.h:209-212"
source_ref: "libretro/libretro-core.h:211-214"
- name: "kick40068.A1200"
system: commodore-amiga
@@ -190,7 +190,7 @@ files:
- "amiga-os-310-a1200.rom"
- "Kickstart v3.1 rev 40.68 (1993)(Commodore)(A1200)[!].rom"
- "Kickstart v3.1 rev 40.68 (1993)(Commodore)(A1200).rom"
source_ref: "libretro/libretro-core.h:214-217"
source_ref: "libretro/libretro-core.h:216-219"
# -------------------------------------------------------
# Amiga 4000
@@ -204,7 +204,7 @@ files:
aliases:
- "amiga-os-300-a4000.rom"
- "Kickstart v3.0 rev 39.106 (1992)(Commodore)(A4000)[!].rom"
source_ref: "libretro/libretro-core.h:220-223"
source_ref: "libretro/libretro-core.h:222-225"
- name: "kick40068.A4000"
system: commodore-amiga
@@ -215,7 +215,7 @@ files:
aliases:
- "amiga-os-310-a4000.rom"
- "Kickstart v3.1 rev 40.68 (1993)(Commodore)(A4000).rom"
source_ref: "libretro/libretro-core.h:225-228"
source_ref: "libretro/libretro-core.h:227-230"
# -------------------------------------------------------
# Commodore CDTV
@@ -229,7 +229,7 @@ files:
- "amiga-os-130-cdtv-ext.rom"
- "CDTV Extended-ROM v1.0 (1991)(Commodore)(CDTV)[!].rom"
- "CDTV Extended-ROM v1.0 (1992)(Commodore)(CDTV).rom"
source_ref: "libretro/libretro-core.h:231-234"
source_ref: "libretro/libretro-core.h:233-236"
# -------------------------------------------------------
# Amiga CD32
@@ -242,7 +242,7 @@ files:
aliases:
- "amiga-os-310-cd32.rom"
- "Kickstart v3.1 rev 40.60 (1993)(Commodore)(CD32).rom"
source_ref: "libretro/libretro-core.h:236-239"
source_ref: "libretro/libretro-core.h:238-241"
- name: "kick40060.CD32.ext"
system: commodore-amiga-cd32
@@ -252,7 +252,7 @@ files:
aliases:
- "amiga-os-310-cd32-ext.rom"
- "CD32 Extended-ROM rev 40.60 (1993)(Commodore)(CD32).rom"
source_ref: "libretro/libretro-core.h:241-244"
source_ref: "libretro/libretro-core.h:243-246"
# -------------------------------------------------------
# WHDLoad support files
@@ -261,20 +261,20 @@ files:
system: commodore-amiga
required: false
note: "Amiga Forever ROM decryption key. Copied to saves/WHDLoad/Devs/Kickstarts/ for WHDLoad."
source_ref: "libretro/libretro-core.c:5963-5978"
source_ref: "libretro/libretro-core.c:5962-5977"
- name: "WHDLoad.key"
system: commodore-amiga
required: false
unsourceable: "per-user signed registration key, never distributed generically, WHDLoad free since v18.2"
note: "WHDLoad license key. Copied to saves/WHDLoad/L/ for registered WHDLoad use."
source_ref: "libretro/libretro-core.c:5979-5994"
source_ref: "libretro/libretro-core.c:5978-5993"
- name: "WHDLoad.prefs"
system: commodore-amiga
required: false
note: "WHDLoad preferences. Copied to saves/WHDLoad/S/ when present."
source_ref: "libretro/libretro-core.c:5995-6018"
source_ref: "libretro/libretro-core.c:5994-6017"
# -------------------------------------------------------
# CAPS library for IPF floppy images
@@ -302,7 +302,7 @@ files:
sha1: "34f05541606ee8acd033eadbda082b90051253cc"
md5: "6c5b44c1a2bcee664129f850bfe4ed8a"
crc32: "27324b7d"
source_ref: "libretro/libretro-core.c:746-751, libretro/libretro-core.c:4174-4202, sources/src/driveclick.c:77-104, sources/src/driveclick.c:200-235"
source_ref: "libretro/libretro-core.c:745-750, libretro/libretro-core.c:4182-4210, sources/src/driveclick.c:77-104, sources/src/driveclick.c:200-235"
note: "A500 set, head step. Hashes are those of sources/uae_data/drive_click_A500.wav in the core repository."
- name: "drive_spin_A500.wav"
@@ -313,7 +313,7 @@ files:
sha1: "a117647990e2e9debb7ac65a0db429a59bb630f0"
md5: "7401f854a75f9ede18769168ab896a2a"
crc32: "5f7cb73b"
source_ref: "libretro/libretro-core.c:746-751, libretro/libretro-core.c:4174-4202, sources/src/driveclick.c:77-104, sources/src/driveclick.c:200-235"
source_ref: "libretro/libretro-core.c:745-750, libretro/libretro-core.c:4182-4210, sources/src/driveclick.c:77-104, sources/src/driveclick.c:200-235"
note: "A500 set, motor with a disk. Hashes are those of sources/uae_data/drive_spin_A500.wav in the core repository."
- name: "drive_spinnd_A500.wav"
@@ -324,7 +324,7 @@ files:
sha1: "786cf1cbd8eabaeb150dabb6b8a1aeca0ed71634"
md5: "f9d954879fee8e96baa93d6139077cdb"
crc32: "2c673174"
source_ref: "libretro/libretro-core.c:746-751, libretro/libretro-core.c:4174-4202, sources/src/driveclick.c:77-104, sources/src/driveclick.c:200-235"
source_ref: "libretro/libretro-core.c:745-750, libretro/libretro-core.c:4182-4210, sources/src/driveclick.c:77-104, sources/src/driveclick.c:200-235"
note: "A500 set, motor without a disk. Hashes are those of sources/uae_data/drive_spinnd_A500.wav in the core repository."
- name: "drive_startup_A500.wav"
@@ -335,7 +335,7 @@ files:
sha1: "db8de831a59a44dc6070166e2005c330a793a48d"
md5: "aebeacc7e7bc52ef890785c835bec3d0"
crc32: "cb552e00"
source_ref: "libretro/libretro-core.c:746-751, libretro/libretro-core.c:4174-4202, sources/src/driveclick.c:77-104, sources/src/driveclick.c:200-235"
source_ref: "libretro/libretro-core.c:745-750, libretro/libretro-core.c:4182-4210, sources/src/driveclick.c:77-104, sources/src/driveclick.c:200-235"
note: "A500 set, motor start. Hashes are those of sources/uae_data/drive_startup_A500.wav in the core repository."
- name: "drive_snatch_A500.wav"
@@ -346,7 +346,7 @@ files:
sha1: "b8dd63077e12bdeacd3ad70ba41614dc52aa8023"
md5: "1a4b2d6254918ff769f26beeede75655"
crc32: "4ac3c05e"
source_ref: "libretro/libretro-core.c:746-751, libretro/libretro-core.c:4174-4202, sources/src/driveclick.c:77-104, sources/src/driveclick.c:200-235"
source_ref: "libretro/libretro-core.c:745-750, libretro/libretro-core.c:4182-4210, sources/src/driveclick.c:77-104, sources/src/driveclick.c:200-235"
note: "A500 set, disk insertion. Hashes are those of sources/uae_data/drive_snatch_A500.wav in the core repository."
- name: "drive_click_LOUD.wav"
@@ -357,7 +357,7 @@ files:
sha1: "fa5df7c9fe3ee70cafbe232ff4f453982c6d1ce2"
md5: "b64bee23f356635f67fb08b543df9797"
crc32: "59069982"
source_ref: "libretro/libretro-core.c:746-751, libretro/libretro-core.c:4174-4202, sources/src/driveclick.c:77-104, sources/src/driveclick.c:200-235"
source_ref: "libretro/libretro-core.c:745-750, libretro/libretro-core.c:4182-4210, sources/src/driveclick.c:77-104, sources/src/driveclick.c:200-235"
note: "LOUD set, head step. Hashes are those of sources/uae_data/drive_click_LOUD.wav in the core repository."
- name: "drive_spin_LOUD.wav"
@@ -368,7 +368,7 @@ files:
sha1: "5b1d8c880f8d8fcd9309a7889817611cc27e16e0"
md5: "56d8e36a2f04b5e8c5a1f1530cfc886c"
crc32: "1969eea0"
source_ref: "libretro/libretro-core.c:746-751, libretro/libretro-core.c:4174-4202, sources/src/driveclick.c:77-104, sources/src/driveclick.c:200-235"
source_ref: "libretro/libretro-core.c:745-750, libretro/libretro-core.c:4182-4210, sources/src/driveclick.c:77-104, sources/src/driveclick.c:200-235"
note: "LOUD set, motor with a disk. Hashes are those of sources/uae_data/drive_spin_LOUD.wav in the core repository."
- name: "drive_spinnd_LOUD.wav"
@@ -379,7 +379,7 @@ files:
sha1: "d1709931cfe05b3bd31b6ef3d9697a22c934549b"
md5: "43ab05c6d969cb40805970a5b2352875"
crc32: "49e72ce7"
source_ref: "libretro/libretro-core.c:746-751, libretro/libretro-core.c:4174-4202, sources/src/driveclick.c:77-104, sources/src/driveclick.c:200-235"
source_ref: "libretro/libretro-core.c:745-750, libretro/libretro-core.c:4182-4210, sources/src/driveclick.c:77-104, sources/src/driveclick.c:200-235"
note: "LOUD set, motor without a disk. Hashes are those of sources/uae_data/drive_spinnd_LOUD.wav in the core repository."
- name: "drive_startup_LOUD.wav"
@@ -390,7 +390,7 @@ files:
sha1: "38e63f700ee6a5be71ded6c057267562c00f3e31"
md5: "743b4b9f0ca645c4c2a34953b5e01e45"
crc32: "d746cc1e"
source_ref: "libretro/libretro-core.c:746-751, libretro/libretro-core.c:4174-4202, sources/src/driveclick.c:77-104, sources/src/driveclick.c:200-235"
source_ref: "libretro/libretro-core.c:745-750, libretro/libretro-core.c:4182-4210, sources/src/driveclick.c:77-104, sources/src/driveclick.c:200-235"
note: "LOUD set, motor start. Hashes are those of sources/uae_data/drive_startup_LOUD.wav in the core repository."
- name: "drive_snatch_LOUD.wav"
@@ -401,7 +401,7 @@ files:
sha1: "0417e6e7fee2aebae972ce4d00101a0ce363af32"
md5: "40cdf89f35b68cfefd4df5fb0256e02f"
crc32: "b015251a"
source_ref: "libretro/libretro-core.c:746-751, libretro/libretro-core.c:4174-4202, sources/src/driveclick.c:77-104, sources/src/driveclick.c:200-235"
source_ref: "libretro/libretro-core.c:745-750, libretro/libretro-core.c:4182-4210, sources/src/driveclick.c:77-104, sources/src/driveclick.c:200-235"
note: "LOUD set, disk insertion. Hashes are those of sources/uae_data/drive_snatch_LOUD.wav in the core repository."
model_kickstart_map:
@@ -436,4 +436,4 @@ platform_details:
amiga_forever: "amiga-os-{version}.rom"
tosec: "Kickstart v{version} rev {rev} ({year})(Commodore)({model}).rom"
scan_prefixes: ["kick", "amiga-os", "KS ROM"]
source_ref: "libretro/libretro-core.c:2650-2677"
source_ref: "libretro/libretro-core.c:2653-2682"
+46 -14
View File
@@ -1,29 +1,52 @@
emulator: RPCS3
type: standalone
core_classification: official_port
source: "https://github.com/RPCS3/rpcs3"
type: standalone + libretro
core_classification: community_fork
source:
standalone: "https://github.com/RPCS3/rpcs3"
libretro: "https://git.libretro.com/libretro/rpcs3-libretro"
source_mirror: "https://github.com/WizzardSK/rpcs3-libretro"
upstream: "https://github.com/RPCS3/rpcs3"
cores:
- rpcs3
- "rpcs3-sa"
profiled_date: "2026-03-30"
source_commit: "c365ea76a552961ff078ea1a46da9d4b07729674"
core_version: "0.0.43"
profiled_date: "2026-11-09"
source_commit:
standalone: "47599599a4cea37f350eb0936d7c5e4de6f7bf57"
libretro: "8bafcb27ae9cbb708ed05b89d5b1a62fe87cd0ce"
core_version:
standalone: "0.0.43"
libretro: "v0.0.43-20243"
version_basis:
kind: file
path: "rpcs3/rpcs3_version.cpp"
pattern: 'utils::version version\{\s*(\d+),\s*(\d+),\s*(\d+),'
format: "{1}.{2}.{3}"
standalone:
kind: file
path: "rpcs3/rpcs3_version.cpp"
pattern: 'utils::version version\{\s*(\d+),\s*(\d+),\s*(\d+),'
format: "{1}.{2}.{3}"
libretro:
kind: file
path: "rpcs3/libretro/upstream.version"
pattern: '^RPCS3_VERSION=(\S+)'
display_name: "Sony - PlayStation 3 (RPCS3)"
systems: [sony-playstation-3]
files:
- name: PS3UPDAT.PUP
required: true
mode: standalone
storage: large_file
source_ref: "rpcs3/Loader/PUP.cpp:23-77"
source_ref:
standalone: "rpcs3/Loader/PUP.cpp:23-77"
note: "PUP firmware package. Validated via SCEUF magic + HMAC-SHA1 per entry. Extracted to dev_flash/ at install time."
- name: PS3UPDAT.PUP
path: "rpcs3/PS3UPDAT.PUP"
required: true
mode: libretro
storage: large_file
source_ref:
libretro: "rpcs3/libretro/libretro_core.cpp:1442-1464, rpcs3/libretro/libretro_core.cpp:1938-1971, rpcs3/libretro/libretro_firmware.cpp:27-115, rpcs3/libretro/libretro_firmware.cpp:140-144"
note: "Looked for in system/rpcs3/, then system/, then system/rpcs3/firmware/, under any case of the name. Installed into system/rpcs3/dev_flash/ at core load whenever dev_flash/sys/external/liblv2.sprx is absent, then no longer read."
# dev_flash filesystem layout extracted from PUP
dev_flash:
# -- sys/external/ : LLE firmware SPRX modules --
@@ -202,7 +225,7 @@ dev_flash:
# -- data/font/ : System fonts --
fonts:
path: "dev_flash/data/font/"
source_ref: "rpcs3/Emu/Cell/Modules/cellFont.cpp:226-281"
source_ref: "rpcs3/Emu/Cell/Modules/cellFont.cpp:232-287"
note: >
PS3 system fonts used by cellFont API. Loaded from dev_flash/data/font/
and dev_flash/data/font/SONY-CC/ subdirectory. Games using cellFont will
@@ -242,7 +265,7 @@ dev_flash:
# -- ps1emu/ : PS1 backward compatibility --
ps1emu:
path: "dev_flash/ps1emu/"
source_ref: "rpcs3/Emu/System.cpp:2252"
source_ref: "rpcs3/Emu/System.cpp:2248"
note: "PS1 Classics emulator. Booted when running PS1 game via ps1_newemu.self"
files:
- {name: "ps1_newemu.self", purpose: "PS1 emulator binary"}
@@ -258,7 +281,7 @@ dev_flash:
# -- pspemu/ : PSP backward compatibility --
pspemu:
path: "dev_flash/pspemu/"
source_ref: "rpcs3/Emu/System.cpp:2280, rpcs3/Crypto/key_vault.h:285-290"
source_ref: "rpcs3/Emu/System.cpp:2276, rpcs3/Crypto/key_vault.h:285-290"
note: "PSP emulator for PS3. Contains psp_emulator.self, psp_translator.self, and release/*.sprx"
files:
- {name: "psp_emulator.self", purpose: "PSP emulator main binary"}
@@ -291,6 +314,15 @@ dev_flash3:
note: "Third flash partition"
notes: |
The libretro build is WizzardSK's rpcs3-libretro, which the buildbot builds
from libretro/rpcs3-libretro on git.libretro.com. It carries RPCS3's
emulation code merged up to ab412d5d (rpcs3/libretro/upstream.version) and
keeps its config, caches, dev_hdd0 and dev_flash under system/rpcs3/
(rpcs3/libretro/libretro_core.cpp:1880-1893, 1925-1936). The PUP is found
and installed by the core itself, with no prompt, and the game database,
patches and vblank unlock list are embedded in the binary
(rpcs3/libretro/CMakeLists.txt:16-28).
RPCS3 requires the official PS3 firmware (PS3UPDAT.PUP) from Sony. The PUP file is
a signed update package containing multiple TAR archives prefixed with "dev_flash_".
During installation, RPCS3 extracts these TARs into the dev_flash/ directory structure.
+68 -66
View File
@@ -4,8 +4,8 @@ core_classification: game_engine
source: "https://github.com/vpinball/vpinball"
upstream: "https://github.com/vpinball/vpinball"
profiled_date: "2026-10-27"
source_commit: "63770cd66eee66c84c10ba2f4d2edff918ab85d3"
prose_written_at: "63770cd66eee66c84c10ba2f4d2edff918ab85d3"
source_commit: "375b2d0a30d8f574489abb9ffd592b055522e8e6"
prose_written_at: "375b2d0a30d8f574489abb9ffd592b055522e8e6"
core_version: "10.8.1"
version_basis:
kind: file
@@ -26,17 +26,19 @@ notes: |
program, read through POLE (src/parts/pintable.cpp:1550-1553), and a .vpz
pack, a zip or a plain folder of JSON part files, is read through the JSON
serializer instead (src/parts/pintable.cpp:1459,
src/utils/JSONSerializer.cpp:1096-1102). Every build other than the Windows
src/utils/JSONSerializer.cpp:1244-1250). Every build other than the Windows
editor compiles the shared source set with __STANDALONE__ and links
libwinevbs, Wine's VBScript engine with its COM and ATL headers, beside SDL3,
SDL3_ttf, FreeImage, hidapi, libspatialaudio and libmysofa with zlib
(make/CMakeLists_app.txt:558-579,630-640, make/CMakeLists_sources.txt:829-835).
SDL3_ttf, FreeImage, hidapi, opusfile with opus and ogg, libspatialaudio and
libmysofa with zlib (make/CMakeLists_app.txt:579-604,655-668, make/CMakeLists_sources.txt:854-860).
AlphaDMD, AltSound, B2S, BAM (Windows only), DMDUtil, DOF, FlexDMD,
HelloScript, HelloWorld, Inspector, Nixie, PinMAME, PUP, RemoteControl, Serum,
UpscaleDMD, VNI and WMP are plugins staged in plugins/ next to the binary, ../PlugIns on macOS
(make/CMakeLists_plugins.txt:21-25,39-56). The player scans that folder and
loads every subfolder whose plugin.cfg names a library for the running
platform (src/core/player.cpp:145, src/core/FileLocator.cpp:216-222,
(make/CMakeLists_plugins.txt:21-25,55-72). The player scans that folder, then
plugins/ under the preferences folder when it exists, the first plugin found
for an id winning, and loads every subfolder whose plugin.cfg names a
library for the running platform (src/core/player.cpp:198-199,
src/core/FileLocator.cpp:214-220, src/core/FileLocator.cpp:230-236,
plugins/plugins/MsgPluginManager.cpp:425-436).
ES-DE finds VPinballX_BGFX or VPinballX_GL and
runs `<binary> -play <rom>`, Batocera builds the standalone tree at
@@ -51,26 +53,26 @@ notes: |
everything in the application folder, which is the legacy Windows 9x
behaviour. Which one applies is decided by where VPinballX.ini is found: in
the preferences folder gives AppPrefData, else beside the executable gives
AppOnly, else AppPrefData (src/core/FileLocator.h:11-25,60,66-69,
src/core/FileLocator.cpp:195-206). The preferences folder is the SDL
AppOnly, else AppPrefData (src/core/FileLocator.h:12-26,67,73-76,
src/core/FileLocator.cpp:201-212). The preferences folder is the SDL
preference path for VPinballX with a major.minor subfolder
(src/core/FileLocator.cpp:46-53). Batocera's 001-default-path.patch
(src/core/FileLocator.cpp:52-59). Batocera's 001-default-path.patch
redirects the PinMAME root from $HOME/.pinmame to <prefpath>/pinmame.
Table scripts pull their libraries through SearchScript, which walks ten
locations in order, each case-insensitively: the table's own folder, then
user/ and scripts/ beside it, then the installation folder with user/,
scripts/ and tables/ under it, then the preferences folder with user/ and
scripts/ under it (src/core/FileLocator.cpp:400-433,
scripts/ under it (src/core/FileLocator.cpp:414-447,
src/core/ScriptGlobalTable.cpp:396-425). The
scripts/ directory the build ships carries the 73 .vbs files tables include
by name, core.vbs and controller.vbs beside the per-manufacturer machine
scripts (WPC.vbs, sam.vbs, s11.vbs, zac.vbs and the rest), copied from
src/scripts (make/CMakeLists_app.txt:656-660). The Windows editor's
src/scripts (make/CMakeLists_app.txt:684-688). The Windows editor's
completion parser asks for core.vbs through the same search without a table,
so in the seven installation and preferences locations, and shows a warning
box when none holds it (src/ui/win/codeview.cpp:2053-2061,
src/core/FileLocator.cpp:238-245).
src/core/FileLocator.cpp:252-259).
Table scripts also read four directory properties. UserDirectory is the
table's user folder, created on demand, TablesDirectory the system documents
folder or the installation folder when SDL reports none, MusicDirectory the
@@ -78,51 +80,51 @@ notes: |
under the installation folder. MusicDirectory falls back to the folders
10.8 searched, listed under table music below. Each fails when its
directory does not exist (src/core/ScriptGlobalTable.cpp:120-148, 427-480,
src/core/FileLocator.cpp:251-259).
src/core/FileLocator.cpp:265-273).
In AppPrefData mode user/, music/, cache/<table name>/ and autosave/ sit
beside the table. A folder missing there on a read is looked up the AppOnly
way, where user/ hangs off the installation folder, the cache sits under
Cache/<table name> in the preferences folder and music/ is tried under the
installation folder, the table folder, then the preferences folder
(src/core/FileLocator.cpp:267-398).
(src/core/FileLocator.cpp:281-412).
The rest of the install tree is read the same way and ships with the binary:
assets/ holds BallEnv.exr, AODither.webp and EnvMap.webp, the first two
loaded with no fallback (src/renderer/Renderer.cpp:178-190),
loaded with no fallback (src/renderer/Renderer.cpp:165-177),
the bumper and kicker textures (src/parts/bumper.cpp:150,162,171,186,
src/parts/kicker.cpp:200-241), the segment display textures, each with a
<name>-cov.png coverage atlas loaded beside it and dropped when its width is
not twice the texture's (src/renderer/Renderer.cpp:1580-1595,1674-1717),
not twice the texture's (src/renderer/Renderer.cpp:968-983,1068-1111),
TableSizes.csv, the table size
database (src/core/TableDB.cpp:16), vpinball.png for the window icon
(src/renderer/Window.cpp:280), LiberationSans-Regular.ttf, the font textboxes
(src/renderer/Window.cpp:287), LiberationSans-Regular.ttf, the font textboxes
and decals fall back to when neither the table folder, as
<FontName>-<Style>.ttf, nor the table file carries the font, nor on builds
with the Windows SDK an installed font matches
(src/renderer/TextRenderer.cpp:125-198), and which PUP adds after the fonts
of a pack's FONTS folder (plugins/pup/PUPManager.cpp:476-483),
fabian-hrir.sofa, listed below, the editor/ part icons
(src/ui/live/editor/EditorChrome.cpp:200) and four starter tables, the
(src/ui/live/EditorUI.cpp:1934-1965) and four starter tables, the
.vpz folder packs blankTable.vpz, exampleTable.vpz, lightSeqTable.vpz and
strippedTable.vpz: the live editor loads blankTable.vpz when started without a table or when
the requested one fails to load, and its New Table menu loads any of the
four (src/core/AppCommands.cpp:302-308, src/ui/live/EditorUI.cpp:340-359).
four (src/core/AppCommands.cpp:302-308, src/ui/live/EditorUI.cpp:439-458).
OpenGL builds also get shaders-10.8.1/, the .glfx and .fxh sources parsed at
runtime (src/core/FileLocator.cpp:223, src/renderer/Shader.cpp:1807-1808,2211-2214,
make/CMakeLists_app.txt:662-672), and the directory is not copied for the BGFX
runtime (src/core/FileLocator.cpp:237, src/renderer/Shader.cpp:1648-1649,2052-2055,
make/CMakeLists_app.txt:690-700), and the directory is not copied for the BGFX
renderer. Four plugins carry resources of their own: plugins/flexdmd/assets/
holds the bitmap fonts UltraDMD asks for by resource name, the
FlexDMD.Resources. prefix being stripped before the lookup
(plugins/flexdmd/UltraDMD.cpp:20-24,32-34,
plugins/flexdmd/resources/AssetManager.cpp:103-109,260-280),
plugins/flexdmd/resources/AssetManager.cpp:103-109,262-282),
plugins/nixie/layouts/ the default .nix layouts and the glass textures they
name (plugins/nixie/NixiePlugin.cpp:96-110, plugins/nixie/Nixie.cpp:45-65,104-129),
plugins/inspector/assets/ the pages of the inspector's web server
(plugins/inspector/InspectorPlugin.cpp:618-626), and plugins/pinmame/ the
memmaps/ and gamedefs/ trees the platform scripts fetch from
tomlogic/pinball-memory-maps at 68c1b33 and vpinball/pinmame-game-defs at
6eece7e (make/CMakeLists_plugin_PinMAME.txt:115-122, platforms/config.sh:12-13,
platforms/linux-x64/external.sh:252-258,558-561).
tomlogic/pinball-memory-maps at f0c4220 and vpinball/pinmame-game-defs at
3ae4115 (make/CMakeLists_plugin_PinMAME.txt:115-122, platforms/config.sh:11-13,
platforms/linux-x64/external.sh:271-277,757-760).
Two parts of that tree ship without a reader on the desktop targets.
docs/Changelog.txt is read by the About dialog
@@ -132,7 +134,7 @@ notes: |
make/CMakeLists_app.txt:78-80), and assets/web/, vpx.html with its scripts
and style sheets, is served by the web server that only the iOS and Android
library build compiles (lib/src/WebServer.cpp:92-99,
make/CMakeLists_sources.txt:837-845, make/CMakeLists_app.txt:702).
make/CMakeLists_sources.txt:862-870, make/CMakeLists_app.txt:730).
PinMAME is where the emulation happens. Tables that recreate a real solid
state machine hand a ROM name to the controller, which resolves its root as
@@ -140,18 +142,18 @@ notes: |
PinMAMEPath setting, else $HOME/.pinmame on Linux and macOS, <prefpath>/pinmame
on iOS and Android, and the registered Visual PinMAME install folder with its
registry folder settings on Windows
(plugins/pinmame/PinMAMEPlugin.cpp:226,284-304,447-519). libpinmame then hangs
(plugins/pinmame/PinMAMEPlugin.cpp:237,295-315,458-530). libpinmame then hangs
roms, nvram, samples, cfg, hi, inp, memcard and sta off that root
(pinmame src/libpinmame/libpinmame.cpp:88-94,1324-1329) and reads alias.txt
(pinmame src/libpinmame/libpinmame.cpp:88-94,1326-1331) and reads alias.txt
from it, a list that renames a requested game before the driver lookup
(pinmame src/libpinmame/libpinmame.cpp:364-397,403-406). A memmaps folder,
(pinmame src/libpinmame/libpinmame.cpp:366-399,405-408). A memmaps folder,
beside roms/ in the table's pinmame folder, under the PinMAMEPath setting or
shipped in the plugin folder, is scanned for an index.json that maps the ROM
name to an NVRAM memory map, loaded with the platforms/<platform>.json it
names, and a gamedefs folder found the same way supplies
catalog/pinmame.json, which maps the driver to a game definition naming the
machine's inputs and outputs (plugins/pinmame/PinMAMEPlugin.cpp:455-482,
plugins/pinmame/Controller.cpp:188-288).
machine's inputs and outputs (plugins/pinmame/PinMAMEPlugin.cpp:466-493,
plugins/pinmame/Controller.cpp:196-296).
A ROM set is one zip per machine, and every ROM is looked up in the game's
zip first, then up its parent chain (pinmame src/common.c:1379-1386).
@@ -171,20 +173,20 @@ notes: |
(pinmame src/common.c:276), the two files that register that option live in
src/windows/config.c and src/unix/sound.c and neither is in the libpinmame
source list, and PinmameSetConfig zeroes the whole options struct
(pinmame src/libpinmame/libpinmame.cpp:1315). Independently, SAMPLESINTERFACE
(pinmame src/libpinmame/libpinmame.cpp:1317). Independently, SAMPLESINTERFACE
is defined in the PinMAME tree (pinmame src/wpc/wpcsam.h:23) and no driver
references it. history.dat and mameinfo.dat (pinmame src/datafile.c:619-623,
649-653) are read only by displayhistory, a page of the MAME on-screen menu
(pinmame src/usrintrf.c:2846-2851), and by the listing path in
pinmame src/info.c:820 which libpinmame never calls. VPX passes NULL for
fn_IsKeyPressed, the thirteenth member of PinmameConfig
(plugins/pinmame/PinMAMEPlugin.cpp:421-437, pinmame src/libpinmame/libpinmame.h:482-498),
(plugins/pinmame/PinMAMEPlugin.cpp:432-448, pinmame src/libpinmame/libpinmame.h:483-499),
so osd_is_key_pressed always answers 0
(pinmame src/libpinmame/libpinmame.cpp:582-588) and the menu cannot be opened.
(pinmame src/libpinmame/libpinmame.cpp:584-590) and the menu cannot be opened.
The pinmame observations were read at d5e1921db1ff34e1ff3e744e1480c5de799a7b86,
the revision the build scripts fetch (platforms/config.sh:11), and the libdof
ones at 5c54ef784ddc31738a9b2a422380f170bd63121b (platforms/config.sh:17).
The pinmame observations were read at 20a1d01ab83c5f5571bf0304ae45971bf6220a27,
the revision the build scripts fetch (platforms/config.sh:11-13), and the libdof
ones at 5c54ef784ddc31738a9b2a422380f170bd63121b (platforms/config.sh:20).
files:
@@ -373,7 +375,7 @@ files:
category: game_data
required: false
description: "MAME high score memory map database, read once per machine start"
source_ref: "pinmame src/hiscore.c:18, 223-230, pinmame src/cpuexec.c:332-334, 393, 1782, src/core/player.cpp:442-444"
source_ref: "pinmame src/hiscore.c:18, 223-230, pinmame src/cpuexec.c:332-334, 393, 1782, src/core/player.cpp:503-505"
note: >-
hs_open is called unconditionally at the top of cpu_run for every PinMAME
machine, and the whole body sits behind `if (f)`, so an absent file is a
@@ -381,7 +383,7 @@ files:
the player sets to the table's own folder: libpinmame sets paths for eight
file types and FILETYPE_HIGHSCORE_DB is not among them, and the option
table that would supply a default is linked only by the Windows COM build
(pinmame src/libpinmame/libpinmame.cpp:88-94,1324-1329,
(pinmame src/libpinmame/libpinmame.cpp:88-94,1326-1331,
pinmame src/libpinmame/fileio.c:147, pinmame src/win32com/VPinMAMEConfig.cpp:128).
- name: cheat.dat
@@ -389,7 +391,7 @@ files:
category: game_data
required: false
description: "MAME cheat database, read when the PinMAME plugin's Cheat setting is on"
source_ref: "pinmame src/cheat.c:8434, 8602-8614, pinmame src/mame.c:595-601, pinmame src/libpinmame/libpinmame.cpp:1388-1391, plugins/pinmame/PinMAMEPlugin.cpp:227, plugins/pinmame/PinMAMEPlugin.cpp:539, plugins/pinmame/Controller.cpp:167"
source_ref: "pinmame src/cheat.c:8434, 8602-8614, pinmame src/mame.c:595-601, pinmame src/libpinmame/libpinmame.cpp:1390-1393, plugins/pinmame/PinMAMEPlugin.cpp:238, plugins/pinmame/PinMAMEPlugin.cpp:550, plugins/pinmame/Controller.cpp:175"
note: >-
Off by default: PinmameSetConfig zeroes options, and the plugin's Cheat
setting, false unless the user changes it, is handed to PinmameSetCheat
@@ -406,7 +408,7 @@ files:
sha1: "5bf46cfb6472b81f4aa7fb2c87bc79afc23109d7"
md5: "b98b60a050e3c2edfa7a59863c625c61"
description: "FABIAN full-sphere HRIR set, the HRTF of the binaural spatial audio renderer"
source_ref: "src/audio/SpatialAudio.cpp:49-56, 344-361, make/CMakeLists_app.txt:656-660"
source_ref: "src/audio/SpatialAudio.cpp:49-56, 344-361, make/CMakeLists_app.txt:684-688"
note: >-
Read from assets/ under the installation folder when libspatialaudio is
built with libmysofa, which every build script does. The headphone and VR
@@ -437,10 +439,10 @@ files:
required: false
bundled: true
description: "NVRAM memory maps, index.json with the maps/ and platforms/ files it names"
source_ref: "plugins/pinmame/PinMAMEPlugin.cpp:475-482, plugins/pinmame/Controller.cpp:188-246, make/CMakeLists_plugin_PinMAME.txt:115-122, platforms/config.sh:12, platforms/linux-x64/external.sh:252-254, 558-559"
source_ref: "plugins/pinmame/PinMAMEPlugin.cpp:486-493, plugins/pinmame/Controller.cpp:196-254, make/CMakeLists_plugin_PinMAME.txt:115-122, platforms/config.sh:12, platforms/linux-x64/external.sh:271-273, 757-758"
note: >-
From tomlogic/pinball-memory-maps at
68c1b3373ba74cd07f42fba9d56db63ea28212dc, which every platform script
f0c422099f0b50b69bfdf6d071a6653a8b25a6fd, which every platform script
fetches and copies as index.json, maps/ and platforms/. The plugin falls
back to this folder when neither the table's pinmame folder nor the
PinMAMEPath setting holds a memmaps folder. Without one no memory map is
@@ -453,10 +455,10 @@ files:
required: false
bundled: true
description: "PinMAME game definitions, catalog/pinmame.json, the machines/ files it names and the controllers/ files those reference"
source_ref: "plugins/pinmame/PinMAMEPlugin.cpp:475-482, plugins/pinmame/Controller.cpp:248-288, make/CMakeLists_plugin_PinMAME.txt:115-122, platforms/config.sh:13, platforms/linux-x64/external.sh:256-258, 560-561"
source_ref: "plugins/pinmame/PinMAMEPlugin.cpp:486-493, plugins/pinmame/Controller.cpp:256-296, make/CMakeLists_plugin_PinMAME.txt:115-122, platforms/config.sh:13, platforms/linux-x64/external.sh:275-277, 759-760"
note: >-
From vpinball/pinmame-game-defs at
6eece7e53de9463bf783b9476ce3aeb98e2e7256, which every platform script
3ae4115314e6a555380f750336487db96d213d06, which every platform script
fetches and copies as catalog/, machines/ and controllers/. The plugin
falls back to this folder the same way as memmaps. Without
catalog/pinmame.json PinMAME receives an empty game definition and the
@@ -468,21 +470,21 @@ analysis:
Copied into the build output next to the executable and installed as one
unit by every distribution, so they arrive with the emulator rather than
being sourced separately.
source_ref: "make/CMakeLists_app.txt:656-660"
source_ref: "make/CMakeLists_app.txt:684-688"
entries:
- what: "scripts/, the .vbs library tables include"
source_ref: "src/core/FileLocator.cpp:400-433, src/core/ScriptGlobalTable.cpp:396-425, src/ui/win/codeview.cpp:2053-2061"
source_ref: "src/core/FileLocator.cpp:414-447, src/core/ScriptGlobalTable.cpp:396-425, src/ui/win/codeview.cpp:2053-2061"
- what: "assets/, textures, segment display maps, TableSizes.csv, the window icon, the fallback font, the editor icons"
source_ref: "src/renderer/Renderer.cpp:178-190, src/renderer/Renderer.cpp:1580-1595, src/renderer/Renderer.cpp:1674-1717, src/parts/bumper.cpp:150, 162, src/parts/bumper.cpp:171, src/parts/bumper.cpp:186, src/parts/kicker.cpp:200-241, src/core/TableDB.cpp:16, src/renderer/Window.cpp:280, src/renderer/TextRenderer.cpp:186-187, plugins/pup/PUPManager.cpp:480-482, src/ui/live/editor/EditorChrome.cpp:200"
source_ref: "src/renderer/Renderer.cpp:165-177, src/renderer/Renderer.cpp:968-983, src/renderer/Renderer.cpp:1068-1111, src/parts/bumper.cpp:150, 162, src/parts/bumper.cpp:171, src/parts/bumper.cpp:186, src/parts/kicker.cpp:200-241, src/core/TableDB.cpp:16, src/renderer/Window.cpp:287, src/renderer/TextRenderer.cpp:186-187, plugins/pup/PUPManager.cpp:480-482, src/ui/live/EditorUI.cpp:1934-1965"
- what: "assets/blankTable.vpz, exampleTable.vpz, lightSeqTable.vpz, strippedTable.vpz, folder packs of JSON part files"
source_ref: "src/core/AppCommands.cpp:302-308, src/ui/live/EditorUI.cpp:340-359"
source_ref: "src/core/AppCommands.cpp:302-308, src/ui/live/EditorUI.cpp:439-458"
note: "The live editor's default table and its four New Table templates."
- what: "shaders-10.8.1/, .glfx and .fxh parsed at runtime by the OpenGL renderer"
source_ref: "src/core/FileLocator.cpp:223, src/renderer/Shader.cpp:1807-1808, src/renderer/Shader.cpp:2211-2214, make/CMakeLists_app.txt:662-672"
source_ref: "src/core/FileLocator.cpp:237, src/renderer/Shader.cpp:1807-1808, src/renderer/Shader.cpp:2211-2214, make/CMakeLists_app.txt:690-700"
- what: "plugins/<name>/plugin.cfg, the descriptor naming each plugin's library"
source_ref: "src/core/player.cpp:145, plugins/plugins/MsgPluginManager.cpp:425-436"
source_ref: "src/core/player.cpp:198, plugins/plugins/MsgPluginManager.cpp:425-436"
- what: "plugins/flexdmd/assets/, the bitmap fonts UltraDMD names as FlexDMD.Resources.*"
source_ref: "plugins/flexdmd/UltraDMD.cpp:20-24,32-34, plugins/flexdmd/resources/AssetManager.cpp:103-109,260-280, make/CMakeLists_plugin_FlexDMD.txt:179-182"
source_ref: "plugins/flexdmd/UltraDMD.cpp:20-24,32-34, plugins/flexdmd/resources/AssetManager.cpp:103-109,262-282, make/CMakeLists_plugin_FlexDMD.txt:179-182"
- what: "plugins/nixie/layouts/, the default .nix score display layouts and their glass textures"
source_ref: "plugins/nixie/NixiePlugin.cpp:96-110, plugins/nixie/Nixie.cpp:45-65,104-129, make/CMakeLists_plugin_Nixie.txt:92-95"
note: >-
@@ -492,7 +494,7 @@ analysis:
- what: "plugins/inspector/assets/, the inspector web pages"
source_ref: "plugins/inspector/InspectorPlugin.cpp:618-626, make/CMakeLists_plugin_Inspector.txt:96"
- what: "plugins/pinmame/memmaps/ and plugins/pinmame/gamedefs/, the NVRAM memory maps and game definitions"
source_ref: "make/CMakeLists_plugin_PinMAME.txt:115-122, plugins/pinmame/PinMAMEPlugin.cpp:475-482, platforms/config.sh:12-13, platforms/linux-x64/external.sh:252-258, 558-561"
source_ref: "make/CMakeLists_plugin_PinMAME.txt:115-122, plugins/pinmame/PinMAMEPlugin.cpp:486-493, platforms/config.sh:11-13, platforms/linux-x64/external.sh:271-277, 757-760"
note: >-
Copied only when the platform script has fetched them into
third-party/: index.json, maps/ and platforms/ from
@@ -504,17 +506,17 @@ analysis:
note: "Copied into the build output but unreachable in the desktop standalone binary"
entries:
- what: "docs/Changelog.txt"
source_ref: "src/ui/win/dialogs/AboutDialog.cpp:34, src/core/stdafx.h:36-40, src/core/AppCommands.cpp:14-18, make/CMakeLists_app.txt:659"
source_ref: "src/ui/win/dialogs/AboutDialog.cpp:34, src/core/stdafx.h:36-40, src/core/AppCommands.cpp:14-18, make/CMakeLists_app.txt:687"
note: "The About dialog belongs to the Windows editor, compiled out of every standalone build."
- what: "assets/web/, vpx.html and the files it pulls"
source_ref: "lib/src/WebServer.cpp:92-99, make/CMakeLists_sources.txt:837-845"
source_ref: "lib/src/WebServer.cpp:92-99, make/CMakeLists_sources.txt:862-870"
note: "The web server is compiled into the iOS and Android library build only."
user_supplied_paths:
note: "Per table, keyed on the table folder or the ROM name"
entries:
- what: "PinMAME ROM sets, <pinmame root>/roms/<romname>.zip"
source_ref: "plugins/pinmame/PinMAMEPlugin.cpp:447-519, pinmame src/libpinmame/libpinmame.cpp:89, 1324-1326"
source_ref: "plugins/pinmame/PinMAMEPlugin.cpp:458-530, pinmame src/libpinmame/libpinmame.cpp:89, 1326-1328"
note: >-
One zip per machine. The root is the pinmame folder beside the table
when it holds roms/, else the PinMAMEPath setting, else $HOME/.pinmame
@@ -524,15 +526,15 @@ analysis:
rompath, nvram, samples, cfg and hiscore registry settings replace
the default subfolders.
- what: "PinMAME game aliases, <pinmame root>/alias.txt"
source_ref: "pinmame src/libpinmame/libpinmame.cpp:364-397,403-406"
source_ref: "pinmame src/libpinmame/libpinmame.cpp:366-399,405-408"
note: "Optional. Each line pairs a requested game name with the ROM set loaded in its place."
- what: "NVRAM memory maps, memmaps/index.json and the map files it names"
source_ref: "plugins/pinmame/PinMAMEPlugin.cpp:458, plugins/pinmame/PinMAMEPlugin.cpp:469-470, plugins/pinmame/PinMAMEPlugin.cpp:478-479, plugins/pinmame/Controller.cpp:188-246"
source_ref: "plugins/pinmame/PinMAMEPlugin.cpp:469, plugins/pinmame/PinMAMEPlugin.cpp:480-481, plugins/pinmame/PinMAMEPlugin.cpp:489-490, plugins/pinmame/Controller.cpp:196-254"
note: >-
Optional. index.json maps the ROM name to a map file, whose
_metadata.platform names the platforms/<platform>.json loaded with it.
- what: "game definitions, gamedefs/catalog/pinmame.json and the definition it names"
source_ref: "plugins/pinmame/PinMAMEPlugin.cpp:459, plugins/pinmame/PinMAMEPlugin.cpp:471-472, plugins/pinmame/PinMAMEPlugin.cpp:480-481, plugins/pinmame/Controller.cpp:248-288"
source_ref: "plugins/pinmame/PinMAMEPlugin.cpp:470, plugins/pinmame/PinMAMEPlugin.cpp:482-483, plugins/pinmame/PinMAMEPlugin.cpp:491-492, plugins/pinmame/Controller.cpp:256-296"
note: "Optional. The catalog's drivers array maps the ROM name to a definition file under gamedefs/."
- what: "backglass, <table basename>.directb2s, else <table folder name>.directb2s"
source_ref: "plugins/b2s/B2SServer.cpp:321-327, plugins/b2s/B2SServer.cpp:450-467, plugins/b2s/B2SServer.cpp:491-495, plugins/b2s/B2SPlugin.cpp:76"
@@ -542,7 +544,7 @@ analysis:
the file through a temporary file renamed over it
(plugins/b2s/B2SServer.cpp:111-113).
- what: "Serum colorizations, <table folder>/serum/<rom>/<rom>.cROMc or .cRZ, else the SerumPath setting"
source_ref: "plugins/serum/serum.cpp:51,727-771"
source_ref: "plugins/serum/serum.cpp:51,743-787"
note: "A namespace folder may sit above the ROM folder, and PinMAME games are also looked up in <table folder>/pinmame/altcolor."
- what: "VNI colorizations, <table folder>/vni/<rom>/<rom>.pal with an optional .vni, else the VniPath setting"
source_ref: "plugins/vni/vni.cpp:39,326-376"
@@ -567,7 +569,7 @@ analysis:
source_ref: "plugins/dof/DOFPlugin.cpp:288-293, libdof src/DOF.cpp:36-45"
note: "The global configuration names the cabinet and table configuration files libdof reads next."
- what: "table music, music/ beside the table"
source_ref: "src/core/ScriptGlobalTable.cpp:120-148, src/core/ScriptGlobalTable.cpp:150-190, src/core/FileLocator.cpp:267-398"
source_ref: "src/core/ScriptGlobalTable.cpp:120-148, src/core/ScriptGlobalTable.cpp:150-190, src/core/FileLocator.cpp:281-412"
note: >-
An absolute path passed by the script is tried first. In the legacy
layout, music/ under the installation folder, then the table folder,
@@ -590,7 +592,7 @@ analysis:
generated_files:
- what: "VPinballX.ini, the settings file"
source_ref: "src/core/VPApp.cpp:293-307, src/core/AppCommands.cpp:558-564"
source_ref: "src/core/VPApp.cpp:297-311, src/core/AppCommands.cpp:624-630"
note: >-
Looked up in the preferences folder, then beside the binary. When
neither holds one the preferences path is kept. -Ini names another file.
@@ -599,8 +601,8 @@ analysis:
- what: "VPReg.ini, values saved by table scripts in the table's user folder, and vpinball.log in the preferences folder"
source_ref: "src/core/ScriptGlobalTable.cpp:583-616, src/utils/Logger.cpp:160-161"
- what: "<table>.info, the frontend information file beside the table"
source_ref: "src/parts/pintable.cpp:1125-1136, src/parts/pintable.cpp:1202-1227, src/parts/pintable.h:619-620, src/core/player.cpp:992, src/core/player.cpp:1006"
source_ref: "src/parts/pintable.cpp:1125-1136, src/parts/pintable.cpp:1202-1227, src/parts/pintable.h:619-620, src/core/player.cpp:1054, src/core/player.cpp:1068"
note: "Only its VPX section is written, with the run count, the last run date and the play time."
- what: "PinMAME state: nvram/, cfg/, hi/, inp/, memcard/ and sta/"
source_ref: "pinmame src/libpinmame/libpinmame.cpp:90,92-93,1327-1329"
source_ref: "pinmame src/libpinmame/libpinmame.cpp:90,92-93,1329-1331"
note: "Written by PinMAME as the machine runs."
+108 -81
View File
@@ -3,16 +3,16 @@ type: standalone
core_classification: community_fork
source: "https://github.com/xenios-jp/XeniOS"
upstream: "https://github.com/has207/xenia-edge"
source_branch: preview
source_commit: "87b176a078c316fde3adf67a217f0c44615b0e0d"
upstream_commit: "07021f019cf55105bc26c0474e0b0835808353e2"
profiled_date: "2026-08-23"
core_version: "v2.0.1-2-g87b176a"
source_commit: "cf7c7ee452314913124d205e41e325b33891aacb"
upstream_commit: "3ff76c9696f3f350c1eb61bd7523ddc209ac4682"
upstream_frozen: "XeniOS is not a GitHub fork of xenia-edge, so no compare API names the merge base. 3ff76c96 is the merge base of the two branches read from their histories, the newest edge commit the xenios branch carries."
profiled_date: "2026-11-09"
core_version: "release-v2.3.1-build-11662"
version_basis:
kind: tag
match: "v[0-9]*.[0-9]*.[0-9]*"
tag: "v2.0.1"
distance: 2
match: "release-v*"
tag: "release-v2.3.1-build-11662"
distance: 0
display_name: "Microsoft - Xbox 360 (XeniOS)"
cores:
- "xenios"
@@ -23,95 +23,122 @@ mode: standalone
notes: |
Apple-focused fork of Xenia, based on Xenia Edge at their merge base
07021f0 (upstream_commit), published from the preview branch as
xenios_macos_apple_silicon.dmg, xenios_macos_intel.dmg,
xenios_macos_universal.dmg and xenios_ios_iphone_ipad.ipa. The macOS build
names its bundle and executable Xenia-edge, the iOS build XeniOS
(src/xenia/app/CMakeLists.txt:11-13, 175, 339-341). ES-DE runs it through the
XENIOS rule with the ROM and an optional .commands file of extra arguments.
3ff76c9 (upstream_commit), published from the default xenios branch as
xenios_macos_apple_silicon.dmg and xenios_ios_iphone_ipad.ipa (release
2.3.1, build 11662, tagged on cf7c7ee). The macOS CMake build keeps the
Xenia-edge bundle and executable name (src/xenia/app/CMakeLists.txt:14-19,
180-182) and tools/build_apple_release.sh renames the packaged app to
XeniOS.app with executable XeniOS (tools/build_apple_release.sh:540-562).
The iOS build is defined in cmake/ios/App.cmake and is named XeniOS there
(cmake/ios/App.cmake:19-22). ES-DE runs it through the XENIOS rule with the
ROM and an optional .commands file of extra arguments.
The 2.0.1 disk image holds one bundle: beside its code signature it carries
Info.plist, MacOS/Xenia-edge, Resources/AppIcon.icns, Resources/Assets.car
and two dylibs under Contents/Frameworks. Rendering runs on Metal. Guest DXBC
is converted to DXIL through libdxilconv.dylib, built from the fork's own
DirectX Shader Compiler branch, then to Metal IR through Apple's Metal Shader
Converter (libmetalirconverter.dylib). Both are imported shared libraries
copied into Frameworks and reached by @rpath
(third_party/CMakeLists.txt:432-456, src/xenia/app/CMakeLists.txt:348-360),
so the code calls IRCompilerCreate and DxcCreateInstance as ordinary symbols
and never names either file
(src/xenia/gpu/metal/metal_shader_converter.cc:83,
src/xenia/gpu/metal/dxbc_to_dxil_converter.cc:103). MoltenVK is statically
The 2.3.1 disk image holds LICENSE and one bundle: beside its code
signature it carries Info.plist, MacOS/XeniOS, Resources/AppIcon.icns,
Resources/Assets.car and Frameworks/libmetalirconverter.dylib. Rendering
runs on Metal. Guest shaders go to DXIL through Mesa's spirv_to_dxil, built
by meson and linked statically (third_party/CMakeLists.txt:1254-1263), then
to Metal IR through Apple's Metal Shader Converter, an imported shared
library copied into Frameworks and reached by @rpath
(third_party/CMakeLists.txt:1502-1536,
src/xenia/app/CMakeLists.txt:188-207). The code calls IRCompilerCreate as an
ordinary symbol and never names the file
(src/xenia/gpu/metal/metal_shader_converter.cc:202). MoltenVK is statically
linked and its entry points resolve as real symbols, so the Vulkan backend
loads no loader library (src/xenia/ui/vulkan/vulkan_instance.cc:30-39,
81-83).
loads no loader library (src/xenia/ui/vulkan/vulkan_instance.cc:31-39,
82-83).
No Xbox 360 system file is read. xboxkrnl, xam and xbdm are C++ HLE modules
registered at startup (src/xenia/emulator.cc:425-427), the XEX1 and XEX2
retail keys and the zeroed devkit key are constexpr arrays tried in turn
(src/xenia/cpu/xex_module.cc:55-63, used at 344, 503 and 925-935), and every
XConfig setting is assembled from cvars and constants by BuildSetting, in a
file that makes no filesystem call at all
(src/xenia/kernel/xconfig.cc:87-246). Launching a system title symlinks
\SystemRoot to that title's own mount and resolves xam.xex, then
$flash_xam.xex, through the guest filesystem
(src/xenia/emulator.cc:744-759). spa.bin is resolved the same way inside an
installed DLC package (src/xenia/kernel/xam/content_manager.cc:31, 425-426).
The emulator runs games with no Xbox 360 system file. xboxkrnl, xam and xbdm
are C++ HLE modules registered at startup (src/xenia/emulator.cc:451-456),
the XEX1 retail and devkit keys, the XEX2 retail key and the zeroed XEX2
devkit key are constexpr arrays tried in turn
(src/xenia/cpu/xex_module.cc:63-74, used at 95, 363 and 1016-1035), and
every XConfig setting is assembled from cvars and constants by BuildSetting,
in a file that makes no filesystem call at all
(src/xenia/kernel/xconfig.cc:99-270). Launching a folder that holds its own
xam.xex or $flash_xam.xex symlinks \SystemRoot to that folder
(src/xenia/emulator.cc:877-887). spa.bin is resolved the same way inside an
installed DLC package (src/xenia/kernel/xam/content_manager.cc:40, 816-817).
The fork's data ships inside the executable. The UI font and the app icon are
linked in by xe_embed_binary_assets, and the 33 locale catalogues are
compiled from .po to .mo at configure time and packed into one compressed
bundle (src/xenia/ui/CMakeLists.txt:55-58, 60-82), which wx_locale.cc serves
through a loader that replaces the wxWidgets file-based one
(src/xenia/ui/wx_locale.cc:43-111, 139-140). The font is read from that
buffer with AddFontFromMemoryTTF (src/xenia/ui/imgui_drawer.cc:367-377), and
xe::EmbeddedBundle decodes the SDL controller mappings
(src/xenia/hid/sdl/sdl_input_driver.cc:148-166), the canary game patches
(src/xenia/patcher/patch_db.cc:304-318) and the canary.json and stable.json
compatibility lists (src/xenia/app/game_compat_db.cc:65-78).
A USB system update can be installed into <storage root>/system: the menu
downloads SystemUpdate_17559_USB.zip from Microsoft into system/download/,
checks its size and SHA-256, installs it and deletes it, or takes any USB
system update zip the user picks, refused only when it holds no
$SystemUpdate content
(src/xenia/ui/system_files_installer_wx.cc:64-69, 352-393, 395-510,
src/xenia/app/emulator_window.cc:2636-2703). The flash, sysext and sysaux
folders it writes are mounted as \Device\Flash and the two system
partitions at launch, \SystemRoot then points to the flash
(src/xenia/emulator.cc:2758-2778). The installed dashboard,
flash/dash.xex, can be booted from the menu (src/xenia/app/emulator_window.cc:2123-2135),
and XNA indie games are refused unless xna_titlelauncher.xex is found in
sysext (src/xenia/emulator.cc:1165-1178).
The fork's data ships inside the executable. The UI fonts, the app icon and
the XenonJKLatin system font that stands in for a flash font the update only
patches are linked in by xe_embed_binary_assets, and the 33 locale
catalogues are compiled from .po to .mo at configure time and packed into
one compressed bundle (src/xenia/ui/CMakeLists.txt:55-88), which
wx_locale.cc serves through a loader that replaces the wxWidgets file-based
one (src/xenia/ui/wx_locale.cc:43-111, 139-140). The font is read from that
buffer with AddFontFromMemoryTTF (src/xenia/ui/imgui_drawer.cc:375-385),
and xe::EmbeddedBundle decodes the SDL controller mappings
(src/xenia/hid/sdl/sdl_input_driver.cc:279-297), the game patches and the
edge patches (src/xenia/patcher/patch_db.cc:352-373) and the
compatibility_data.json and master.json compatibility lists
(src/xenia/app/game_compat_db.cc:47-60).
Three cvars accept a file and name none by default, so nothing is expected at
a fixed path: custom_font_path falls back to the embedded font
(src/xenia/ui/imgui_drawer.cc:39-42, 353-377), mappings_file to the embedded
controller database (src/xenia/hid/sdl/sdl_input_driver.cc:35-38, 148-166),
(src/xenia/ui/imgui_drawer.cc:39-42, 361-385), mappings_file to the embedded
controller database (src/xenia/hid/sdl/sdl_input_driver.cc:70-73, 279-297),
achievement_sound_path leaves the achievement sound silent
(src/xenia/ui/audio_helper.cc:21-24, 44-53). The first two carry an
(src/xenia/ui/audio_helper.cc:21-24, 44-54). The first two carry an
UPDATE_from_path rule that clears the earlier default out of an existing
config (src/xenia/ui/imgui_drawer.cc:43-44,
src/xenia/hid/sdl/sdl_input_driver.cc:39).
src/xenia/hid/sdl/sdl_input_driver.cc:74).
Everything under the storage root is written by the emulator or dropped in by
the user: xenia-edge.config.toml and per-title config/<title id>.config.toml
(src/xenia/config.cc:44-52), patches/*.patch.toml read on top of the embedded
set (src/xenia/patcher/patch_db.cc:29-59), plugins/<title id>/plugins.toml
Everything else under the storage root is written by the emulator or
dropped in by the user: xenia-edge.config.toml and per-title
config/<title id>.config.toml (src/xenia/config.cc:47-61),
patches/*.patch.toml read on top of the embedded set
(src/xenia/patcher/patch_db.cc:35-56), plugins/<title id>/plugins.toml
behind allow_plugins, which defaults false
(src/xenia/patcher/plugin_loader.cc:16-21, 32-34, 58-62), content, cache_host
and the per-module executable_addr_flags.bin analysis cache
(src/xenia/app/xenia_main.cc:588-613, src/xenia/cpu/xex_module.cc:1336-1343).
(src/xenia/patcher/plugin_loader.cc:16-21, 32-34, 58-64), content,
cache_host and the per-module executable_addr_flags.bin analysis cache
(src/xenia/app/xenia_main.cc:616-641, src/xenia/cpu/xex_module.cc:1521-1528).
portable.txt next to the executable keeps the storage root there instead of
the user folder (src/xenia/app/xenia_main.cc:556-570). On iOS the embedded
patches are written out to Documents/patches on first run
(src/xenia/app/xenia_main_ios.mm:226-253) and touch layouts live as
the user folder (src/xenia/app/xenia_main.cc:578-592). On iOS the embedded
patches are written out to Documents/patches
(src/xenia/app/xenia_main_ios.mm:169-216) and touch layouts live as
Documents/touch-layouts/<id>.toml, written by the layout editor
(src/xenia/ui/ios/touch/touch_layout_store_ios.mm:133-140). The only bundle
(src/xenia/ui/ios/touch/touch_layout_store_ios.mm:148-155). The only bundle
file the code opens by name is embedded.mobileprovision, absent from the
published .ipa and present only once the user has signed it, read for a
single log line reporting its size and two entitlements
(src/xenia/app/xenia_main_ios.mm:170-193).
published .ipa and present only once the user has signed it, searched for
the head-pose entitlement
(src/xenia/ui/ios/settings/ios_config_catalog.mm:37-55).
files: []
files:
- name: "SystemUpdate_17559_USB.zip"
system: microsoft-xbox-360
required: false
path: "system/download/SystemUpdate_17559_USB.zip"
size: 115992188
sha256: "38885a3ab6b9854fb4fa31d5ddf21a4fddfd4cfb25e219060cfb0c2fb31f208f"
storage: large_file
description: "Xbox 360 USB system update 17559, as Microsoft serves it"
source_ref: "src/xenia/ui/system_files_installer_wx.cc:64-69, src/xenia/ui/system_files_installer_wx.cc:352-393, src/xenia/ui/system_files_installer_wx.cc:395-510, src/xenia/app/emulator_window.cc:2636-2703"
note: "Downloaded from download.microsoft.com into system/download/ by Install System Files, kept only when its SHA-256 matches, then installed into system/flash, system/sysext and system/sysaux and deleted. A zip the user picks is installed from wherever it is, with no hash check. Games run without it. The dashboard and XNA indie games need it."
exclusion_note: >
XeniOS emulates the Xbox 360 by high-level emulation and reads no BIOS,
firmware, NAND image, flash dump or keyvault at any point: the kernel, XAM and
XeniOS emulates the Xbox 360 by high-level emulation: the kernel, XAM and
XBDM are compiled-in modules, the XEX AES keys are constant arrays and XConfig
is synthesised. Its own data (UI font, icons, locale catalogues, SDL
controller mappings, game patches, compatibility lists) is compressed into the
executable through xe_embed_binary_assets and xe_embed_compressed_bundle, so
none of it exists as a file beside the binary. The shipped bundle carries only
the executable, its property list, an icon, a compiled asset catalog and the
two shader translation dylibs. The three cvars that accept a path default to
empty and fall back to those embedded copies. libmetalirconverter.dylib and
libdxilconv.dylib are linked at build time and resolved by the loader through
@rpath, no code path names them, and they are obtained by the same download
that provides the executable.
is synthesised, so no BIOS, NAND image, flash dump or keyvault is read. The
one system file it takes is an optional USB system update, installed into
its storage root for the dashboard, the system fonts and XNA indie games.
Its own data (UI fonts, icons, locale catalogues, SDL controller mappings,
game patches, compatibility lists) is compressed into the executable through
xe_embed_binary_assets and xe_embed_compressed_bundle, so none of it exists
as a file beside the binary. libmetalirconverter.dylib is linked at build
time and resolved by the loader through @rpath, no code path names it, and
it comes with the download that provides the executable.
+8 -8
View File
@@ -21,17 +21,17 @@ notes: |
ported to libretro. It is not a general-purpose emulator: it only plays Rick Dangerous.
The core sets need_fullpath = true, valid_extensions = "*|zip", and supports launching
without content (RETRO_ENVIRONMENT_SET_SUPPORT_NO_GAME = true, libretro/core/libretro-core.c:93-97).
without content (RETRO_ENVIRONMENT_SET_SUPPORT_NO_GAME = true, libretro/core/libretro-core.c:79-83).
Game data handling works in two modes (retro_load_game, libretro/core/libretro-core.c:312-360):
Game data handling works in two modes (retro_load_game, libretro/core/libretro-core.c:389-469):
1. Content provided: the content path is passed directly as the -data argument
(line 318: snprintf "xrick" "-data" "%s"). Content can be data.zip or a directory.
(line 398: snprintf "xrick" "-data" "%s"). Content can be data.zip or a directory.
2. No content (standalone): the core builds the path {system_dir}/xrick/data.zip
using fill_pathname_join_special_ext(RETRO_DIR, "xrick", "data", ".zip") at lines
324-326. If this file is missing, a "game files missing" error is displayed (line 337)
404-406. If this file is missing, a "game files missing" error is displayed (lines 417 and 430)
and loading fails.
The fallback data path at line 359 confirms the expected location:
The path passed to the engine at line 441 confirms the expected location:
snprintf(RPATH, ... "xrick" "-data" "%s/xrick/data.zip", RETRO_DIR)
All game graphics, maps, tile data, entity tables, and screen layouts are compiled directly
@@ -45,10 +45,10 @@ notes: |
either a .zip archive (via unzip.c) or a flat directory, selected by extension detection
(data.c:56-73).
xrick.c:23 shows the hardcoded fallback: data_setpath("data.zip") when no -data argument
src/xrick.c:25 shows the hardcoded fallback: data_setpath("data.zip") when no -data argument
is provided.
system_dir is obtained via RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY (libretro/core/libretro-core.c:185-189),
system_dir is obtained via RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY (libretro/core/libretro-core.c:244-249),
falling back to "." if unavailable.
The data.zip file ships in the xrick-libretro repository root and is the original xrick
@@ -64,7 +64,7 @@ files:
size: 1457440
md5: "a471e64e9f69afbe59c10cc94ed1b184"
sha1: "ecfc092fe6371dbf38e238a8ba5f90785b5db52d"
source_ref: "source libretro/core/libretro-core.c:324-326 (path construction), source libretro/core/libretro-core.c:328-357 (missing file error), source libretro/core/libretro-core.c:441 (final path confirmation)"
source_ref: "source libretro/core/libretro-core.c:404-406 (path construction), source libretro/core/libretro-core.c:408-437 (missing file error), source libretro/core/libretro-core.c:441 (final path confirmation)"
note: "Placed in system/xrick/data.zip. Contains sounds/ directory with 29 WAV files from the original xrick 0.21212 release. Without this file, standalone mode fails with 'XRick game files missing from frontend system directory'. Ships in the libretro repo root."
analysis:
+3 -2
View File
@@ -10,7 +10,7 @@
"a5200": "89680e62646b7a9e1ba04135063cd6e6033d13f9",
"advanced_tests": "a13ebba9e3d4b1f70f882d824268152026ff184a",
"amiarcadia": "73e48e85824950f30df26673219cd5ca4548496a",
"amiberry": "e5d1f0f9a143594d893031caed9aa760ff34ce0a",
"amiberry": "ae545d85c06f011be5befc07487db3131d492c05",
"anarch": "b8fa81cda3b6e08423b27c2a919493a43dfd69e1",
"applewin": "c999c4b73ff48409acecb0239214c74f3464bcd1",
"ardens": "938877e6a867441fbab2edfd19acc3d85f4b0277",
@@ -100,7 +100,7 @@
"freechaf": "43b80752c21ca2c26b610e5890a5d8edf08d8c45",
"freeintv": "40d3bc28c03ea0c83ebe8c907aa6f61d9547f063",
"freej2me": "690600ece3290683db35eef9c753f368e3ad6c2e",
"freej2me_plus": "1437a0bc7f9aa6fcb5a1e7b07aafe046eb3d76bd",
"freej2me_plus": "c543a6cf036097822117ee799e31083767fc1869",
"frodo": "00b434e120ef8488ed82a30c01c488cc697ba091",
"fsuae": "ccbbfc85cedc9b7ab0f30702584d8b8114437f39",
"fuse": "2c53a6834974fe1d7c3e3467f57f3c7b9347eb8e",
@@ -248,6 +248,7 @@
"retrodream": "0544849053aa85007b3a4a4162501fa8ad259d9a",
"romcleaner": "6c9181472df165dab7449100f01cf6def1d9d707",
"rp6502": "128440e0c79671b0bdd13bad6b04f05ccd12492f",
"rpcs3": "18332ccf1587a210efe31435cd4b37923d79d69d",
"rust_dos": "c50392af047e750dc6ae535f791fd3a4ff4e6be9",
"rustation": "01fdab0903e30a19a0ca299fc15b8aa241843417",
"rustynes": "c1407f2957ffac8caf674a5fb0ce178c4f27bce5",
+9 -8
View File
@@ -6314,16 +6314,17 @@ class NoProfileHashFromASecondarySource(unittest.TestCase):
self.assertEqual(found, [])
class XeniosFollowsThePreviewBranch(unittest.TestCase):
"""The xenios pin 87b176a0 and tag v2.0.1 are ancestors of `preview`
(compare: ahead 129, behind 0) and diverged from the default `xenios`
branch (ahead 1784, behind 24). Without source_branch, profile_sync read
the pin as orphaned and 19 refs as moved by the branch divergence."""
class XeniosFollowsItsReleaseBranch(unittest.TestCase):
"""The xenios pin 87b176a0 sat on `preview`, which diverged from the
default `xenios` branch, and without source_branch profile_sync read the
pin as orphaned. Since November 2026 the releases (2.2 to 2.3.1) come from
`xenios` and `preview` stopped in June: the pin is release 2.3.1 on the
default branch, so the profile names no other branch."""
def test_the_profile_names_the_branch_its_pin_is_on(self):
def test_the_profile_follows_the_branch_its_pin_is_on(self):
profile = yaml.safe_load((ROOT / "emulators" / "xenios.yml").read_text(encoding="utf-8"))
self.assertEqual(profile.get("source_branch"), "preview")
self.assertNotIn("from the xenios branch", profile.get("notes", ""))
self.assertIn(profile.get("source_branch"), (None, "xenios"))
self.assertEqual(profile["source_commit"][:7], "cf7c7ee")
class PcemUpstreamPinIsTheLastSync(unittest.TestCase):