mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-18 01:13:30 -05:00
The buildbot publishes four cores no profile named. Geartowns (FM Towns) and CoolbarEmu get profiles read from their source, Xenia Edge gains its libretro build, and pokketstation follows its repository's rename to Pokket, re-read at HEAD.
204 lines
12 KiB
YAML
204 lines
12 KiB
YAML
emulator: Xenia Edge
|
|
type: "standalone + libretro"
|
|
core_classification: community_fork
|
|
source:
|
|
standalone: "https://github.com/has207/xenia-edge"
|
|
libretro: "https://git.libretro.com/libretro/xenia-libretro"
|
|
upstream: "https://github.com/has207/xenia-edge"
|
|
source_commit:
|
|
standalone: "fb1c5bf08b16dab5422136c44c593a9f516750f0"
|
|
libretro: "552d508a563dec9a6d05042654de9f76f00e9ba5"
|
|
profiled_date: "2026-10-17"
|
|
core_version:
|
|
standalone: "edge"
|
|
libretro: "8dc77b0"
|
|
display_name: "Xenia Edge (Xbox 360)"
|
|
cores:
|
|
- "xenia-edge"
|
|
- "xenia_edge"
|
|
systems:
|
|
- microsoft-xbox-360
|
|
|
|
notes: |
|
|
Xbox 360 emulator forked from Xenia Canary, with a wxWidgets front end, a
|
|
game library, and Direct3D 12, Vulkan and Metal backends. Releases are tagged
|
|
by short commit on the edge branch and ship as xenia_edge_linux.AppImage,
|
|
xenia_edge_macos.dmg and xenia_edge_windows.zip. ES-DE finds it through the
|
|
XENIA-EDGE rule and runs `xenia_edge <rom>`; RetroDECK unpacks the AppImage
|
|
into a xenia-edge component and executes bin/xenia_edge.
|
|
|
|
The libretro core xenia_edge_libretro is built from libretro/xenia-libretro
|
|
on git.libretro.com (branch libretro, CORENAME xenia_edge in .gitlab-ci.yml),
|
|
mirrored as WizzardSK/xenia-libretro on GitHub. It carries the xenia-edge
|
|
tree merged from edge at 8dc77b09, the release named in upstream.version and
|
|
reported as library_version (libretro/CMakeLists.txt:74-78,
|
|
libretro/libretro.cpp:1906-1909). The core is one shared library linked from
|
|
the emulator's static libraries, without the wxWidgets app
|
|
(libretro/CMakeLists.txt:1-13, 104-130), and the top-level CMakeLists.txt
|
|
defines XENIA_LIBRETRO for every target of the tree. Everything it keeps
|
|
is under <system>/Xenia-Edge: storage root, content, cache, xenia.log, and
|
|
xbl_profilename.txt, which it creates with "Player" and reads to name the
|
|
profile it creates (libretro/libretro.cpp:1476-1503, 1526-1546). The frame
|
|
rate unlock list is compiled into the core and written there when missing
|
|
(libretro/CMakeLists.txt:15-33, libretro/libretro_gamedb.cc:36-51), and the
|
|
bundled patches of the running title are written to Xenia-Edge/patches with
|
|
their core option state before Xenia reads that folder at boot
|
|
(libretro/libretro.cpp:791-798). It reads no firmware, font or runtime from
|
|
disk. Vulkan comes from the frontend's instance
|
|
(libretro/libretro_vk_presenter.cc:42-62), Direct3D 12 runs on the system
|
|
runtime with the D3D12Core.dll check of d3d12_provider.cc compiled out under
|
|
XENIA_LIBRETRO, and the download prompts for missing runtimes are stubbed
|
|
out (libretro/libretro_headless_stubs.cc:22-27).
|
|
The Windows build embeds bin/x64/dxil.dll of the DXC release as a resource
|
|
(libretro/CMakeLists.txt:35-51, .ci/build-windows-cross.sh:61-80) and writes
|
|
it to Xenia-Edge/D3D12/dxil.dll when the copy there differs in size, then
|
|
points d3d12_runtime_path at that folder, where the D3D12 provider loads it
|
|
by full path (libretro/libretro.cpp:1437-1462, 1552-1559).
|
|
|
|
No Xbox 360 system file is read. xboxkrnl, xam and xbdm are C++ HLE modules
|
|
registered at startup (src/xenia/emulator.cc:395-404), the XEX2 retail and devkit AES
|
|
keys are constant arrays in the binary (src/xenia/cpu/xex_module.cc:67-72), and every
|
|
XConfig setting is synthesised from cvars and constants by BuildSetting
|
|
rather than read from a flash image (src/xenia/kernel/xconfig.cc:87-246, 259-272). When the
|
|
launched title is itself a system title the kernel resolves xam.xex, then
|
|
$flash_xam.xex, through the guest filesystem under the \SystemRoot symlink
|
|
pointing at that title's own directory (src/xenia/emulator.cc:777-792); that is a
|
|
companion module inside the dump the user launched, not a host-side lookup.
|
|
|
|
The fork's data ships inside the executable. assets/font/Inter-VariableFont
|
|
and assets/icon are linked in by xe_embed_binary_assets and the 33
|
|
assets/locale catalogues are compiled to .mo at configure time and bundled,
|
|
with no .mo written next to the binary (src/xenia/ui/CMakeLists.txt:48-76).
|
|
The UI font is read from that buffer with AddFontFromMemoryTTF
|
|
(src/xenia/ui/imgui_drawer.cc:374-384), and xe::EmbeddedBundle decodes the SDL controller
|
|
mappings (src/xenia/hid/sdl/sdl_input_driver.cc:237-254), the canary game patches
|
|
(src/xenia/patcher/patch_db.cc:318-324), the game-compatibility master.json
|
|
(src/xenia/app/game_compat_db.cc:47-58) and the x360db games.json (src/xenia/app/game_title_db.cc:50-60).
|
|
|
|
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 Inter
|
|
(src/xenia/ui/imgui_drawer.cc:39-44, 360-393), mappings_file to the embedded controller DB
|
|
(src/xenia/hid/sdl/sdl_input_driver.cc:36-39, 237-241), achievement_sound_path leaves the
|
|
achievement sound silent (src/xenia/ui/audio_helper.cc:21-24, 38-52). For glyphs the
|
|
embedded font lacks, the host font comes from the OS: tahoma.ttf and
|
|
msgothic.ttc out of the Windows fonts folder, or the fontconfig sans-serif and
|
|
CJK matches on Linux (src/xenia/ui/imgui_drawer.cc:395-477, 479-563).
|
|
|
|
Everything under the storage root is written by the emulator or dropped in by
|
|
the user: xenia-edge.config.toml and per-game .config.toml (src/xenia/config.cc:45-48),
|
|
patches/*.patch.toml read on top of the embedded set (src/xenia/emulator.cc:390,
|
|
src/xenia/patcher/patch_db.cc:34-52, 60-75) and listed by the patches panel
|
|
beside the bundled ones (src/xenia/patcher/patch_db.cc:373-397),
|
|
plugins/<title id>/plugins.toml behind allow_plugins,
|
|
which defaults false (src/xenia/patcher/plugin_loader.cc:16-38, 58-72), content
|
|
(src/xenia/app/xenia_main.cc:563-566), scratch, cache0, cache1, cache and mu
|
|
(src/xenia/emulator.cc:1479-1547). portable.txt next to the executable
|
|
keeps the storage root there instead of the user folder
|
|
(src/xenia/app/xenia_main.cc:524-538).
|
|
|
|
On Windows the Direct3D 12 and Vulkan runtimes are not in the release zip,
|
|
which holds only the build output (.github/workflows/build.yml:392-402). The
|
|
emulator looks for them in D3D12/ and Vulkan/ beside the executable and
|
|
offers to download pinned archives from Microsoft and LunarG, gated by
|
|
d3d12_install_missing_runtime, vulkan_install_missing_loader and
|
|
update_vc_runtime, all default true (src/xenia/ui/redist_installer_wx.cc:51-70). Each
|
|
archive is checked against a SHA-256 held in the source before its members
|
|
are extracted, so the hash covers the archive and never the extracted DLL,
|
|
which is why no hash is declared on the entries below. The Linux and macOS
|
|
builds need none of them: MoltenVK is statically linked and the Vulkan loader
|
|
comes from the system (src/xenia/ui/vulkan/vulkan_instance.cc:66-72, 81-83).
|
|
|
|
files:
|
|
# -- Direct3D 12 runtime, Windows only --
|
|
|
|
- name: "dxil.dll"
|
|
mode: standalone
|
|
path: "D3D12/dxil.dll"
|
|
system: microsoft-xbox-360
|
|
required: true
|
|
description: "DXIL signer and validator from DirectX Shader Compiler 1.9.2602.24"
|
|
source_ref: "src/xenia/ui/d3d12/d3d12_provider.cc:267-291, src/xenia/gpu/d3d12/pipeline_cache.cc:114-122, src/xenia/ui/redist_installer_wx.cc:79-87, 120-122, src/xenia/ui/redist_installer_wx.cc:174-182, src/xenia/ui/redist_installer_wx.cc:582-614"
|
|
note: >-
|
|
The only shader library the backend still needs. Loaded by full path from
|
|
the D3D12 folder next to the executable, then by plain name from the
|
|
system search path, because the signer's own plain-name load skips
|
|
D3D12/. D3D12 rejects an unsigned shader, so PipelineCache::Initialize
|
|
stops when IsSignerAvailable() is false and asks for a recent dxil.dll in
|
|
the D3D12 folder; that failure propagates to "Failed to setup
|
|
graphics_system!" (src/xenia/emulator.cc:435-446). Windows defaults to
|
|
gpu = "d3d12" (src/xenia/emulator.cc:119) and the backend factory
|
|
only falls back when D3D12GraphicsSystem::IsAvailable() is false, which
|
|
tests the D3D12 API itself, not the redistributable. Taken from
|
|
bin/x64/dxil.dll in dxc_2026_05_27.zip of DirectXShaderCompiler release
|
|
v1.9.2602.24, pinned at sha256
|
|
cf658aacf070d3045e31b8f1f8a696c2945f37c1095019481ef7c513368db3b4;
|
|
bin/arm64 on ARM64 builds. It is the single entry the installer extracts
|
|
from that archive. The libretro core writes its own embedded copy to
|
|
Xenia-Edge/D3D12/ in the system directory and loads it from there.
|
|
|
|
- name: "D3D12Core.dll"
|
|
mode: standalone
|
|
path: "D3D12/D3D12Core.dll"
|
|
system: microsoft-xbox-360
|
|
required: true
|
|
description: "DirectX 12 Agility SDK 1.619.3 runtime"
|
|
source_ref: "src/xenia/ui/d3d12/d3d12_provider.cc:293-305, src/xenia/ui/windowed_app_main_win.cc:25-28, src/xenia/ui/redist_installer_wx.cc:88-94, 123-126, src/xenia/ui/redist_installer_wx.cc:623-668"
|
|
note: >-
|
|
The binary exports D3D12SDKVersion 619 and D3D12SDKPath ".\D3D12\", so
|
|
d3d12.dll loads it at the first device creation. The provider checks for
|
|
it, offers the download, and returns false when it is still absent. Taken
|
|
from build/native/bin/x64/D3D12Core.dll in the Microsoft.Direct3D.D3D12
|
|
1.619.3 NuGet package, pinned at sha256
|
|
43a7d5a3973812eb4b42623fae5275c790a005b8e48b8d7f5bb43cef39e073c5;
|
|
build/native/bin/arm64 on ARM64 builds. The package version has to match
|
|
the exported number.
|
|
|
|
- name: "D3D12SDKLayers.dll"
|
|
mode: standalone
|
|
path: "D3D12/D3D12SDKLayers.dll"
|
|
system: microsoft-xbox-360
|
|
required: false
|
|
description: "Direct3D 12 debug layer from Agility SDK 1.619.3"
|
|
source_ref: "src/xenia/ui/d3d12/d3d12_provider.cc:326-363, src/xenia/ui/redist_installer_wx.cc:127-134, src/xenia/ui/redist_installer_wx.cc:670-715"
|
|
note: >-
|
|
Reached only when d3d12_debug is set, which defaults false
|
|
(src/xenia/ui/d3d12/d3d12_provider.cc:23). Fetching it re-extracts D3D12Core.dll alongside,
|
|
since the debug layer only loads under the Agility runtime. Same NuGet
|
|
package and pin as D3D12Core.dll.
|
|
|
|
# -- Vulkan runtime, Windows only --
|
|
|
|
- name: "vulkan-1.dll"
|
|
mode: standalone
|
|
path: "Vulkan/vulkan-1.dll"
|
|
system: microsoft-xbox-360
|
|
required: false
|
|
description: "Khronos Vulkan loader 1.4.350.0 for the Vulkan backend on Windows"
|
|
source_ref: "src/xenia/ui/vulkan/vulkan_instance.cc:84-99, src/xenia/ui/redist_installer_wx.cc:96-106, 138-142, src/xenia/ui/redist_installer_wx.cc:717-756"
|
|
note: >-
|
|
Read only when the Vulkan backend is selected, and the plain-name load
|
|
that follows finds the copy GPU drivers install system-wide, so the folder
|
|
next to the executable is a fallback. Taken from
|
|
VulkanRT-X64-1.4.350.0-Components/x64/vulkan-1.dll in LunarG's
|
|
vulkan-runtime-components.zip 1.4.350.0, pinned at sha256
|
|
23ce69f32cef3e2799617e2b1776cd0c71030d23a91f8375821cc40d76b185b9. The zip
|
|
carries x64 and x86 only, so the ARM64 build never offers the download.
|
|
|
|
# -- Visual C++ runtime, Windows only --
|
|
|
|
- name: "vc_redist.x64.exe"
|
|
mode: standalone
|
|
system: microsoft-xbox-360
|
|
required: false
|
|
validation: [signature]
|
|
description: "Microsoft Visual C++ 2015-2022 redistributable installer"
|
|
source_ref: "src/xenia/app/xenia_main.cc:546-550, src/xenia/ui/redist_installer_wx.cc:144-172, src/xenia/ui/redist_installer_wx.cc:373-403, src/xenia/ui/redist_installer_wx.cc:758-867"
|
|
note: >-
|
|
Not loaded by the emulator. The runtime version is read from
|
|
HKLM\SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\x64, and when it is
|
|
older than 14.<_MSC_VER - 1900> clamped to 14.44 the installer
|
|
is downloaded to %TEMP%\xenia_vc_redist.exe and run with
|
|
"/install /passive /norestart", after which the process relaunches. What
|
|
the binary actually links is vcruntime140 and msvcp140, resolved by the OS
|
|
loader. vc_redist.arm64.exe on ARM64 builds.
|