Skip to content

Cxbx-Reloaded - RetroBIOS

Type standalone
Classification Embedded HLE
Source https://github.com/Cxbx-Reloaded/Cxbx-Reloaded
Version CI-585c49a
Profiled 2026-08-11
Cores cxbx-reloaded, cxbx
Systems microsoft-xbox, sega-chihiro
Technical notes

Windows x86 emulator running Xbox and Sega Chihiro titles. The kernel is reimplemented and XBE code executes natively, so no Xbox flash ROM or MCPX image is read. The flash window answers the two addresses titles poll with constants, hardware revision 1.6 among them, and the MCPX device is a PCI stub whose revision comes from the hardware model. A title is opened as an XBE, either from an unpacked directory or from an .iso or .xiso mounted to a drive letter, in which case the default.xbe of the mount is what gets opened. ref: src/devices/x86/EmuX86.cpp:162-180, src/devices/MCPXDevice.cpp:36-70, src/devices/Xbox.cpp:48-58, src/devices/Xbox.cpp:132-155, src/gui/WndMain.cpp:89-96, src/gui/WndMain.cpp:2252-2272

Every path below is relative to the data directory, picked on first run between the folder holding cxbx.exe, %APPDATA%\Cxbx-Reloaded and a custom location. EmuDisk, EmuMediaBoard and EmuMu are created under it at startup. ref: src/common/Settings.cpp:82, src/common/Settings.cpp:902-937, src/common/Settings.cpp:968-996, src/common/FilePaths.cpp:81-137

A title counts as Chihiro when its XBE type says so or a boot.id sits beside it. Launching one directly requires the media board ROM: its absence ends the run. The 2 MB image is cut into two 1 MB halves written as Partition2.bin and Partition3.bin, the old and new SEGABOOT, and the new one is launched, which then boots the title. A title returning to firmware with an empty launch path goes back to the same ROM. ref: src/core/kernel/init/CxbxKrnl.cpp:573-578, src/core/kernel/init/CxbxKrnl.cpp:590-655, src/core/kernel/exports/EmuKrnlHal.cpp:546-556, src/core/kernel/support/EmuFile.cpp:250-253

The JVS base board dumps are memory mapped read/write once the title is Chihiro, and each one ends the run when it cannot be opened. Byte 0x1F00 of the QC firmware carries the region, rewritten to one the title's BootID accepts so the board does not reject the game. Titles read and write all four images through the JVS patches at offsets of their own choosing; no size, bound or hash check exists anywhere in that path. ref: src/core/hle/JVS/JVS.cpp:129-145, src/core/hle/JVS/JVS.cpp:174-213, src/core/hle/JVS/JVS.cpp:241-259, src/core/hle/JVS/JVS.cpp:397-435, src/core/kernel/init/CxbxKrnl.cpp:1330-1333

On the Xbox side the emulated disk holds the dashboard on Partition2. A title rebooting with an empty launch path lands there, as does the Open Dashboard menu entry, and an absent dashboard raises the console's own unrecoverable error screen rather than an emulator failure. ref: src/core/kernel/exports/EmuKrnlHal.cpp:546-556, src/gui/WndMain.cpp:2463-2467, src/common/xbe/Xbe.cpp:62-96, src/core/kernel/support/EmuDisk.cpp:269

11 files | 4 required, 7 optional | 9 in repo, 2 missing

fpr21042_m29w160et.bin required in repo
Chihiro media board flash ROM

ic10_g24lc64.bin required in repo
Base board QC microcontroller firmware

  • Path: EmuMediaBoard/Chihiro/ic10_g24lc64.bin
  • System: sega-chihiro
  • Size: min 7.8 KB
  • Source: src/core/hle/JVS/JVS.cpp:181-188, src/core/hle/JVS/JVS.cpp:241-259, src/core/hle/JVS/JVS.cpp:484-523
  • Memory mapped read/write at JVS setup, and the run ends when it cannot be opened. Byte 0x1F00 is dereferenced straight after loading, which is the floor the size carries: it holds the board region and is rewritten to USA, export or Japan when the running title's BootID rejects the current value. Titles read it through JvsFirmwareDownload and overwrite it through JvsFirmwareUpload.

pc20_g24lc64.bin required in repo
Base board SC microcontroller firmware

ic11_24lc024.bin required in repo
Base board configuration EEPROM

  • Path: EmuMediaBoard/Chihiro/ic11_24lc024.bin
  • System: sega-chihiro
  • Source: src/core/hle/JVS/JVS.cpp:183-196, src/core/hle/JVS/JVS.cpp:437-482
  • Memory mapped read/write at JVS setup, and the run ends when it cannot be opened. Writes from JvsEEPROM_Write are synced back to disk immediately, so cabinet settings a title stores persist across runs.

backup_ram.bin optional missing built-in fallback
Base board backup memory

  • Path: EmuMediaBoard/Chihiro/backup_ram.bin
  • System: sega-chihiro
  • Source: src/core/hle/JVS/JVS.cpp:184-213, src/core/hle/JVS/JVS.cpp:397-435
  • Size note: Created as 128 KB of zeros when absent, then memory mapped
  • The only one of the four JVS images the emulator will produce itself: when the file is missing it writes 128 KB of zeros and maps that, so a fresh board starts blank. Titles keep bookkeeping and high scores here through JvsBACKUP_Read and JvsBACKUP_Write.

Partition2.bin optional in repo
SEGABOOT, old revision

Partition3.bin optional in repo
SEGABOOT, current revision

xboxdash.xbe optional in repo
Xbox dashboard executable

EEPROM.bin optional in repo built-in fallback
Xbox EEPROM image

keys.bin optional missing
Xbox EEPROM and certificate keys

dokan2.dll optional in repo
Dokany user mode library

Generated on 2026-08-23T16:12:06Z