From 87087c74f09c88da053ba89ffac8372e262e6bd0 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Mon, 10 Aug 2026 17:54:31 +0200 Subject: [PATCH] feat: resolve bare paths in three profiles --- emulators/boytacean.yml | 12 +-- emulators/mkxp_z.yml | 14 ++-- emulators/xenia-edge.yml | 173 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 186 insertions(+), 13 deletions(-) create mode 100644 emulators/xenia-edge.yml diff --git a/emulators/boytacean.yml b/emulators/boytacean.yml index dd927b19..80347ede 100644 --- a/emulators/boytacean.yml +++ b/emulators/boytacean.yml @@ -36,7 +36,7 @@ files: mode: standalone size: 256 note: "Original Nintendo DMG boot ROM" - source_ref: "src/gb.rs:1400, data.rs:14" + source_ref: "src/gb.rs:1400, src/data.rs:14" - name: sgb_boot.bin system: nintendo-gb @@ -45,7 +45,7 @@ files: mode: standalone size: 256 note: "Super Game Boy boot ROM" - source_ref: "src/gb.rs:1401, data.rs:29" + source_ref: "src/gb.rs:1401, src/data.rs:29" - name: dmg_bootix.bin system: nintendo-gb @@ -54,7 +54,7 @@ files: mode: standalone size: 256 note: "Open-source DMG boot ROM from Bootix (default DMG)" - source_ref: "src/gb.rs:1402, data.rs:44" + source_ref: "src/gb.rs:1402, src/data.rs:44" - name: mgb_bootix.bin system: nintendo-gb @@ -63,7 +63,7 @@ files: mode: standalone size: 256 note: "Open-source MGB (Pocket) boot ROM from Bootix" - source_ref: "src/gb.rs:1403, data.rs:59" + source_ref: "src/gb.rs:1403, src/data.rs:59" - name: cgb_boot.bin system: nintendo-gbc @@ -72,7 +72,7 @@ files: mode: standalone size: 2304 note: "Original Nintendo CGB boot ROM" - source_ref: "src/gb.rs:1404, data.rs:74" + source_ref: "src/gb.rs:1404, src/data.rs:74" - name: cgb_boytacean.bin system: nintendo-gbc @@ -81,4 +81,4 @@ files: mode: standalone size: 2304 note: "Custom open-source CGB boot ROM (default CGB)" - source_ref: "src/gb.rs:1405, data.rs:177" + source_ref: "src/gb.rs:1405, src/data.rs:177" diff --git a/emulators/mkxp_z.yml b/emulators/mkxp_z.yml index 29483818..f8f5ba86 100644 --- a/emulators/mkxp_z.yml +++ b/emulators/mkxp_z.yml @@ -5,7 +5,7 @@ source: "https://github.com/white-axe/mkxp-z" source_ref: "branch: libretro (PR #255 to mkxp-z/mkxp-z)" upstream: "https://github.com/mkxp-z/mkxp-z" profiled_date: "2026-03-24" -source_commit: "19f2d8c814c2554a7455e5ed08e963d8a8caddfe" +source_commit: "f4bc5aacee7875526ac7053cb61c0dc2357cac17" core_version: "f4bc5aa" display_name: "RPG Maker XP/VX/VX Ace (mkxp-z)" cores: @@ -29,39 +29,39 @@ files: category: game_data path: "mkxp-z/RTP/Standard/" required: false - source_ref: "core.cpp:1042-1085, core.cpp:1087-1158" + source_ref: "src/core.cpp:1042-1085, src/core.cpp:1087-1158" - name: "RPGVX" description: "RPG Maker VX Run-Time Package" category: game_data path: "mkxp-z/RTP/RPGVX/" required: false - source_ref: "core.cpp:1042-1085, core.cpp:1087-1158" + source_ref: "src/core.cpp:1042-1085, src/core.cpp:1087-1158" - name: "RPGVXAce" description: "RPG Maker VX Ace Run-Time Package" category: game_data path: "mkxp-z/RTP/RPGVXAce/" required: false - source_ref: "core.cpp:1042-1085, core.cpp:1087-1158" + source_ref: "src/core.cpp:1042-1085, src/core.cpp:1087-1158" - name: "Fonts" description: "Fallback font directory (.otf/.ttf)" category: game_data path: "mkxp-z/Fonts/" required: false - source_ref: "core.cpp:1160-1172" + source_ref: "src/core.cpp:1160-1172" - name: "Preload" description: "Ruby scripts loaded before game scripts" category: game_data path: "mkxp-z/Scripts/Preload/" required: false - source_ref: "core.cpp:876-907" + source_ref: "src/core.cpp:876-907" - name: "Postload" description: "Ruby scripts loaded after game scripts (RGSS3 only)" category: game_data path: "mkxp-z/Scripts/Postload/" required: false - source_ref: "core.cpp:886-917" + source_ref: "src/core.cpp:886-917" diff --git a/emulators/xenia-edge.yml b/emulators/xenia-edge.yml new file mode 100644 index 00000000..4a0f00fc --- /dev/null +++ b/emulators/xenia-edge.yml @@ -0,0 +1,173 @@ +emulator: Xenia Edge +type: standalone +core_classification: community_fork +source: "https://github.com/has207/xenia-edge" +upstream: "https://github.com/has207/xenia-edge" +source_commit: "2fe66280ac26502261414703bc7187b77dacc8d3" +profiled_date: "2026-08-10" +core_version: "edge" +display_name: "Xenia Edge (Xbox 360)" +cores: + - xenia-edge +systems: + - microsoft-xbox-360 +mode: standalone + +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 `; RetroDECK unpacks the AppImage + into a xenia-edge component and executes bin/xenia_edge. + + No Xbox 360 system file is read. xboxkrnl, xam and xbdm are C++ HLE modules + registered at startup (emulator.cc:388-397), the XEX2 retail and devkit AES + keys are constant arrays in the binary (xex_module.cc:58-63), and every + XConfig setting is synthesised from cvars and constants by BuildSetting + rather than read from a flash image (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 (emulator.cc:718-733); 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 + (imgui_drawer.cc:367-377), and xe::EmbeddedBundle decodes the SDL controller + mappings (sdl_input_driver.cc:148-165), the canary game patches + (patch_db.cc:304-310), the game-compatibility master.json + (game_compat_db.cc:47-58) and the x360db games.json (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 + (imgui_drawer.cc:39-44, 353-386), mappings_file to the embedded controller DB + (sdl_input_driver.cc:35-38, 148-152), achievement_sound_path leaves the + achievement sound silent (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 (imgui_drawer.cc:388-470, 472-556). + + 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 (config.cc:43-46), + patches/*.patch.toml read on top of the embedded set (emulator.cc:383, + patch_db.cc:34-58), plugins//plugins.toml behind allow_plugins, + which defaults false (plugin_loader.cc:16-38, 58-72), content, cache0, cache1, + scratch and mu (emulator.cc:1412-1471). 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 Windows the Direct3D 12 and Vulkan runtimes are not in the release zip, + which holds only the build output (.github/workflows/build.yml:416-426). 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: dxcompiler.dll + path: "D3D12/dxcompiler.dll" + system: microsoft-xbox-360 + required: true + description: "DirectX Shader Compiler 1.9.2602.24, DXIL compilation for the Direct3D 12 backend" + source_ref: "src/xenia/ui/d3d12/d3d12_provider.cc:279-322, src/xenia/gpu/d3d12/pipeline_cache.cc:121-134, src/xenia/ui/redist_installer_wx.cc:79-85, 119-122, 594-629" + note: >- + Loaded by full path from the D3D12 folder next to the executable, then by + plain name from the system search path. PipelineCache::Initialize returns + false without it because guest and system shaders are all DXIL, and that + failure propagates to "Failed to setup graphics_system!" + (emulator.cc:430-435). Windows defaults to gpu = "d3d12" + (src/xenia/app/xenia_main.cc:70) 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/dxcompiler.dll in + dxc_2026_05_27.zip of DirectXShaderCompiler release v1.9.2602.24, pinned + at sha256 cf658aacf070d3045e31b8f1f8a696c2945f37c1095019481ef7c513368db3b4; + bin/arm64 on ARM64 builds. + + - name: dxil.dll + path: "D3D12/dxil.dll" + system: microsoft-xbox-360 + required: true + description: "DXIL signing and validation library shipped with DirectX Shader Compiler 1.9.2602.24" + source_ref: "src/xenia/ui/d3d12/d3d12_provider.cc:286-292, src/xenia/gpu/d3d12/spirv_to_dxil_compiler.cc:154-169, 194-200, src/xenia/ui/redist_installer_wx.cc:79-85, 119-122" + note: >- + Preloaded by full path so dxcompiler's own plain-name load resolves to it + and the DXIL leaves signed; spirv_to_dxil queries its validator version to + stamp the container the validator will accept. Same archive and pin as + dxcompiler.dll, from bin/x64 or bin/arm64. + + - name: D3D12Core.dll + 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:325-336, src/xenia/ui/windowed_app_main_win.cc:25-28, src/xenia/ui/redist_installer_wx.cc:87-93, 123-126, 631-676" + 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 + 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:357-385, src/xenia/ui/redist_installer_wx.cc:127-134, 678-723" + 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 + 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:95-105, 138-142, 725-764" + 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 + system: microsoft-xbox-360 + required: false + validation: [signature] + description: "Microsoft Visual C++ 2015-2022 redistributable installer" + source_ref: "src/xenia/app/xenia_main.cc:578-582, src/xenia/ui/redist_installer_wx.cc:144-172, 379-409, 766-875" + unsourceable: >- + The aka.ms link is a rolling redirect to whatever build Microsoft + currently publishes, so the artifact has no fixed identity to record; the + source pins no SHA-256 for that reason and verifies an Authenticode chain + with a "Microsoft Corporation" signer instead. + 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.