mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-10 13:33:24 -05:00
feat: resolve bare paths in the xenios profile
Re-read at 87b176a: refs anchored from the repo root, locale bundle loader, spa.bin resolution in the content manager, iOS patch export and embedded.mobileprovision.
This commit is contained in:
1 parent
27e722d8f3
commit
81c7093834
1 file changed
+77
-57
+77
-57
@@ -3,9 +3,9 @@ type: standalone
|
|||||||
core_classification: community_fork
|
core_classification: community_fork
|
||||||
source: "https://github.com/xenios-jp/XeniOS"
|
source: "https://github.com/xenios-jp/XeniOS"
|
||||||
upstream: "https://github.com/has207/xenia-edge"
|
upstream: "https://github.com/has207/xenia-edge"
|
||||||
profiled_date: "2026-08-12"
|
|
||||||
source_commit: "87b176a078c316fde3adf67a217f0c44615b0e0d"
|
source_commit: "87b176a078c316fde3adf67a217f0c44615b0e0d"
|
||||||
upstream_commit: "07021f019cf55105bc26c0474e0b0835808353e2"
|
upstream_commit: "07021f019cf55105bc26c0474e0b0835808353e2"
|
||||||
|
profiled_date: "2026-08-23"
|
||||||
core_version: "2.0.1"
|
core_version: "2.0.1"
|
||||||
display_name: "Microsoft - Xbox 360 (XeniOS)"
|
display_name: "Microsoft - Xbox 360 (XeniOS)"
|
||||||
cores:
|
cores:
|
||||||
@@ -16,75 +16,95 @@ systems:
|
|||||||
mode: standalone
|
mode: standalone
|
||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
Xbox 360 emulator for macOS and iOS, forked from Xenia Edge by xenios-jp and
|
Apple-focused fork of Xenia, based on Xenia Edge, published from the xenios
|
||||||
published as xenios_macos_apple_silicon.dmg, xenios_macos_intel.dmg,
|
branch as xenios_macos_apple_silicon.dmg, xenios_macos_intel.dmg,
|
||||||
xenios_macos_universal.dmg and xenios_ios_iphone_ipad.ipa. The 2.0.1 disk
|
xenios_macos_universal.dmg and xenios_ios_iphone_ipad.ipa. The macOS build
|
||||||
image holds a single bundle, Xenia-edge.app, carrying the executable, an
|
names its bundle and executable Xenia-edge, the iOS build XeniOS
|
||||||
icon, a compiled asset catalog and two dylibs under Contents/Frameworks.
|
(src/xenia/app/CMakeLists.txt:11-13, 175, 339-341). ES-DE runs it through the
|
||||||
|
XENIOS rule with the ROM and an optional .commands file of extra arguments.
|
||||||
|
|
||||||
Rendering runs on Metal. Guest DXBC is converted to DXIL through
|
The 2.0.1 disk image holds one bundle: beside its code signature it carries
|
||||||
libdxilconv.dylib, built from the fork's own DirectX Shader Compiler branch,
|
Info.plist, MacOS/Xenia-edge, Resources/AppIcon.icns, Resources/Assets.car
|
||||||
then to Metal IR through Apple's Metal Shader Converter
|
and two dylibs under Contents/Frameworks. Rendering runs on Metal. Guest DXBC
|
||||||
(libmetalirconverter.dylib), which the build requires present before it will
|
is converted to DXIL through libdxilconv.dylib, built from the fork's own
|
||||||
configure. Both are linked as imported shared libraries and copied into the
|
DirectX Shader Compiler branch, then to Metal IR through Apple's Metal Shader
|
||||||
bundle before it is signed (third_party/CMakeLists.txt:432-448, 489-579,
|
Converter (libmetalirconverter.dylib). Both are imported shared libraries
|
||||||
src/xenia/app/CMakeLists.txt:347-363, 371-378), so the code calls IRCompilerCreate
|
copied into Frameworks and reached by @rpath
|
||||||
and DxcCreateInstance as ordinary symbols and never names either file
|
(third_party/CMakeLists.txt:432-456, src/xenia/app/CMakeLists.txt:348-360),
|
||||||
(gpu/metal/metal_shader_converter.cc:83, gpu/metal/dxbc_to_dxil_converter.cc:103).
|
so the code calls IRCompilerCreate and DxcCreateInstance as ordinary symbols
|
||||||
MoltenVK is statically linked and its entry points resolve as real symbols,
|
and never names either file
|
||||||
so the Vulkan backend loads no loader library
|
(src/xenia/gpu/metal/metal_shader_converter.cc:83,
|
||||||
(ui/vulkan/vulkan_instance.cc:30-33, 81-82).
|
src/xenia/gpu/metal/dxbc_to_dxil_converter.cc:103). MoltenVK is statically
|
||||||
|
linked and its entry points resolve as real symbols, so the Vulkan backend
|
||||||
|
loads no loader library (src/xenia/ui/vulkan/vulkan_instance.cc:30-39,
|
||||||
|
81-83).
|
||||||
|
|
||||||
No Xbox 360 system file is read. xboxkrnl, xam and xbdm are C++ HLE modules
|
No Xbox 360 system file is read. xboxkrnl, xam and xbdm are C++ HLE modules
|
||||||
registered at startup (emulator.cc:425-427), the XEX1 and XEX2 retail keys
|
registered at startup (src/xenia/emulator.cc:425-427), the XEX1 and XEX2
|
||||||
and the zeroed devkit key are constexpr arrays in the binary
|
retail keys and the zeroed devkit key are constexpr arrays tried in turn
|
||||||
(cpu/xex_module.cc:55-63, used at 344 and 503), and every XConfig setting is
|
(src/xenia/cpu/xex_module.cc:55-63, used at 344, 503 and 925-935), and every
|
||||||
assembled from cvars and constants by BuildSetting, in a file that makes no
|
XConfig setting is assembled from cvars and constants by BuildSetting, in a
|
||||||
filesystem call at all (kernel/xconfig.cc:87-246). Launching a system title
|
file that makes no filesystem call at all
|
||||||
symlinks \SystemRoot to that title's own mount and resolves xam.xex, then
|
(src/xenia/kernel/xconfig.cc:87-246). Launching a system title symlinks
|
||||||
$flash_xam.xex, through the guest filesystem (emulator.cc:744-762): a
|
\SystemRoot to that title's own mount and resolves xam.xex, then
|
||||||
companion module inside the dump the user launched, not a host lookup.
|
$flash_xam.xex, through the guest filesystem
|
||||||
|
(src/xenia/emulator.cc:744-759); spa.bin is resolved the same way inside an
|
||||||
|
installed DLC package (src/xenia/kernel/xam/content_manager.cc:31, 425-426).
|
||||||
|
|
||||||
The fork's data ships inside the executable. assets/font and assets/icon are
|
The fork's data ships inside the executable. The UI font and the app icon are
|
||||||
linked in by xe_embed_binary_assets and the 33 assets/locale catalogues are
|
linked in by xe_embed_binary_assets, and the 33 locale catalogues are
|
||||||
compiled to .mo at configure time and bundled, with no .mo written beside the
|
compiled from .po to .mo at configure time and packed into one compressed
|
||||||
binary (ui/CMakeLists.txt:55-58, 64-83). The UI font is read from that buffer
|
bundle (src/xenia/ui/CMakeLists.txt:55-58, 60-82), which wx_locale.cc serves
|
||||||
with AddFontFromMemoryTTF (ui/imgui_drawer.cc:367-377), and xe::EmbeddedBundle
|
through a loader that replaces the wxWidgets file-based one
|
||||||
decodes the SDL controller mappings (hid/sdl/sdl_input_driver.cc:148-165), the
|
(src/xenia/ui/wx_locale.cc:43-111, 139-140). The font is read from that
|
||||||
canary game patches (patcher/patch_db.cc:303-318) and the canary.json and
|
buffer with AddFontFromMemoryTTF (src/xenia/ui/imgui_drawer.cc:367-377), and
|
||||||
stable.json compatibility lists (app/game_compat_db.cc:65-79).
|
xe::EmbeddedBundle decodes the SDL controller mappings
|
||||||
|
(src/xenia/hid/sdl/sdl_input_driver.cc:148-166), the canary game patches
|
||||||
|
(src/xenia/patcher/patch_db.cc:304-318) and the canary.json and stable.json
|
||||||
|
compatibility lists (src/xenia/app/game_compat_db.cc:65-78).
|
||||||
|
|
||||||
Three cvars accept a file and name none by default, so nothing is expected at
|
Three cvars accept a file and name none by default, so nothing is expected at
|
||||||
a fixed path: custom_font_path falls back to the embedded font
|
a fixed path: custom_font_path falls back to the embedded font
|
||||||
(ui/imgui_drawer.cc:39-44, 353-377), mappings_file to the embedded controller
|
(src/xenia/ui/imgui_drawer.cc:39-42, 353-377), mappings_file to the embedded
|
||||||
DB (hid/sdl/sdl_input_driver.cc:35-39, 148-152), achievement_sound_path leaves
|
controller database (src/xenia/hid/sdl/sdl_input_driver.cc:35-38, 148-166),
|
||||||
the achievement sound silent (ui/audio_helper.cc:21-25, 44-48). Each carries an
|
achievement_sound_path leaves the achievement sound silent
|
||||||
UPDATE_from_path rule that clears the earlier default out of an existing config.
|
(src/xenia/ui/audio_helper.cc:21-24, 44-53). The first two carry an
|
||||||
|
UPDATE_from_path rule that clears the earlier default out of an existing
|
||||||
|
config (src/xenia/ui/imgui_drawer.cc:43-44,
|
||||||
|
src/xenia/hid/sdl/sdl_input_driver.cc:39).
|
||||||
|
|
||||||
Everything under the storage root is written by the emulator or dropped in by
|
Everything under the storage root is written by the emulator or dropped in by
|
||||||
the user: xenia-edge.config.toml and per-title config/<title id>.config.toml
|
the user: xenia-edge.config.toml and per-title config/<title id>.config.toml
|
||||||
(config.cc:44-52), patches/*.patch.toml read on top of the embedded set
|
(src/xenia/config.cc:44-52), patches/*.patch.toml read on top of the embedded
|
||||||
(patcher/patch_db.cc:29-60, app/xenia_main_ios.mm:275-300), plugins/<title id>/plugins.toml
|
set (src/xenia/patcher/patch_db.cc:29-59), plugins/<title id>/plugins.toml
|
||||||
behind allow_plugins, which defaults false (patcher/plugin_loader.cc:16-18, 40-62),
|
behind allow_plugins, which defaults false
|
||||||
content, cache_host and the per-module executable_addr_flags.bin analysis cache
|
(src/xenia/patcher/plugin_loader.cc:16-21, 32-34, 58-62), content, cache_host
|
||||||
(app/xenia_main.cc:588-613, cpu/xex_module.cc:1336-1343). portable.txt next to
|
and the per-module executable_addr_flags.bin analysis cache
|
||||||
the executable keeps the storage root there instead of the user folder
|
(src/xenia/app/xenia_main.cc:588-613, src/xenia/cpu/xex_module.cc:1336-1343).
|
||||||
(app/xenia_main.cc:556-570). On iOS the touch layouts live as
|
portable.txt next to the executable keeps the storage root there instead of
|
||||||
|
the user folder (src/xenia/app/xenia_main.cc:556-570). On iOS the embedded
|
||||||
|
patches are written out to Documents/patches on first run
|
||||||
|
(src/xenia/app/xenia_main_ios.mm:226-253) and touch layouts live as
|
||||||
Documents/touch-layouts/<id>.toml, written by the layout editor
|
Documents/touch-layouts/<id>.toml, written by the layout editor
|
||||||
(ui/ios/touch/touch_layout_store_ios.mm:117-139).
|
(src/xenia/ui/ios/touch/touch_layout_store_ios.mm:133-140). The only bundle
|
||||||
|
file the code opens by name is embedded.mobileprovision, absent from the
|
||||||
|
published .ipa and present only once the user has signed it, read for a
|
||||||
|
single log line reporting its size and two entitlements
|
||||||
|
(src/xenia/app/xenia_main_ios.mm:170-193).
|
||||||
|
|
||||||
files: []
|
files: []
|
||||||
|
|
||||||
exclusion_note: >
|
exclusion_note: >
|
||||||
XeniOS emulates the Xbox 360 by high-level emulation and reads no BIOS,
|
XeniOS emulates the Xbox 360 by high-level emulation and reads no BIOS,
|
||||||
firmware, NAND image, flash dump or keyvault at any point: the kernel, XAM
|
firmware, NAND image, flash dump or keyvault at any point: the kernel, XAM and
|
||||||
and XBDM are compiled-in modules, the XEX AES keys are constant arrays and
|
XBDM are compiled-in modules, the XEX AES keys are constant arrays and XConfig
|
||||||
XConfig is synthesised. Its own data (UI font, icons, locale catalogues, SDL
|
is synthesised. Its own data (UI font, icons, locale catalogues, SDL
|
||||||
controller mappings, game patches, compatibility lists) is compressed into
|
controller mappings, game patches, compatibility lists) is compressed into the
|
||||||
the executable through xe_embed_binary_assets and xe_embed_compressed_bundle,
|
executable through xe_embed_binary_assets and xe_embed_compressed_bundle, so
|
||||||
so none of it exists as a file beside the binary. The three cvars that accept
|
none of it exists as a file beside the binary; the shipped bundle carries only
|
||||||
a path default to empty and fall back to those embedded copies. The two
|
the executable, its property list, an icon, a compiled asset catalog and the
|
||||||
dylibs under Contents/Frameworks, libmetalirconverter.dylib and
|
two shader translation dylibs. The three cvars that accept a path default to
|
||||||
libdxilconv.dylib, are shader translation components linked at build time and
|
empty and fall back to those embedded copies. libmetalirconverter.dylib and
|
||||||
resolved by the loader through @rpath; no code path names them, and they are
|
libdxilconv.dylib are linked at build time and resolved by the loader through
|
||||||
obtained by the same download that provides the executable.
|
@rpath, no code path names them, and they are obtained by the same download
|
||||||
|
that provides the executable.
|
||||||
Reference in new issue
Block a user