Files
libretro/emulators/xemu.yml
Abdessamad Derraz de1940d57c feat: hle_fallback on 39 emulator profiles (266 entries)
Batch analysis of all 273 profiles to identify HLE/embedded
fallbacks. Added hle_fallback: true where the core has verified
software replacement for missing BIOS files:

- Embedded ROMs: vice (102), ep128emu (22), fuse (18), frodo (4)
- HLE BIOS: bsnes* (33 across 3 profiles), puae (9 AROS),
  noods (4), melonds* (6 FreeBIOS), flycast (3 reios)
- Open-source replacements: sameboy (8), pokemini (1), gpsp (1)
- Built-in fallbacks: np2kai (7), atari800 (6 Altirra),
  picodrive (3), quasi88 (4), gambatte (2)

Conservative: only added where notes or source code confirm HLE.
Skipped 50+ profiles where files are optional alternatives, not
HLE replaceable (neocd, opera, kronos, pcem, etc.)
2026-03-19 13:03:48 +01:00

81 lines
3.2 KiB
YAML

emulator: Xemu
type: standalone
source: "https://github.com/xemu-project/xemu"
logo: "https://raw.githubusercontent.com/xemu-project/xemu/master/data/xemu_64x64.png"
profiled_date: "2026-03-18"
core_version: "0.8.x"
display_name: "xemu (Xbox)"
systems: [microsoft-xbox]
notes: |
Xemu is a free, open-source Xbox emulator based on QEMU.
Three firmware files are required for operation: MCPX boot ROM,
flash ROM (BIOS), and EEPROM image. A pre-built HDD image is
also needed. The EEPROM can be auto-generated by xemu if not
provided. Config stored in xemu.toml under sys.files section.
files:
- name: "mcpx_1.0.bin"
description: "MCPX HLE boot ROM (v1.0)"
required: true
size: 512
source_ref: "hw/xbox/xbox.c:151 (bootrom_size != 512 -> error)"
config_key: "sys.files.bootrom_path"
notes: |
Overlaid on the last 512 bytes of the flash ROM region at boot.
Mapped to 0xFFFFFE00-0xFFFFFFFF. Disabled after early init
via LPC config register write (hw/xbox/xbox_pci.c:362).
Machine property: -machine xbox,bootrom=<path>
- name: "Complex_4627.bin"
description: "Xbox flash ROM / BIOS (256 KB, kernel 4627)"
required: true
size_options: [262144, 524288, 1048576]
size_note: "Must be a multiple of 64 KB. Default 256 KB."
source_ref: "hw/xbox/xbox.c:70-81 (bios_name, bios_size validation)"
config_key: "sys.files.flashrom_path"
notes: |
Loaded as -bios argument (system/vl.c:3052-3053).
Mapped to 0xFF000000-0xFFFFFFFF with mirroring.
Common variants: Complex_4627 (1.0), Complex_4034 (debug),
Complex_4817 (1.1). Any valid Xbox BIOS dump works.
- name: "eeprom.bin"
description: "Xbox EEPROM dump (256 bytes)"
required: false
hle_fallback: true
size: 256
source_ref: "system/vl.c:2939 (size != 256 -> error)"
config_key: "sys.files.eeprom_path"
notes: |
Loaded via smbus-storage device (hw/xbox/smbus_storage.c:157).
Auto-generated as XBOX_EEPROM_VERSION_R1 if missing
(system/vl.c:2918-2919). Default path: <config_dir>/eeprom.bin.
Contains serial, MAC, HDD key, region, video standard.
Structure defined in hw/xbox/eeprom_generation.h.
- name: "xbox_hdd.qcow2"
description: "Xbox HDD image (8 GB, qcow2 format)"
required: true
source_ref: "system/vl.c:3060-3073 (hdd_path loading)"
config_key: "sys.files.hdd_path"
notes: |
Attached as IDE drive index=0 with locked=on.
Must contain Xbox partitions (C, E, X, Y, Z).
Pre-built images available from xemu project.
Not a BIOS file - excluded from retrobios packs.
machine_properties:
bootrom: "MCPX boot ROM path (string)"
avpack: "Video connector type: composite, scart, svideo, vga, rfu, hdtv, none"
short-animation: "Skip Xbox boot animation (bool)"
smc-version: "SMC version string, 3 chars, default P01"
video-encoder: "Video encoder chip: conexant (default), focus, xcalibur"
source_ref: "hw/xbox/xbox.c:446-497"
memory_layout:
ram: "64 MB or 128 MB (configurable via sys.mem_limit)"
flash_rom: "0xFF000000-0xFFFFFFFF (mirrored per bios_size)"
mcpx_overlay: "Last bios_size bytes, overlays flash ROM at reset"
source_ref: "hw/xbox/xbox.c:64-173"