Skip to content

xemu emulates Microsoft Xbox. It reads 5 files, 3 of them required: without a required file it does not start games.

Run on its own, the app reads its files from this folder:

%APPDATA%/xemu/xemu/

xemu.toml beside xemu.exe makes its folder the root.

Source: ui/xemu-settings.cc:51-63, ui/xemu-settings.cc:73-92

About this profile
Detail Value
Type standalone + libretro
Classification Community fork
Source standalone, libretro
Upstream https://github.com/xemu-project/xemu
Version v0.8.139-2-g25e1ee2, 2 commits after tag v0.8.139 (standalone), libretro-experimental, stated in ui/xemu-libretro.c (libretro)
Revision xemu-project/xemu@25e1ee2fd59a, LibretroAdmin/xemu-libretro@d9804db79f87
Profiled 2026-09-17
Profile YAML, JSON
Cores xemu, xemu-sa
Systems Microsoft Xbox
Data folder (Windows) %APPDATA%/xemu/xemu/
Data folder (macOS) ~/Library/Application Support/xemu/xemu/
Data folder (Linux) $XDG_DATA_HOME/xemu/xemu/, else ~/.local/share/xemu/xemu/
Install this emulator's files

For xemu inside RetroArch, Batocera or another setup. The installer finds your setup and its BIOS folder, then downloads only the files this emulator reads there and checks each one.

Open the Start menu. Type PowerShell and open it. Paste the line. Press Enter.

PowerShell
&([scriptblock]::Create((irm https://abdess.github.io/retrobios/i.ps1))) --emulator xemu
Technical 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

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

5 files: 3 required, 2 optional.

In this collection: 5 in repo and 0 missing.

mcpx_1.0.bin required in repo

MCPX boot ROM

  • 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. 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.
Validation, source and config key
  • Config key: sys.files.bootrom_path

Complex_4627.bin required in repo

Xbox flash ROM image

  • Aliases: Complex.bin, cerbios.bin
  • 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.
Validation, source, config key and more
  • Config key: sys.files.flashrom_path
  • Size note: Any size that is a positive multiple of 64 KiB is mapped, and the image is mirrored across the 16 MB flash window

xbox_hdd.qcow2 required in repo

Xbox hard disk image, 8 GB with the retail partition layout

  • 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. 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. 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.
Packages, source and config key
  • Config key: sys.files.hdd_path

xbox_eeprom.bin optional in repo built-in fallback

Xbox EEPROM image

  • Standalone path: eeprom.bin, in the data folder
  • Aliases: eeprom.bin
  • 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 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.
Validation, source and config key
  • Config key: sys.files.eeprom_path

wpcap.dll optional in repo

Npcap packet capture library

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