mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-11-11 12:33:53 -06:00
Where each shipped build finds the config a platform installs and reads every key it opens a file from, read at the build the platform ships: duckstation (EmuELEC, ROCKNIX, RetroBat), xemu, armsx2, hatari, melonDS, dsperate, NanoBoyAdvance, mednafen (ROCKNIX's sydarn fork) and ares, gzdoom, xroar, lrps2 and the amiberry builds at their pins. pin_build names the builds ROCKNIX, EmuELEC and AmberELEC compile, revision the ones RetroBat and Flathub install unpinned. tests/test_launcher_evidence.py covers the rule, the extractor helpers, the invariants and the chains that move placements.
347 lines
15 KiB
YAML
347 lines
15 KiB
YAML
emulator: xemu
|
|
type: standalone + libretro
|
|
core_classification: community_fork
|
|
source:
|
|
standalone: "https://github.com/xemu-project/xemu"
|
|
libretro: "https://git.libretro.com/libretro/xemu-libretro"
|
|
upstream: "https://github.com/xemu-project/xemu"
|
|
logo: "https://raw.githubusercontent.com/xemu-project/xemu/master/data/xemu_64x64.png"
|
|
profiled_date: "2026-11-09"
|
|
source_commit:
|
|
standalone: "25e1ee2fd59a451f2ab57e825b4f8a5414220c8b"
|
|
libretro: "50fc538657f44704e0d1d0906bdc9ef6e435dffe"
|
|
core_version:
|
|
standalone: "v0.8.139-2-g25e1ee2"
|
|
libretro: "0.8.136-53"
|
|
version_basis:
|
|
standalone:
|
|
kind: tag
|
|
match: "v*"
|
|
tag: "v0.8.139"
|
|
distance: 2
|
|
libretro:
|
|
kind: file
|
|
path: "upstream.version"
|
|
pattern: '^(\S+)'
|
|
display_name: "Microsoft - Xbox / Sega Chihiro (xemu)"
|
|
cores:
|
|
- xemu
|
|
- "xemu-sa"
|
|
systems:
|
|
- microsoft-xbox
|
|
- sega-chihiro
|
|
|
|
data_root:
|
|
windows:
|
|
path: "%APPDATA%/xemu/xemu"
|
|
source_ref: "ui/xemu-settings.cc:51-63, 73-92"
|
|
note: "xemu.toml beside xemu.exe makes its folder the root"
|
|
macos:
|
|
path: "~/Library/Application Support/xemu/xemu"
|
|
source_ref: "ui/xemu-settings.cc:51-63, 73-92"
|
|
note: "xemu.toml beside the executable makes its folder the root"
|
|
linux:
|
|
path: "$XDG_DATA_HOME/xemu/xemu, else ~/.local/share/xemu/xemu"
|
|
source_ref: "ui/xemu-settings.cc:51-63, 73-92"
|
|
note: "xemu.toml beside the executable makes its folder the root"
|
|
|
|
pin_build:
|
|
- platform: rocknix
|
|
repo: "https://github.com/ROCKNIX/distribution"
|
|
revision: "20261101"
|
|
path: "projects/ROCKNIX/packages/emulators/standalone/xemu-sa/package.mk"
|
|
variable: PKG_VERSION
|
|
value: "cbffb57d084c70351a596e99e32a8b73e0c5eabf"
|
|
config_reads:
|
|
- file: "xemu.toml"
|
|
platforms: [rocknix]
|
|
source_ref: "ui/xemu.c:1314-1325, ui/xemu-settings.cc:65-71, 94-104, 158-207"
|
|
keys:
|
|
- key: "[sys.files] bootrom_path"
|
|
source_ref: "system/vl.c:2983-3016"
|
|
- key: "[sys.files] flashrom_path"
|
|
source_ref: "system/vl.c:3041-3054"
|
|
condition: "[general] show_welcome false"
|
|
- key: "[sys.files] eeprom_path"
|
|
source_ref: "system/vl.c:2909-2949, 3030-3039"
|
|
- key: "[sys.files] hdd_path"
|
|
source_ref: "system/vl.c:3060-3074"
|
|
- file: "xemu.toml"
|
|
platforms: [retrobat]
|
|
revision: "fc24584ce88f0915ad7f04775bb7712c2e3f49ee"
|
|
revision_from: "xemu.exe 0.8.136 in RetroBat's stable xemu.7z, 2026-11-10"
|
|
source_ref: "ui/xemu.c:1325, ui/xemu-settings.cc:51-63, 73-92, 94-104, 158-207"
|
|
keys:
|
|
- key: "[sys.files] flashrom_path"
|
|
source_ref: "system/vl.c:3041-3054"
|
|
condition: "[general] show_welcome false"
|
|
|
|
notes: |
|
|
Full-system Xbox emulator built on QEMU. The libretro core is built from
|
|
libretro's xemu-libretro tree on its libretro branch, which merges
|
|
Tovarichtch's xemu fork (xemu master with Chihiro support) and keeps the
|
|
core alone: the standalone UI and packaging are removed. upstream.version
|
|
names the upstream version merged. Content is an Xbox disc image (.iso,
|
|
.xiso) or a Chihiro netboot image (.bin), opened from its full path. An
|
|
Xbox disc boots an Xbox, any other image a Chihiro.
|
|
ref: ui/libretro.c:3117-3123, ui/libretro.c:3312-3320
|
|
|
|
Four files feed the machine through the sys.files block of the
|
|
configuration: the MCPX boot ROM, the flash ROM, the EEPROM and the hard disk
|
|
image. qemu_init turns them into machine arguments: bootrom= on the xbox
|
|
machine, -bios, a smbus-storage device and an IDE drive at index 0 with
|
|
locked=on. The standalone keeps them in xemu.toml, read from the SDL
|
|
preference directory or from the directory of the executable when a
|
|
xemu.toml already sits there, and the file pickers of the settings menu fill
|
|
the four paths. Nothing is searched by name and only the EEPROM has a
|
|
default location.
|
|
ref: config_spec.yml:353-367, system/vl.c:2983-3006, system/vl.c:3030-3074,
|
|
ui/xemu-settings.cc:70-133, ui/xemu.c:1373-1393,
|
|
ui/xui/main-menu.cc:1553-1575
|
|
|
|
The core has no option for these paths. It looks for each file in
|
|
system/xemu/, then at the root of the system directory, and keeps the
|
|
first it opens. When none is there the path stays in system/xemu/. The
|
|
flash ROM is tried as Complex_4627v1.03.bin, then Complex_4627.bin. A
|
|
missing boot ROM or flash ROM fails the load. A missing hard disk image
|
|
is written there from the formatted image the core carries
|
|
(data/xbox_hdd.qcow2), and the EEPROM is left to the machine, which
|
|
generates one. Shader caches and patches live in system/xemu/ too.
|
|
ref: ui/libretro.c:3044-3049, ui/libretro.c:3370-3449,
|
|
ui/libretro.c:2088-2105, ui/libretro.c:3361-3367,
|
|
ui/libretro.c:2485
|
|
|
|
A Chihiro boots only its own BIOS, system/xemu/Chihiro/chihiro_xbox_bios.bin,
|
|
which has to be MAME's 512 KiB image (sha1 b700b004). The media board
|
|
flash and the three EEPROMs are read beside it by their MAME names, and a
|
|
missing one, or a BIOS that is not that image, leaves the machine paused
|
|
with a message naming it. The network firmware ver1305.bin is read from
|
|
the same folder when it is there, and only a linked cabinet needs it.
|
|
ref: ui/libretro.c:1782-1795, hw/xbox/chihiro/chihiro.c:2280-2292,
|
|
hw/xbox/chihiro/chihiro.c:2294-2334, hw/xbox/chihiro/chihiro.c:2376-2402,
|
|
hw/xbox/chihiro/chihiro.c:365-380, hw/xbox/chihiro/chihiro.c:490-505
|
|
|
|
The standalone boots whatever it can. An unreadable flash file or a
|
|
rejected EEPROM clears autostart and queues an error for the HUD, an
|
|
unreadable disk image only queues the error, and an empty boot ROM path
|
|
starts the flash without the overlay.
|
|
ref: system/vl.c:2983-3006, system/vl.c:3030-3039, system/vl.c:3041-3053,
|
|
system/vl.c:3060-3074, hw/xbox/xbox.c:143-165
|
|
|
|
files:
|
|
- name: mcpx_1.0.bin
|
|
mode: standalone
|
|
required: false
|
|
size: 512
|
|
validation: [size]
|
|
config_key: sys.files.bootrom_path
|
|
found_by: content
|
|
description: "MCPX boot ROM"
|
|
note: >-
|
|
Passed as the bootrom machine property and read over the last 512 bytes
|
|
of the flash image, which the machine maps as a writable overlay at the
|
|
top of the address space. bootrom_path has no default, so the name is a
|
|
label. qemu_init drops a path that cannot be opened or is not 512 bytes
|
|
and queues an error, and the machine then runs the flash alone, as it
|
|
does when the path is empty.
|
|
source_ref: "system/vl.c:2983-3006, hw/xbox/xbox.c:143-171, hw/xbox/xbox.c:468-470, config_spec.yml:362-366"
|
|
|
|
- name: mcpx_1.0.bin
|
|
mode: libretro
|
|
path: "xemu/mcpx_1.0.bin"
|
|
required: true
|
|
size: 512
|
|
validation: [size]
|
|
description: "MCPX boot ROM"
|
|
note: >-
|
|
Read from system/xemu/mcpx_1.0.bin, else mcpx_1.0.bin at the root of
|
|
the system directory. The core refuses to load when neither is there.
|
|
source_ref:
|
|
libretro: "ui/libretro.c:3370-3415, ui/libretro.c:3418-3427"
|
|
|
|
- name: Complex_4627.bin
|
|
mode: standalone
|
|
required: true
|
|
min_size: 65536
|
|
size_multiple: 65536
|
|
validation: [size]
|
|
size_note: "Any size that is a positive multiple of 64 KiB is mapped (hw/xbox/xbox.c:75-81), and the image is mirrored across the 16 MB flash window"
|
|
config_key: sys.files.flashrom_path
|
|
found_by: content
|
|
description: "Xbox flash ROM image"
|
|
note: >-
|
|
Passed as -bios and opened through qemu_find_file. flashrom_path has no
|
|
default, so the name is a label. A path that cannot be opened, an empty
|
|
one included, queues an error and clears autostart, so the machine does
|
|
not start. An image whose size is not a multiple of 65536 bytes counts
|
|
as a failed load in the machine: the 256 KB region is filled with 0xFF.
|
|
source_ref: "system/vl.c:2527-2535, system/vl.c:3041-3053, hw/xbox/xbox.c:63-123, config_spec.yml:362-366"
|
|
|
|
- name: Complex_4627.bin
|
|
mode: libretro
|
|
path: "xemu/Complex_4627.bin"
|
|
aliases: [Complex_4627v1.03.bin]
|
|
required: true
|
|
min_size: 65536
|
|
size_multiple: 65536
|
|
validation: [size]
|
|
size_note: "Any size that is a positive multiple of 64 KiB is mapped (hw/xbox/xbox.c:75-81), and the image is mirrored across the 16 MB flash window"
|
|
description: "Xbox flash ROM image"
|
|
note: >-
|
|
The core tries Complex_4627v1.03.bin, then Complex_4627.bin, in
|
|
system/xemu/ and then at the root of the system directory, and refuses
|
|
to load when none is there.
|
|
source_ref:
|
|
libretro: "ui/libretro.c:3370-3415, ui/libretro.c:3429-3436, hw/xbox/xbox.c:63-123"
|
|
|
|
- name: xbox_eeprom.bin
|
|
path: "xemu/xbox_eeprom.bin"
|
|
standalone_path: eeprom.bin
|
|
aliases: [eeprom.bin]
|
|
required: false
|
|
installed_on: [retrobat]
|
|
has_builtin: true
|
|
size: 256
|
|
validation: [size]
|
|
config_key: sys.files.eeprom_path
|
|
description: "Xbox EEPROM image"
|
|
note: >-
|
|
Attached as the smbus-storage device at address 0x54, which reads the
|
|
whole file at realize and writes it back on every guest write. A missing
|
|
file is generated as a retail 1.0 image with a random serial, MAC, hard
|
|
disk key and online key, the North American region and the NTSC-M video
|
|
standard. A file of any size other than 256 bytes is rejected and
|
|
autostart is cleared. The standalone defaults to eeprom.bin next to
|
|
xemu.toml. The core reads system/xemu/xbox_eeprom.bin, else
|
|
xbox_eeprom.bin at the root of the system directory, and leaves the
|
|
machine to generate system/xemu/xbox_eeprom.bin when neither is there.
|
|
source_ref:
|
|
standalone: "system/vl.c:2909-2949, system/vl.c:3030-3039, ui/xemu-settings.cc:135-146, hw/xbox/smbus_storage.c:56-87, hw/xbox/smbus_storage.c:90-128, hw/xbox/smbus_storage.c:155-160, hw/xbox/eeprom_generation.c:93-140"
|
|
libretro: "ui/libretro.c:3370-3415, ui/libretro.c:1778-1780"
|
|
|
|
- name: xbox_hdd.qcow2
|
|
mode: standalone
|
|
required: false
|
|
installed_on: [batocera, emudeck, recalbox, retrobat, retrodeck, rocknix]
|
|
config_key: sys.files.hdd_path
|
|
found_by: content
|
|
description: "Xbox hard disk image, 8 GB with the retail partition layout"
|
|
note: >-
|
|
Attached as the IDE drive at index 0 with locked=on when the path is set
|
|
and the file opens. An unreadable file only queues an error and an empty
|
|
path attaches no drive: the machine starts either way. Snapshots are stored inside the image.
|
|
hdd_path has no default, so the name is a label: it is the file of
|
|
the formatted image the project publishes apart from the xemu release
|
|
(xemu-hdd-image 1.0, xbox_hdd.qcow2.zip), which carries its own
|
|
unsigned dashboard and empty TDATA and UDATA folders. Batocera,
|
|
Recalbox, RetroDECK, EmuDeck and ROCKNIX install that image themselves
|
|
and point hdd_path at it. RetroBat's launcher writes the image it
|
|
carries when the save folder holds none.
|
|
source_ref: "system/vl.c:3060-3074, ui/xemu-snapshots.c:156, config_spec.yml:362-366"
|
|
|
|
- name: xbox_hdd.qcow2
|
|
mode: libretro
|
|
path: "xemu/xbox_hdd.qcow2"
|
|
required: false
|
|
has_builtin: true
|
|
description: "Xbox hard disk image, 8 GB with the retail partition layout"
|
|
note: >-
|
|
Read from system/xemu/, else from the root of the system directory.
|
|
When neither holds one, the core writes the formatted xemu-dashboard
|
|
image it carries to system/xemu/xbox_hdd.qcow2. Game saves live in
|
|
the image.
|
|
source_ref:
|
|
libretro: "ui/libretro.c:3370-3415, ui/libretro.c:3438-3448, ui/libretro.c:2088-2105"
|
|
|
|
# Sega Chihiro, libretro build: system/xemu/Chihiro/, MAME's names.
|
|
- name: "chihiro_xbox_bios.bin"
|
|
mode: libretro
|
|
system: sega-chihiro
|
|
path: "xemu/Chihiro/chihiro_xbox_bios.bin"
|
|
required: true
|
|
size: 524288
|
|
sha1: "b700b0041af8f84835e45d1d1250247bf7077188"
|
|
validation: [size, sha1]
|
|
description: "Chihiro BIOS"
|
|
note: "The only flash image a Chihiro boots. Any other file, or none, leaves the machine paused with a message."
|
|
source_ref:
|
|
libretro: "ui/libretro.c:1785-1789, hw/xbox/chihiro/chihiro.c:2280-2292, system/vl.c:3325-3398"
|
|
|
|
- name: "fpr21042_m29w160et.bin"
|
|
mode: libretro
|
|
system: sega-chihiro
|
|
path: "xemu/Chihiro/fpr21042_m29w160et.bin"
|
|
aliases: ["fpr-23887_29lv160te.ic4", "fpr-23887.bin"]
|
|
required: true
|
|
max_size: 4194304
|
|
validation: [size]
|
|
description: "Chihiro media board flash"
|
|
note: "Read beside the BIOS, then in its parent folder, as fpr21042_m29w160et.bin, fpr-23887_29lv160te.ic4 and fpr-23887.bin in turn (chihiro.c:2321-2323). Up to 4 MiB is accepted. Without it the machine stays paused."
|
|
source_ref:
|
|
libretro: "hw/xbox/chihiro/chihiro.c:2259-2278, hw/xbox/chihiro/chihiro.c:2294-2334, system/vl.c:3325-3398"
|
|
|
|
- name: "ic10_g24lc64.bin"
|
|
mode: libretro
|
|
system: sega-chihiro
|
|
path: "xemu/Chihiro/ic10_g24lc64.bin"
|
|
required: true
|
|
size: 8192
|
|
validation: [size]
|
|
description: "Chihiro QC EEPROM"
|
|
note: "Read beside the BIOS and refused at any other size. Without it the machine stays paused."
|
|
source_ref:
|
|
libretro: "hw/xbox/chihiro/chihiro.c:2376-2402, system/vl.c:3325-3398"
|
|
|
|
- name: "ic11_24lc024.bin"
|
|
mode: libretro
|
|
system: sega-chihiro
|
|
path: "xemu/Chihiro/ic11_24lc024.bin"
|
|
required: true
|
|
size: 128
|
|
validation: [size]
|
|
description: "Chihiro baseboard EEPROM"
|
|
note: "Read beside the BIOS and refused at any other size. Without it the machine stays paused."
|
|
source_ref:
|
|
libretro: "hw/xbox/chihiro/chihiro.c:2376-2402, system/vl.c:3325-3398"
|
|
|
|
- name: "pc20_g24lc64.bin"
|
|
mode: libretro
|
|
system: sega-chihiro
|
|
path: "xemu/Chihiro/pc20_g24lc64.bin"
|
|
required: true
|
|
size: 8192
|
|
validation: [size]
|
|
description: "Chihiro SC EEPROM"
|
|
note: "Read beside the BIOS and refused at any other size. Without it the machine stays paused."
|
|
source_ref:
|
|
libretro: "hw/xbox/chihiro/chihiro.c:2376-2402, system/vl.c:3325-3398"
|
|
|
|
- name: "ver1305.bin"
|
|
mode: libretro
|
|
system: sega-chihiro
|
|
path: "xemu/Chihiro/ver1305.bin"
|
|
required: false
|
|
description: "Chihiro network board firmware 13.05"
|
|
note: "Read when present. The media board reports its version from it, and a linked cabinet runs it on the network board, which cannot start without it."
|
|
source_ref:
|
|
libretro: "ui/libretro.c:1790-1794, hw/xbox/chihiro/chihiro.c:365-380, hw/xbox/chihiro/chihiro.c:490-505"
|
|
|
|
- name: wpcap.dll
|
|
required: false
|
|
unsourceable: "installed by the Npcap driver, which the user installs"
|
|
description: "Npcap packet capture library"
|
|
note: >-
|
|
Loaded by name on Windows, with every entry point resolved individually,
|
|
when networking is enabled with the pcap backend, and the netdev is not
|
|
created when the library or one of its symbols is missing. Networking is
|
|
off by default and the backend defaults to NAT.
|
|
source_ref: "winpcap-loader/loader.c:79-113, ui/xemu-net.c:68-78, system/vl.c:2870-2875, config_spec.yml:327-335"
|
|
|
|
machine_properties:
|
|
bootrom: "MCPX boot ROM path"
|
|
avpack: "Video connector: scart, hdtv, vga, rfu, svideo, composite, none"
|
|
short-animation: "Skip the boot animation"
|
|
smc-version: "SMC version string, default P01"
|
|
video-encoder: "Encoder presented to the OS: conexant, focus, xcalibur"
|
|
source_ref: "hw/xbox/xbox.c:446-497"
|