emulator: Chihiro-DS type: standalone core_classification: community_fork source: "https://www.retrobat.org/repo/win64/stable/emulators/chihiro-ds.7z" upstream: closed-source profiled_date: "2026-10-20" core_version: "1.0 (Mar 14 2025)" version_basis: kind: package url: "https://www.retrobat.org/repo/win64/stable/emulators/chihiro-ds.7z" artifact: "chihiro-ds.7z, build string in cxbx.exe and cxbxr-emu.dll" display_name: "Sega - Chihiro (Chihiro-DS)" cores: - chihiro-gun - chihiro-ds systems: - sega-chihiro - microsoft-xbox mode: standalone standalone_directories: - "Settings::GetDataLocation" notes: | Cxbx-Reloaded derivative built for the Chihiro light gun games, used by RetroBat as its "chihiro-gun" emulator from emulators\chihiro-ds and paired with DemulShooter. No source is published. The build read here is the one RetroBat installs, chihiro-ds.7z sha256 d20a9ffc6822c719f25d9b46c66249bf7efc9729cfddd10bda4f8629c96d48a5, whose binaries carry "Chihiro-DS 1.0 (Mar 14 2025)". cxbxr-ldr.exe md5 d3675f7bb270072f33d9106497dd9bbc is the print DemulShooter lists for "Chihiro-DS 1.0". cxbxr-emu.dll (md5 62f492f14b2af4bef7329ef269355a78) is cited by virtual address. The package ships its cxbxr-emu.pdb (GUID 7511A6DE-EA63-4F50-9FB8-AC9B37A49568, age 2, the values the DLL's debug directory names), which gives the function names below. cxbx.exe is md5 7f59a0156a426fd4dfec6ee4e556648c with its matching cxbx.pdb. ref: emulatorLauncher Generators/Cxbx.Generator.cs:104-110, 202-214, emulatorLauncher Installer.cs:46 Every file name, path and error message in cxbxr-emu.dll that concerns a file matches Cxbx-Reloaded develop with CHIHIRO_WORK enabled, as it stood between CI-6f32d89 (6f32d89545cf0ad5a7d44ecedaf963005d7f84dc, December 2024) and CI-ec9934a (April 2025), which agree on every file loading path. That source is cited below with the CI-6f32d89 prefix as the reading of the logic the strings belong to. The only file the fork adds is wm2_loader.dll. Every path below is relative to the data directory. RetroBat's settings.ini template sets DataStorageToggle to 1, the folder holding cxbx.exe. EmuDisk and EmuMu are created there at startup, and the Chihiro files live in EmuDisk\Chihiro (this build predates the EmuMediaBoard folder). ref: CI-6f32d89 src/common/Settings.cpp:880-915, CI-6f32d89 src/common/FilePaths.cpp:82-109, cxbxr-emu.dll Chihiro-DS 1.0 (Mar 14 2025) CxbxrInitFilePaths 0x100cde5d-0x100cdf57 (data path plus EmuDisk, filesystem::exists, created when absent), JVS_Init 0x102c128a (data path plus EmuDisk Chihiro folder) A title is Chihiro when its XBE type says so or a boot.id sits beside it. Launched directly with a boot.id beside its XBE, a title needs the media board ROM: a missing file, an unreadable one or one that is not 2 MB ends the run. When either SEGABOOT file is missing both are rewritten from the two 1 MB halves of the ROM, then SEGABOOT_MBROM1.XBE is launched and boots the title. boot.id is read again by the media board for the region flags, and its absence ends the run. ref: CI-6f32d89 src/core/kernel/init/CxbxKrnl.cpp:517-586, CI-6f32d89 src/devices/chihiro/MediaBoard.cpp:46-57, cxbxr-emu.dll Chihiro-DS 1.0 (Mar 14 2025) CxbxrKrnlXbeSystemSelector 0x103e0fe9-0x103e105b (boot flags zero and boot.id beside the XBE), 0x103e178f-0x103e1855 (XbeType gives system 2, 4 or 8, filesystem::exists of xbeDirectory / boot.id sets 8), 0x103e14c6-0x103e14cc (CxbxLaunchNewXbe of SEGABOOT_MBROM1.XBE), MediaBoard::SetMountPath 0x1041a468-0x1041a490 (fopen of the title path plus /boot.id), 0x1041a56d (CxbxrAbortEx Could not open Chihiro boot.id) The four JVS base board images are memory mapped read/write when the system is Chihiro. Byte 0x1F00 of the QC firmware holds the board region and is rewritten in place to one the title's boot.id accepts, which is why the copy the package ships differs from the dump by that byte. ref: CI-6f32d89 src/core/hle/JVS/JVS.cpp:127-142, CI-6f32d89 src/core/hle/JVS/JVS.cpp:169-210, CI-6f32d89 src/core/hle/JVS/JVS.cpp:246-262, cxbxr-emu.dll Chihiro-DS 1.0 (Mar 14 2025) CxbxrKrnlInit 0x103e44cf-0x103e44d8 (JVS_Init called when g_bIsChihiro is set), JVS_Init 0x102c2049-0x102c2081 (byte 0x1F00 of the QC firmware tested against the boot.id region flags, set to 2, 3 or 1) The package ships every file below except xboxdash.xbe and keys.bin. It also carries chihiro_xbox_bios.bin, ver1305.bin, 315-6215.bin, sp5001.bin, sp5001-b.bin and sp5002-a.bin in EmuDisk\chihiro, plus a "chihiro (old)" copy of the folder. No string in the binaries names any of them and nothing opens them. files: - name: fpr21042_m29w160et.bin path: "EmuDisk/Chihiro/fpr21042_m29w160et.bin" system: sega-chihiro required: true bundled: true sha1: "a13cf9c5cdfe8605d82150b7573652f419b30197" md5: "afacfb61877401f1611998d2b590dffd" size: 2097152 validation: [size] description: "Chihiro media board flash ROM" note: >- Checked for existence, opened and size checked before a Chihiro title is started, each failure ending the run. Read to write out the two SEGABOOT files when either is missing, and launched when a Chihiro title reboots with an empty launch path. source_ref: "cxbxr-emu.dll Chihiro-DS 1.0 (Mar 14 2025) CxbxrKrnlXbeSystemSelector 0x103e10bb-0x103e1139 (data path plus EmuDisk and MediaBoardRomFile, filesystem::exists), 0x103e1168-0x103e116f (CxbxrAbortEx could not be found), 0x103e1174-0x103e119e (fopen rb, abort on failure), 0x103e11ab-0x103e11da (fseek and ftell, abort unless 0x200000), HalReturnToFirmware 0x1030f09d-0x1030f0d7 (empty launch path with g_bIsChihiro set: Device prefix plus MediaBoardRomFile), 0x1030f15b (CxbxLaunchNewXbe)" - name: SEGABOOT_MBROM0.XBE path: "EmuDisk/Chihiro/SEGABOOT_MBROM0.XBE" system: sega-chihiro required: false bundled: true size: 1048576 sha1: "2f7ac75e738e2e4f83ffb0cbc06127195a7e8336" md5: "853d40e7a80d659613885d93abbec463" description: "SEGABOOT, old revision" note: >- Mounted as the mbrom0 device. Written from the first megabyte of the media board ROM when either SEGABOOT file is missing. The copy the package ships is that first megabyte. source_ref: "cxbxr-emu.dll Chihiro-DS 1.0 (Mar 14 2025) dynamic initializer for MediaBoardSegaBoot0 0x100c2457-0x100c246a, CxbxrKrnlXbeSystemSelector 0x103e11f0-0x103e122f (data path plus EmuDisk), 0x103e12ab-0x103e12cd (filesystem::exists, a miss starts the rewrite), 0x103e1363-0x103e137d (fopen wb), 0x103e13d8-0x103e13ff (fread then fwrite of the first 0x100000 bytes of the ROM), CxbxConvertFilePath 0x10408bdc-0x10408be1 (mbrom0 device mapped to this file)" - name: SEGABOOT_MBROM1.XBE path: "EmuDisk/Chihiro/SEGABOOT_MBROM1.XBE" system: sega-chihiro required: false bundled: true size: 1048576 sha1: "463486813206ca44f1d90eb0ef372ef2661b4dfe" md5: "aff2008c8404b9661dc2f52d34c494e0" description: "SEGABOOT, current revision" note: >- Mounted as the mbrom1 device and launched as the XBE that boots a Chihiro title. Written from the second megabyte of the media board ROM when either SEGABOOT file is missing. The copy the package ships is not that half: it differs in 661005 bytes from the second megabyte of the ROM beside it. Hashes are those of the shipped copy. source_ref: "cxbxr-emu.dll Chihiro-DS 1.0 (Mar 14 2025) dynamic initializer for MediaBoardSegaBoot1 0x100c24b7-0x100c24ca, CxbxrKrnlXbeSystemSelector 0x103e1246-0x103e1285 (data path plus EmuDisk), 0x103e12de-0x103e12f9 (filesystem::exists), 0x103e1380-0x103e139a (fopen wb), 0x103e1408-0x103e142f (fread then fwrite of the second 0x100000 bytes), 0x103e14c6-0x103e14cc (CxbxLaunchNewXbe), CxbxConvertFilePath 0x10408cc7-0x10408ccc (mbrom1 device mapped to this file)" - name: ic10_g24lc64.bin path: "EmuDisk/Chihiro/ic10_g24lc64.bin" system: sega-chihiro required: true bundled: true sha1: "98e4cb2b76b89eb5990edf786d2e45e1956beb7e" md5: "ec15634cf28e8bcaf660346787f83254" min_size: 7937 description: "Base board QC microcontroller firmware" note: >- Memory mapped read/write at JVS setup, the run ends when it cannot be opened. Byte 0x1F00 is dereferenced right after and rewritten to USA, export or Japan when the title's boot.id rejects the stored region. Hashes are those of the copy the package ships. source_ref: "cxbxr-emu.dll Chihiro-DS 1.0 (Mar 14 2025) JVS_Init 0x102c135d (name), 0x102c1576 (JVS_LoadFile), 0x102c15fa-0x102c15fe and 0x102c22a4-0x102c22b7 (CxbxrAbortEx Failed to load base board firmware), 0x102c2049-0x102c2081 (byte 0x1F00 read and rewritten), JVS_LoadFile 0x102c0ddd-0x102c0de7 (fopen rb), 0x102c0e14 (mio::make_mmap_sink, read/write mapping)" - name: pc20_g24lc64.bin path: "EmuDisk/Chihiro/pc20_g24lc64.bin" system: sega-chihiro required: true bundled: true sha1: "82dad6e2a75bab4a4840dc6939462f1fb9b95101" md5: "bf1cf24f8549137c0b1ad0fa61473c7e" description: "Base board SC microcontroller firmware" note: "Memory mapped read/write at JVS setup, the run ends when it cannot be opened." source_ref: "cxbxr-emu.dll Chihiro-DS 1.0 (Mar 14 2025) JVS_Init 0x102c13ae (name), 0x102c1706 (JVS_LoadFile), 0x102c178a-0x102c178e and 0x102c22c1-0x102c22d4 (CxbxrAbortEx Failed to load base board qc firmware), JVS_LoadFile 0x102c0ddd-0x102c0de7 (fopen rb), 0x102c0e14 (mio::make_mmap_sink, read/write mapping)" - name: ic11_24lc024.bin path: "EmuDisk/Chihiro/ic11_24lc024.bin" system: sega-chihiro required: true bundled: true sha1: "7c06ccfdd8fb2f4e2d4b0d866791b21879fbd8f4" md5: "da9feafc678d2476f3bf3b1049ec4b17" description: "Base board configuration EEPROM" note: >- Memory mapped read/write at JVS setup, the run ends when it cannot be opened. Writes from JvsEEPROM_Write are synced to disk at once. source_ref: "cxbxr-emu.dll Chihiro-DS 1.0 (Mar 14 2025) JVS_Init 0x102c13ff (name), 0x102c189b (JVS_LoadFile), 0x102c191f-0x102c1923 and 0x102c22de-0x102c22f1 (CxbxrAbortEx Failed to load base board EEPROM), JVS_LoadFile 0x102c0ddd-0x102c0de7 (fopen rb), 0x102c0e14 (mio::make_mmap_sink, read/write mapping), EmuPatch_JvsEEPROM_Write 0x102c6275-0x102c629d (FlushViewOfFile and FlushFileBuffers after each write)" - name: backup_ram.bin path: "EmuDisk/Chihiro/backup_ram.bin" system: sega-chihiro required: false bundled: true sha1: "50b6b204aa881dab8bf572e901ea93d7f708844d" md5: "c34872828474f21cbc761febacea72df" has_builtin: true size_note: "Created as 128 KB of zeros when absent, then memory mapped" description: "Base board backup memory" source_ref: "cxbxr-emu.dll Chihiro-DS 1.0 (Mar 14 2025) JVS_Init 0x102c1439 (name), 0x102c1a1b (filesystem::exists), 0x102c1bee (fopen w when absent), 0x102c1ca4-0x102c1cbc (fseek 0x1ffff, fputc 0, fclose: a 128 KB file), 0x102c2300-0x102c2310 (CxbxrAbortEx Could not create Backup File), 0x102c1dba (JVS_LoadFile), 0x102c1e3e-0x102c1e42 and 0x102c231a-0x102c232a (CxbxrAbortEx Failed to load base board BACKUP RAM)" - name: xboxdash.xbe path: "EmuDisk/Partition2/xboxdash.xbe" system: microsoft-xbox required: false description: "Xbox dashboard executable" note: >- Launched when an Xbox title reboots with an empty launch path and by the Open Dashboard menu entry. When it is missing the console's unrecoverable error screen is shown. source_ref: "cxbxr-emu.dll Chihiro-DS 1.0 (Mar 14 2025) HalReturnToFirmware 0x1030f091-0x1030f103 (empty launch path with g_bIsChihiro clear: partition 2 path plus xboxdash.xbe), 0x1030f15b (CxbxLaunchNewXbe), Xbe::Xbe 0x1014d48a-0x1014d492 (fopen rb), 0x1014d5b4-0x1014d641 (on failure the file name is compared to xboxdash.xbe), 0x1014d6f2 (CxbxKrnlPrintUEM), and cxbx.exe Chihiro-DS 1.0 WndMain::OpenDashboard 0x4300fc (data location plus EmuDisk Partition2 xboxdash.xbe)" - name: EEPROM.bin path: "EEPROM.bin" system: microsoft-xbox required: false bundled: true sha1: "de0b38f4762d09b8fc4883f3f6a04203d2c4b8e3" md5: "6d497abbfb773a2e07f8ab71f2a2999d" has_builtin: true size: 256 description: "Xbox EEPROM image" note: >- Opened at startup and mapped read/write, created with defaults when absent. The file is cut or extended to 256 bytes before its size is read, so the 256 byte check ends the run only when that resize fails. Hashes are those of the copy the package ships. RetroBat writes the language into it only for the xbox system. source_ref: "cxbxr-emu.dll Chihiro-DS 1.0 (Mar 14 2025) CxbxrInitFilePaths 0x100ce4c4-0x100ce4f2 (snprintf of the data path and EEPROM.bin), CxbxKrnlEmulate 0x103e2b7c-0x103e2b81 (CxbxRestoreEEPROM), CxbxRestoreEEPROM 0x100c565b-0x100c5695 (CreateFileA OPEN_EXISTING, then OPEN_ALWAYS when absent), 0x100c56bb-0x100c56cc (SetFilePointer 0x100 and SetEndOfFile), 0x100c5704-0x100c5718 and 0x100c586f-0x100c587b (GetFileSizeEx, CxbxrAbortEx unless 0x100), 0x100c572a (MapViewOfFile read/write), 0x100c576e-0x100c5777 (EmuEEPROMReset for a new file), 0x100c5821 (checksum mismatch warning)" - name: keys.bin path: "keys.bin" system: microsoft-xbox required: false size: 32 validation: [size] description: "Xbox EEPROM and certificate keys" note: "Two 16 byte keys, the EEPROM key then the certificate key. Any other length is refused with a warning." source_ref: "cxbxr-emu.dll Chihiro-DS 1.0 (Mar 14 2025) CxbxKrnlEmulate 0x103e2b77 (LoadXboxKeys), LoadXboxKeys 0x100ce5a7-0x100ce5d2 (data path plus keys.bin, fopen rb), 0x100ce5e7-0x100ce600 (fseek, ftell, size compared to 0x20), 0x100ce60f (fread of the two keys), 0x100ce63c-0x100ce645 (warning on any other size), 0x100ce659-0x100ce662 (warning when absent)" - name: wm2_loader.dll path: "wm2_loader.dll" required: false bundled: true unsourceable: "Host library shipped inside the Chihiro-DS package, not emulation data" size: 121856 description: "Chihiro-DS loader library" note: >- Loaded with LoadLibraryW("./wm2_loader.dll") just before the XBE entry point is called, on every launch. A failure logs a warning and the title starts anyway. source_ref: "cxbxr-emu.dll Chihiro-DS 1.0 (Mar 14 2025) CxbxLaunchXbe 0x103e0272-0x103e0277 (LoadLibraryW of ./wm2_loader.dll), 0x103e027d-0x103e0288 (warning on failure), 0x103e029c (XBE entry point called)" exclusion_note: > ntdll.dll and the XInput libraries tried in turn (xinput1_4, xinput1_3, xinput9_1_0) are Windows components, and cxbxr-emu.dll is the emulator's own build output. boot.id and default.xbe belong to the title. The Partition0.bin to Partition7.bin images under EmuDisk are created and formatted by the emulator.