mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-11-11 12:33:53 -06:00
The media board ROM is needed only when a boot.id sits beside the XBE, cited at the system detection block of cxbxr-emu.dll.
251 lines
15 KiB
YAML
251 lines
15 KiB
YAML
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.
|