mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-11-12 21:13:49 -06:00
chore: merge profile batch two
This commit is contained in:
commit
1aa78fd0dc
14 files changed
+994
-637
No files matched your search
+92
-76
@@ -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
File diff suppressed because it is too large.
Load diff
+11
-11
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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.
|
||||
|
||||
@@ -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
@@ -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
@@ -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:
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in new issue
Block a user