feat: follow the xemu core on git.libretro.com

This commit is contained in:
Abdessamad Derraz committed 2026-11-09 07:42:53 +01:00
1 parent daae431dd3
commit 5242177225
1 file changed
+146 -49
+146 -49
View File
@@ -3,16 +3,16 @@ type: standalone + libretro
core_classification: community_fork
source:
standalone: "https://github.com/xemu-project/xemu"
libretro: "https://github.com/LibretroAdmin/xemu-libretro"
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-09-17"
profiled_date: "2026-11-09"
source_commit:
standalone: "25e1ee2fd59a451f2ab57e825b4f8a5414220c8b"
libretro: "d9804db79f87f6a6a5548b14ca4a8d5164390338"
libretro: "50fc538657f44704e0d1d0906bdc9ef6e435dffe"
core_version:
standalone: "v0.8.139-2-g25e1ee2"
libretro: "libretro-experimental"
libretro: "0.8.136-53"
version_basis:
standalone:
kind: tag
@@ -21,14 +21,15 @@ version_basis:
distance: 2
libretro:
kind: file
path: "ui/xemu-libretro.c"
pattern: 'info->library_version\s*=\s*"([^"]+)"'
display_name: "Microsoft - Xbox (xemu)"
path: "upstream.version"
pattern: '^(\S+)'
display_name: "Microsoft - Xbox / Sega Chihiro (xemu)"
cores:
- xemu
- "xemu-sa"
systems:
- microsoft-xbox
- sega-chihiro
data_root:
windows:
@@ -45,16 +46,14 @@ data_root:
note: "xemu.toml beside the executable makes its folder the root"
notes: |
Full-system Xbox emulator built on QEMU. One tree builds the standalone
application and, with the libretro build option, a core in which a shim
replaces ui/xemu.c: the QEMU machine runs on its own thread, retro_run pumps
the RetroPads into the Duke controllers and blits the NV2A surface into the
frontend's framebuffer through an OpenGL 4.0 core context, and content is a
.iso or .xiso image that QEMU opens from its full path. Save states are not
implemented, and game saves live inside the hard disk image.
ref: meson_options.txt:52-53, ui/xemu-libretro.c:1-27,
ui/xemu-libretro.c:609-617, ui/xemu-libretro.c:680-697,
ui/xemu-libretro.c:874-876
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
@@ -69,14 +68,27 @@ notes: |
ui/xemu-settings.cc:70-133, ui/xemu.c:1373-1393,
ui/xui/main-menu.cc:1553-1575
The core reads the same four files from the frontend system directory, each
under a name picked by a core option that offers a default and a few
alternatives, and keeps its configuration as xemu-libretro.toml in that
directory. The boot ROM, the flash ROM and the disk image are opened before
the machine starts, and a missing one fails the load with a message naming
the file. The EEPROM is left to the machine, which generates one.
ref: ui/xemu-libretro.c:112-127, ui/xemu-libretro.c:139-145,
ui/xemu-libretro.c:178-236
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
@@ -87,7 +99,8 @@ notes: |
files:
- name: mcpx_1.0.bin
path: mcpx_1.0.bin
path: "xemu/mcpx_1.0.bin"
standalone_path: mcpx_1.0.bin
required: true
size: 512
validation: [size]
@@ -98,16 +111,17 @@ files:
of the flash image, which the machine maps as a writable overlay at the
top of the address space. qemu_init drops the path with an error when
the file cannot be opened or is not 512 bytes, and the machine then runs
the flash alone. The core option xemu_bootrom names the file, default
mcpx_1.0.bin, with mcpx.bin, MCPX_1.0.bin and boot_rom.bin offered as
alternatives. The core refuses to load when the chosen file is absent.
the flash alone. The core reads system/xemu/mcpx_1.0.bin, else
mcpx_1.0.bin at the root of the system directory, and refuses to load
when neither is there.
source_ref:
standalone: "system/vl.c:2983-3006, hw/xbox/xbox.c:143-171, hw/xbox/xbox.c:468-470"
libretro: "ui/xemu-libretro.c:113-114, ui/xemu-libretro.c:192-193, ui/xemu-libretro.c:210-236"
libretro: "ui/libretro.c:3370-3415, ui/libretro.c:3418-3427"
- name: Complex_4627.bin
path: Complex_4627.bin
aliases: [Complex.bin, cerbios.bin]
path: "xemu/Complex_4627.bin"
standalone_path: Complex_4627.bin
aliases: [Complex_4627v1.03.bin]
required: true
size: [262144, 524288, 1048576]
validation: [size]
@@ -118,17 +132,17 @@ files:
Passed as -bios and opened through qemu_find_file. An image whose size
is not a multiple of 65536 bytes counts as a failed load, like a missing
file: the 256 KB region is filled with 0xFF and the machine starts
anyway. An unreadable path clears autostart in the standalone. The core
option xemu_flashrom names the file, default Complex_4627.bin, with
Complex_4627_v1.03.bin, complex_4627.bin, cerbios.bin, Cerbios.bin,
bios.bin, xbox_bios.bin and Complex.bin offered as alternatives. The
core refuses to load when the chosen file is absent.
anyway. An unreadable path clears autostart in the standalone, which
takes any file the settings name. 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:
standalone: "system/vl.c:3041-3053, hw/xbox/xbox.c:63-123"
libretro: "ui/xemu-libretro.c:115-118, ui/xemu-libretro.c:195-196, ui/xemu-libretro.c:210-236"
libretro: "ui/libretro.c:3370-3415, ui/libretro.c:3429-3436"
- name: xbox_eeprom.bin
path: xbox_eeprom.bin
path: "xemu/xbox_eeprom.bin"
standalone_path: eeprom.bin
aliases: [eeprom.bin]
required: false
@@ -144,14 +158,15 @@ files:
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 option xemu_eeprom names the file, default
xbox_eeprom.bin, with eeprom.bin and EEPROM.bin offered as alternatives,
and does not check for it before the machine starts.
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/xemu-libretro.c:119-120, ui/xemu-libretro.c:198-199, ui/xemu-libretro.c:204-209"
libretro: "ui/libretro.c:3370-3415, ui/libretro.c:1778-1780"
- name: xbox_hdd.qcow2
mode: standalone
path: xbox_hdd.qcow2
required: true
installed_on: [batocera, emudeck, recalbox, retrodeck, rocknix]
@@ -162,19 +177,101 @@ files:
and the file opens. An unreadable file only queues an error and an empty
path attaches no drive. Snapshots are stored inside the image. The
project publishes a formatted image carrying its own unsigned dashboard
and empty TDATA and UDATA folders. The core option xemu_hdd names the
file, default xbox_hdd.qcow2, with xbox_hdd_8gb.qcow2, hdd.qcow2 and
xbox_hdd.img offered as alternatives. The core refuses to load when the
chosen file is absent.
and empty TDATA and UDATA folders.
The xemu release does not carry the image. Batocera and Recalbox
package the 1.0 xemu-hdd-image and copy it into the saves folder at
launch when none is there, RetroDECK copies its packaged copy into the
BIOS folder during setup, and EmuDeck downloads it while setting xemu
up. ROCKNIX packages the same image and unzips it at launch into
bios/xemu/hdd/, the path its xemu.toml gives hdd_path.
source_ref: "system/vl.c:3060-3074, ui/xemu-snapshots.c:156"
- 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:
standalone: "system/vl.c:3060-3074, ui/xemu-snapshots.c:156"
libretro: "ui/xemu-libretro.c:121-123, ui/xemu-libretro.c:200-202, ui/xemu-libretro.c:210-236"
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, under these three names in turn. 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