Skip to content

# Xemu - RetroBIOS

Type | standalone
Source | https://github.com/xemu-project/xemu
Version | 0.8.x
Profiled | 2026-03-18
Cores | xemu
Systems | microsoft-xbox

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

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

Technical 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.

4 files | 3 required, 1 optional | 3 in repo, 1 missing | 1 with HLE fallback

`mcpx_1.0.bin` -required : MCPX HLE boot ROM (v1.0)

- Size: 512 B
- Source: `hw/xbox/xbox.c:151 (bootrom_size != 512 -> error)`
- Platforms: batocera, emudeck, recalbox, retrobat, retrodeck
- Config key: `sys.files.bootrom_path`
- 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>

`Complex_4627.bin` -required : Xbox flash ROM / BIOS (256 KB, kernel 4627)

- Source: `hw/xbox/xbox.c:70-81 (bios_name, bios_size validation)`
- Platforms: batocera, recalbox, retrobat, retrodeck
- Config key: `sys.files.flashrom_path`
- Size note: Must be a multiple of 64 KB. Default 256 KB.
- Size options: 256.0 KB, 512.0 KB, 1.0 MB
- 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.

`eeprom.bin` -optional, HLE available, missing from repo : Xbox EEPROM dump (256 bytes)

- Size: 256 B
- Source: `system/vl.c:2939 (size != 256 -> error)`
- Config key: `sys.files.eeprom_path`
- 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.

`xbox_hdd.qcow2` -required : Xbox HDD image (8 GB, qcow2 format)

- Source: `system/vl.c:3060-3073 (hdd_path loading)`
- Config key: `sys.files.hdd_path`
- 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.

Generated on 2026-03-25T14:56:43Z