104 Commits
Author SHA1 Message Date
iChris4 5e9a304a65 Merge branch 'openxr-work' of https://github.com/iChris4/dolphinXR into openxr-work 2026-09-30 19:56:24 +02:00
iChris4 1678bc7cd5 Update fmt submodule to latest commit 2026-09-30 19:56:16 +02:00
iChris4 ffe128309f Add tracked eye projection rows to OpenXRManager for HUD independence 2026-09-30 19:55:15 +02:00
Christophe 6955095298 Merge pull request #5 from BookOfGreg/qt6-10-fix
Qt6 10 fix
2026-09-21 00:26:55 +02:00
Christophe 308ce19adf Add GitHub Sponsors username to FUNDING.yml 2026-09-21 00:26:23 +02:00
Greg Myers 6f5b20ac24 Dist 2026-08-21 22:15:04 +01:00
Greg Myers 1292404e31 docker build 2026-08-21 22:14:52 +01:00
Greg Myers 2d41ce7ac4 qt6 2026-08-19 19:34:22 +01:00
Greg Myers ca0070222d WIP Docker 2026-08-18 21:25:33 +01:00
Greg Myers 3d069f0bb9 fix: qt6.10 on ubuntu does not appear to have guiprivate that causes the need for the specific fix 2026-08-17 23:08:36 +01:00
iChris4 9bd33b5f6b Clears m_loaded_game_id when stopping emulation 2026-08-11 17:22:42 +02:00
iChris4 85c4266b29 Updated Readme 2026-07-28 16:08:54 +02:00
iChris4 a7885b3c71 Updated Games Profiles 2026-07-28 15:59:58 +02:00
iChris4 6575095298 Updated Quest Settings 2026-07-28 15:59:44 +02:00
iChris4 c28b2ba0f8 Added spinbox in Graphics settings to set custom command list buffer 2026-07-27 04:19:10 +02:00
iChris4 ca5e69a427 Fixed Vulkan Depth clear value 2026-07-26 03:49:25 +02:00
iChris4 06fc90a0bf Increased command list from 3 to 16 2026-07-26 02:45:29 +02:00
iChris4 e94d5122cb Added Wiimote Distance Sensitivity 2026-07-25 23:46:40 +02:00
iChris4 3ddf87e56e Updated VRPane UI & Settings 2026-07-25 18:53:44 +02:00
iChris4andClaude Opus 5 05d91da8bf Fixed Vulkan VR crash when opening a second game in one process
Opening a game, closing it, and opening another crashed or device-lost on
the Vulkan backend with VR enabled. D3D11 and D3D12 both restart cleanly,
so this was Vulkan-specific rather than an OpenXR runtime limitation.

Root cause, proven with VK_EXT_device_fault plus
VK_EXT_device_address_binding_report: the fault is a write-invalid at a
page-aligned address that the binding tracer reports as not owned by the
second game device. The OpenXR compositor still references resources that
lived on the first game VkDevice; destroying that device frees the memory
and the compositor later writes into the freed page. The D3D backends are
immune because their shared compositor resources are COM ref-counted,
while vkDestroyDevice frees unconditionally.

Fix: persist and reuse the VulkanContext (VkInstance and VkDevice) across
VR games, so vkCreateDevice/vkDestroyDevice run once per process and those
pages are never unmapped. Per-game objects are still fully recreated,
including the surface, swapchain, object cache, command buffers, and the
OpenXR session and XrInstance. A device-lost context is never persisted. A
non-VR launch, or a runtime requiring a device extension the persisted
device lacks, discards it and initializes fresh.

Two problems that persisting exposed:

- InitBackendInfo() creates and destroys a temporary VkInstance on every
  game boot and then calls UnloadVulkanLibrary(), which nulls every global
  Vulkan function pointer. Reuse now re-resolves the instance and device
  dispatch for the persisted handles.

- That same UnloadVulkanLibrary() unmaps vulkan-1.dll on runtimes that do
  not otherwise pin it, invalidating the persisted handles. This is why
  VDXR still failed after SteamVR worked. Added KeepVulkanLibraryLoaded()
  so unloading is suppressed while a device is persisted.

Also removes the XR_KHR_vulkan_enable2 path. Creating a second device
against a retained XrInstance crashes inside the runtime in a way SEH
cannot catch. The backend now always uses legacy XR_KHR_vulkan_enable,
where Dolphin owns instance and device creation and the runtime binds at
xrCreateSession.

Supporting changes: ordered OpenXR session teardown (ShutdownSession and
DestroySession), a device-lost guard in CommandBufferManager that stops
emulation instead of resubmitting to a dead device, synchronous release of
Dolphin views and framebuffers before xrDestroySwapchain, and the two GPU
fault diagnostics. Note that vkGetDeviceFaultInfoEXT must be called with
vendorBinarySize zeroed on the second call, or the driver writes the
vendor blob to a null pointer.

Verified on SteamVR/PSVR2, VDXR/Quest 3, and Meta Link over repeated
open/close cycles.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-25 15:43:14 +02:00
iChris4 b38bebb869 Added semantic family scheme to the shader hunter 2026-07-24 17:41:25 +02:00
iChris4 0b3f728999 Removed Debug Logs 2026-07-24 16:56:48 +02:00
iChris4 1d807900ff Moved "Debug Log Draws" to the VR Pane 2026-07-24 16:50:43 +02:00
iChris4 39b0718a3c Updated UI 2026-07-24 16:35:55 +02:00
iChris4 56261dca10 Added "preserve_stereo_efb" to Fullscreen override 2026-07-24 16:28:46 +02:00
iChris4 c42e41c88e Added Global Flag Override and "Flag" type to Texture Override 2026-07-24 04:00:51 +02:00
iChris4 6814e0b955 Updated Hide Object UI 2026-07-24 03:07:44 +02:00
iChris4 a39dce8432 Added right-click menu for Overrides sorting 2026-07-24 01:39:02 +02:00
iChris4 5a01a4a673 Adjusted Texture Element Override Layout 2026-07-24 01:18:33 +02:00
iChris4 655b65af7a Added drag and drop support for PNG/DDS from File Explorer onto the Texture Override Tool 2026-07-24 01:06:50 +02:00
iChris4 a409877f3d Added texture override parser support for tex1_WxH_m_<hash> 2026-07-23 23:59:02 +02:00
iChris4 6ff81b072f Added Screen Pane Depth options type "Original, Physical, Flat" 2026-07-23 23:40:13 +02:00
iChris4 a5f7dd1084 Screen_pane depth fix (MKDD) 2026-07-23 20:12:02 +02:00
iChris4 d85e292b12 Presentation-stage fix & Added screen_pane type override 2026-07-23 17:45:43 +02:00
iChris4 f3d3975fe2 Improving OpenXR Wii pointer aim during fast wrist motion 2026-07-23 01:52:28 +02:00
iChris4 b4796daa35 Added Frame Size from XFB Copy, Small 3D Viewports and Detect Render-to-Texture Viewports 2026-07-23 00:14:58 +02:00
iChris4 fc00505bab OpenXR Wii Remote Absolute pointing and Motion fixes 2026-07-22 18:32:55 +02:00
iChris4 095656b05b Added one-time Quest controller prompt 2026-07-22 17:08:20 +02:00
iChris4 f4c435dc3b Fixed "Configure in VR" on Quest 2026-07-22 14:57:59 +02:00
iChris4 a72e99fd4b Updated VR-Config to match Game Config behavior 2026-07-22 05:24:01 +02:00
iChris4 ba2baf3a52 VR Config UI Tweaks 2026-07-22 04:51:53 +02:00
iChris4 e9da12534f Removed (VR) after Vulkan and Direct3D 11 2026-07-22 04:36:13 +02:00
iChris4 d52a468f14 Added the default Reset VR Position binding @(Shift+R) 2026-07-22 04:27:33 +02:00
iChris4 3f7bab1a03 Added new Hotkeys for the Texture Override Tool and Anchor Overrides 2026-07-22 04:23:19 +02:00
iChris4 e963819d00 Added "Configure in VR" for Hotkey Settings 2026-07-22 03:37:00 +02:00
iChris4 8a6747efdd Updated VRPane layout 2026-07-22 03:23:59 +02:00
iChris4 1793f16d6d Removed Element Depth 2026-07-22 02:52:37 +02:00
iChris4 5f651538d3 Removed depreciated Auto Layer and Layer Offset 2026-07-21 21:01:36 +02:00
iChris4 a5d08016a4 Added Controller Anchor to Shader and Texture Override Tool 2026-07-21 19:51:32 +02:00
iChris4 eca3105a0b Added Camera Anchor to Shader and Texture Override Tool 2026-07-21 18:36:46 +02:00
iChris4 8aa116d0e2 Added Custom FPV UPM Value 2026-07-21 17:49:31 +02:00
iChris4 e7662f3c8b Removed "LockHeadPosePerFrame " and "AutoImmediateXFB "in VR Hacks 2026-07-21 17:06:40 +02:00
iChris4 7ba102775f Added "Configure in VR" to the GameCube bindings 2026-07-21 15:12:49 +02:00
iChris4 d94a5a0cfe Updated "Configure in VR" Wii Remote OpenXR controller bindings 2026-07-20 02:53:55 +02:00
iChris4 2aa5f3b2ca Added "Controller Anchor" type to the group elements override 2026-07-19 17:56:55 +02:00
iChris4 b44ac1f850 Added "Camera Anchor" type to Group Element Override 2026-07-19 04:51:48 +02:00
iChris4 405f30d211 Added "Auto-Exclude EFB Effects" to 2D Virtual Screen 2026-07-19 01:29:05 +02:00
iChris4 e77555d766 XFB pose stamps & EFB clear moved off the present path 2026-07-18 23:24:17 +02:00
iChris4 4825e49442 Added "Exact Screen Depth" mode 2026-07-18 16:47:07 +02:00
iChris4 63a8bf0714 Vulkan Multiview Fixes for Ubershaders and EFB clears 2026-07-18 00:02:36 +02:00
iChris4 d5466347e8 Removed log 2026-07-17 05:09:20 +02:00
iChris4 a77f7c85d3 D3D12 Texture2DArray OpenXR swapchain 2026-07-17 04:33:48 +02:00
iChris4 e61053a0ba Added Semantic VS/GS family signatures 2026-07-17 04:06:11 +02:00
iChris4 053caf07ce Fix Vulkan Virtual 2D Screen Clamping 2026-07-16 22:57:22 +02:00
iChris4 cad9760185 Updated "Pink" Hunting Mode 2026-07-16 22:37:18 +02:00
iChris4 dbafa8bdf4 XR CPU Thread affinity 2026-07-16 17:32:10 +02:00
iChris4 a4a4eec869 Defer eye blit to submit time 2026-07-16 15:38:48 +02:00
iChris4 3bfa9ad3ec Improved passthrough & Added XRPacingThread 2026-07-12 01:32:52 +02:00
iChris4 490695d83f Added foveated rendering 2026-07-11 04:16:02 +02:00
iChris4 19d89d4ba0 Merge branch 'openxr-work' of https://github.com/iChris4/dolphinXR into openxr-work 2026-07-10 16:04:21 +02:00
iChris4 493b440411 Added D3D12 OpenXR Support 2026-07-10 16:01:42 +02:00
iChris4 7ad9950f70 ClearEFB passthrough optimization 2026-07-10 00:28:08 +02:00
iChris4 1db9a150c7 Added Quest Passthrough 2026-07-10 00:03:19 +02:00
iChris4 ff556da459 Dropdown replaced with two icon toggle buttons 2026-07-09 04:52:37 +02:00
iChris4 ed0f0d5beb UI Adjustments 2026-07-09 04:35:01 +02:00
iChris4 2ba044173d Save List/Grid state 2026-07-09 04:21:58 +02:00
iChris4 90274522bf Added grid selection 2026-07-09 04:16:28 +02:00
iChris4 2e40b8337b Thumbnail preview beside each hash 2026-07-09 02:02:38 +02:00
iChris4 f3850f13a5 Texture Element Override pane added Warning and Import 2026-07-09 01:38:25 +02:00
iChris4 f97441c943 UPM Max raised to 2000 & Exponential slider scale 2026-07-08 03:26:39 +02:00
iChris4 cb29dca54f Auto Layer Spread false by default 2026-07-08 02:21:00 +02:00
iChris4 b5c0d83c96 Removed the running-game restriction for Reset VR Settings 2026-07-08 02:15:55 +02:00
iChris4 f500c46df1 Merge branch 'openxr-work' of https://github.com/iChris4/dolphinXR into openxr-work 2026-07-08 00:03:34 +02:00
iChris4 758d2915e4 Skip Shader/Elements/Textures overrides in flat 2D cinema mode 2026-07-08 00:03:17 +02:00
Christophe d752744646 Merge pull request #3 from Nobbie248/openxr-work
Sort gitmodules and build cleanup
2026-07-07 23:54:53 +02:00
Christophe aade5408f1 Merge pull request #4 from Nobbie248/xray-fix
Fix Metroid Prime 1 X-Ray visor VR handling
2026-07-07 23:53:34 +02:00
Nobbie 528a4f0a50 Force OpenXR loader-only build 2026-07-07 20:25:01 +10:00
Nobbie 38b8ac85b6 Fix Metroid Prime X-Ray visor VR handling 2026-07-07 20:16:11 +10:00
Nobbie 6417d5ab79 Merge pull request #2 from Nobbie248/submodules-cleanup
Sort gitmodules alphabetically
2026-07-07 14:42:12 +10:00
Nobbie 74181b5ea2 Sort gitmodules alphabetically 2026-07-07 14:29:22 +10:00
iChris4 102605f2da Added Missing Files 2026-07-07 05:42:37 +02:00
iChris4 d9565464a9 Added 2D "cinema" mode 2026-07-07 05:37:17 +02:00
iChris4 04538b0724 Added OpenXR 2026-07-07 04:38:30 +02:00
iChris4 bc7a7dbe67 Updated Passthrough Mode 2026-07-07 04:11:24 +02:00
iChris4 a5e3bbf159 Restored the direct-to-HMD switch 2026-07-04 04:40:14 +02:00
iChris4 f7abfcd745 Initial OpenGL VR Support 2026-07-04 02:43:15 +02:00
iChris4 8be828f64d Updated Profiles 2026-07-02 17:31:04 +02:00
iChris4 44e1fef3ad Added Quest Detect Skybox Setting 2026-07-02 17:05:00 +02:00
iChris4 fc43c99159 Added Texture Element Overrides for Quest 2026-07-02 16:39:03 +02:00
iChris4 7bfd649cca Updated Profile 2026-07-02 15:56:42 +02:00
iChris4 64f2644f95 Get the real frame height from the full-screen clear 2026-07-02 14:16:28 +02:00
iChris4 7fe1f88e36 Added Multiple Lines Code Editing 2026-07-01 23:36:47 +02:00
iChris4 0bfc92ee6d Added MP3 & MPT to layered palette conversion path 2026-06-21 06:40:21 +02:00
iChris4 ec0211452b Merged Metroid Palette Fix Toggles 2026-06-21 06:33:33 +02:00
280 changed files with 33962 additions and 6484 deletions

No files matched your search

+52
View File
@@ -0,0 +1,52 @@
### Copy of gitignore
# Ignore image thumbnail files created by windows
Thumbs.db
# Ignore Finder view option files created by OS X
.DS_Store
# Ignore autogenerated source files
Externals/mGBA/version.c
Source/Core/Common/scmrev.h
# Ignore files output by build
/cmake-build-debug
/cmake-build-release
/[Bb]uild/
/[Bb]inary/
/obj/
# Ignore files output by Android cmake build
/Source/Android/app/.cxx/
/libs/
# Ignore various files created by visual studio/msbuild
*.ipch
*.opensdf
*.sdf
*.suo
*.vcxproj.user
*.obj
*.tlog
*.VC.opendb
*.VC.db
.vs*/
/Source/enc_temp_folder/
# Ignore build info file created by QtCreator
CMakeLists.txt.user
# Ignore vim swapfiles
*.swp
# Ignore kdevelop files/dirs
*.kdev4
# Ignore IDEA/Clion files/dirs
.idea/
# Ignore Visual Studio Code's working dir
/.vscode/
# Ignore flatpak-builder's cache dir
.flatpak-builder
# DolphinXR dev artifacts
codex_apk_backups/
quest_perf_capture/
vulkan_pipeline_failures/
vulkan_pipeline_failures_latest/
vulkan_pipeline_failures_latest2/
quest_first_mv_vs.glsl
quest_mv_vs.glsl
### Changes from gitignore
+15
View File
@@ -0,0 +1,15 @@
# These are supported funding model platforms
github: [iChris4] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
polar: # Replace with a single Polar username
buy_me_a_coffee: # Replace with a single Buy Me a Coffee username
thanks_dev: # Replace with a single thanks.dev username
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
+2
View File
@@ -51,3 +51,5 @@ vulkan_pipeline_failures_latest/
vulkan_pipeline_failures_latest2/
quest_first_mv_vs.glsl
quest_mv_vs.glsl
dist/*
+122 -118
View File
@@ -1,118 +1,6 @@
[submodule "Externals/Qt"]
path = Externals/Qt
url = https://github.com/dolphin-emu/ext-win-qt.git
shallow = true
[submodule "Externals/mGBA/mgba"]
path = Externals/mGBA/mgba
url = https://github.com/mgba-emu/mgba.git
shallow = true
[submodule "Externals/FFmpeg-bin"]
path = Externals/FFmpeg-bin
url = https://github.com/dolphin-emu/ext-win-ffmpeg.git
shallow = true
[submodule "libusb"]
path = Externals/libusb/libusb
url = https://github.com/libusb/libusb.git
shallow = true
[submodule "Externals/spirv_cross/SPIRV-Cross"]
path = Externals/spirv_cross/SPIRV-Cross
url = https://github.com/KhronosGroup/SPIRV-Cross.git
shallow = true
[submodule "SDL"]
path = Externals/SDL/SDL
url = https://github.com/libsdl-org/SDL.git
shallow = true
[submodule "Externals/zlib-ng/zlib-ng"]
path = Externals/zlib-ng/zlib-ng
url = https://github.com/zlib-ng/zlib-ng.git
shallow = true
[submodule "Externals/libspng/libspng"]
path = Externals/libspng/libspng
url = https://github.com/randy408/libspng.git
shallow = true
[submodule "Externals/VulkanMemoryAllocator"]
path = Externals/VulkanMemoryAllocator
url = https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git
shallow = true
[submodule "Externals/cubeb/cubeb"]
path = Externals/cubeb/cubeb
url = https://github.com/mozilla/cubeb.git
shallow = true
[submodule "Externals/implot/implot"]
path = Externals/implot/implot
url = https://github.com/epezent/implot.git
shallow = true
[submodule "Externals/gtest"]
path = Externals/gtest
url = https://github.com/google/googletest.git
shallow = true
[submodule "Externals/rcheevos/rcheevos"]
path = Externals/rcheevos/rcheevos
url = https://github.com/RetroAchievements/rcheevos.git
shallow = true
[submodule "Externals/libadrenotools"]
path = Externals/libadrenotools
url = https://github.com/bylaws/libadrenotools.git
shallow = true
[submodule "Externals/curl/curl"]
path = Externals/curl/curl
url = https://github.com/curl/curl.git
shallow = true
[submodule "Externals/fmt/fmt"]
path = Externals/fmt/fmt
url = https://github.com/fmtlib/fmt.git
shallow = true
[submodule "Externals/lz4/lz4"]
path = Externals/lz4/lz4
url = https://github.com/lz4/lz4.git
shallow = true
[submodule "Externals/xxhash/xxHash"]
path = Externals/xxhash/xxHash
url = https://github.com/Cyan4973/xxHash.git
shallow = true
[submodule "Externals/enet/enet"]
path = Externals/enet/enet
url = https://github.com/lsalzman/enet.git
shallow = true
[submodule "hidapi-src"]
path = Externals/hidapi/hidapi-src
url = https://github.com/libusb/hidapi.git
shallow = true
[submodule "Externals/tinygltf/tinygltf"]
path = Externals/tinygltf/tinygltf
url = https://github.com/syoyo/tinygltf.git
shallow = true
[submodule "Externals/minizip-ng/minizip-ng"]
path = Externals/minizip-ng/minizip-ng
url = https://github.com/zlib-ng/minizip-ng.git
shallow = true
[submodule "Externals/Vulkan-Headers"]
path = Externals/Vulkan-Headers
url = https://github.com/KhronosGroup/Vulkan-Headers.git
shallow = true
[submodule "Externals/watcher/watcher"]
path = Externals/watcher/watcher
url = https://github.com/e-dant/watcher.git
shallow = true
[submodule "Externals/SFML/SFML"]
path = Externals/SFML/SFML
url = https://github.com/SFML/SFML.git
shallow = true
[submodule "Externals/zstd/zstd"]
path = Externals/zstd/zstd
url = https://github.com/facebook/zstd.git
shallow = true
[submodule "Externals/miniupnpc/miniupnp"]
path = Externals/miniupnpc/miniupnp
url = https://github.com/miniupnp/miniupnp.git
shallow = true
[submodule "Externals/glslang/glslang"]
path = Externals/glslang/glslang
url = https://github.com/KhronosGroup/glslang.git
shallow = true
[submodule "Externals/pugixml/pugixml"]
path = Externals/pugixml/pugixml
url = https://github.com/zeux/pugixml.git
[submodule "Externals/bzip2/bzip2"]
path = Externals/bzip2/bzip2
url = https://gitlab.com/bzip2/bzip2.git
shallow = true
[submodule "Externals/cpp-ipc/cpp-ipc"]
path = Externals/cpp-ipc/cpp-ipc
@@ -122,15 +10,131 @@
path = Externals/cpp-optparse/cpp-optparse
url = https://github.com/weisslj/cpp-optparse.git
shallow = true
[submodule "Externals/bzip2/bzip2"]
path = Externals/bzip2/bzip2
url = https://gitlab.com/bzip2/bzip2.git
[submodule "Externals/cubeb/cubeb"]
path = Externals/cubeb/cubeb
url = https://github.com/mozilla/cubeb.git
shallow = true
[submodule "Externals/curl/curl"]
path = Externals/curl/curl
url = https://github.com/curl/curl.git
shallow = true
[submodule "Externals/enet/enet"]
path = Externals/enet/enet
url = https://github.com/lsalzman/enet.git
shallow = true
[submodule "Externals/FFmpeg-bin"]
path = Externals/FFmpeg-bin
url = https://github.com/dolphin-emu/ext-win-ffmpeg.git
shallow = true
[submodule "Externals/fmt/fmt"]
path = Externals/fmt/fmt
url = https://github.com/fmtlib/fmt.git
shallow = true
[submodule "Externals/glslang/glslang"]
path = Externals/glslang/glslang
url = https://github.com/KhronosGroup/glslang.git
shallow = true
[submodule "Externals/gtest"]
path = Externals/gtest
url = https://github.com/google/googletest.git
shallow = true
[submodule "Externals/imgui/imgui"]
path = Externals/imgui/imgui
url = https://github.com/ocornut/imgui.git
shallow = true
[submodule "Externals/implot/implot"]
path = Externals/implot/implot
url = https://github.com/epezent/implot.git
shallow = true
[submodule "Externals/libadrenotools"]
path = Externals/libadrenotools
url = https://github.com/bylaws/libadrenotools.git
shallow = true
[submodule "Externals/libspng/libspng"]
path = Externals/libspng/libspng
url = https://github.com/randy408/libspng.git
shallow = true
[submodule "Externals/lz4/lz4"]
path = Externals/lz4/lz4
url = https://github.com/lz4/lz4.git
shallow = true
[submodule "Externals/mGBA/mgba"]
path = Externals/mGBA/mgba
url = https://github.com/mgba-emu/mgba.git
shallow = true
[submodule "Externals/miniupnpc/miniupnp"]
path = Externals/miniupnpc/miniupnp
url = https://github.com/miniupnp/miniupnp.git
shallow = true
[submodule "Externals/minizip-ng/minizip-ng"]
path = Externals/minizip-ng/minizip-ng
url = https://github.com/zlib-ng/minizip-ng.git
shallow = true
[submodule "Externals/OpenXR"]
path = Externals/OpenXR
url = https://github.com/KhronosGroup/OpenXR-SDK
shallow = true
[submodule "Externals/pugixml/pugixml"]
path = Externals/pugixml/pugixml
url = https://github.com/zeux/pugixml.git
shallow = true
[submodule "Externals/Qt"]
path = Externals/Qt
url = https://github.com/dolphin-emu/ext-win-qt.git
shallow = true
[submodule "Externals/rcheevos/rcheevos"]
path = Externals/rcheevos/rcheevos
url = https://github.com/RetroAchievements/rcheevos.git
shallow = true
[submodule "Externals/SFML/SFML"]
path = Externals/SFML/SFML
url = https://github.com/SFML/SFML.git
shallow = true
[submodule "Externals/spirv_cross/SPIRV-Cross"]
path = Externals/spirv_cross/SPIRV-Cross
url = https://github.com/KhronosGroup/SPIRV-Cross.git
shallow = true
[submodule "Externals/tinygltf/tinygltf"]
path = Externals/tinygltf/tinygltf
url = https://github.com/syoyo/tinygltf.git
shallow = true
[submodule "Externals/Vulkan-Headers"]
path = Externals/Vulkan-Headers
url = https://github.com/KhronosGroup/Vulkan-Headers.git
shallow = true
[submodule "Externals/VulkanMemoryAllocator"]
path = Externals/VulkanMemoryAllocator
url = https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git
shallow = true
[submodule "Externals/watcher/watcher"]
path = Externals/watcher/watcher
url = https://github.com/e-dant/watcher.git
shallow = true
[submodule "Externals/wil"]
path = Externals/wil
url = https://github.com/microsoft/wil.git
shallow = true
[submodule "Externals/xxhash/xxHash"]
path = Externals/xxhash/xxHash
url = https://github.com/Cyan4973/xxHash.git
shallow = true
[submodule "Externals/zlib-ng/zlib-ng"]
path = Externals/zlib-ng/zlib-ng
url = https://github.com/zlib-ng/zlib-ng.git
shallow = true
[submodule "Externals/zstd/zstd"]
path = Externals/zstd/zstd
url = https://github.com/facebook/zstd.git
shallow = true
[submodule "hidapi-src"]
path = Externals/hidapi/hidapi-src
url = https://github.com/libusb/hidapi.git
shallow = true
[submodule "libusb"]
path = Externals/libusb/libusb
url = https://github.com/libusb/libusb.git
shallow = true
[submodule "SDL"]
path = Externals/SDL/SDL
url = https://github.com/libsdl-org/SDL.git
shallow = true
+15 -4
View File
@@ -13,7 +13,7 @@ endif()
# This is inserted into the Info.plist as well.
set(CMAKE_OSX_DEPLOYMENT_TARGET "11.0.0" CACHE STRING "")
set(CMAKE_USER_MAKE_RULES_OVERRIDE "${CMAKE_CURRENT_SOURCE_DIR}/CMake/FlagsOverride.cmake")
set(CMAKE_USER_MAKE_RULES_OVERRIDE "CMake/FlagsOverride.cmake")
# CMake 3.28 and later scan c++ source files for module imports by default. Since we don't use
# modules scanning is pointless, so disable it. This also prevents Clang from generating an error
@@ -93,7 +93,7 @@ option(ENABLE_CUBEB "Enables Cubeb sound backend" ON)
option(ENABLE_LLVM "Enables LLVM support, for disassembly" ON)
option(ENABLE_TESTS "Enables building the unit tests" ON)
option(ENABLE_VULKAN "Enables vulkan video backend" ON)
option(ENABLE_VR "Enables VR support via OpenXR (Windows D3D/Vulkan, Linux Vulkan, Android Vulkan)" OFF)
option(ENABLE_VR "Enables VR support via OpenXR (Windows D3D/Vulkan/OpenGL, Linux Vulkan/OpenGL, Android Vulkan/GLES)" OFF)
option(USE_DISCORD_PRESENCE "Enables Discord Rich Presence, show the current game on Discord" ON)
option(USE_MGBA "Enables GBA controllers emulation using libmgba" ON)
option(ENABLE_AUTOUPDATE "Enables support for automatic updates" ON)
@@ -490,6 +490,13 @@ endif()
# TODO: We should have options for dependencies included in the externals to
# override autodetection of system libraries and force the usage of the
# externals.
if (ENABLE_QT AND MSVC)
# Windows has no system Qt6 package, so use the vendored one from Externals/Qt (locked to 6.5.1).
# On Linux we use the system Qt6 package instead: mixing the vendored Qt6.5.1 (which lacks a DBus
# module) with a system Qt6 for DBus fails, since CMake's Qt6 package requires all found
# components to share the exact same version.
list(PREPEND CMAKE_PREFIX_PATH "${CMAKE_SOURCE_DIR}/Externals/Qt/Qt6.5.1/x64")
endif()
include(CheckLib)
include(CheckCXXSourceRuns)
@@ -661,18 +668,21 @@ endif()
if(ENABLE_VR AND NOT DOLPHIN_OPENXR_SUPPORTED_PLATFORM)
message(WARNING "OpenXR VR is only supported on Windows, desktop Linux, and Android; disabling ENABLE_VR.")
set(ENABLE_VR OFF CACHE BOOL "Enables VR support via OpenXR (Windows D3D/Vulkan, Linux Vulkan, Android Vulkan)" FORCE)
set(ENABLE_VR OFF CACHE BOOL "Enables VR support via OpenXR (Windows D3D/Vulkan/OpenGL, Linux Vulkan/OpenGL, Android Vulkan/GLES)" FORCE)
endif()
if(ENABLE_VR AND UNIX AND NOT APPLE AND NOT ANDROID AND NOT ENABLE_VULKAN)
message(FATAL_ERROR "Desktop Linux OpenXR VR requires ENABLE_VULKAN=ON.")
# OpenGL (GLX) is always built on desktop Linux, so VR remains usable without Vulkan.
message(STATUS "Desktop Linux OpenXR VR without ENABLE_VULKAN: only the OpenGL backend will support VR.")
endif()
if(ENABLE_VR)
add_definitions(-DENABLE_VR)
# Build only the OpenXR loader from the Khronos SDK; skip tests, conformance, and samples.
set(BUILD_API_LAYERS OFF CACHE BOOL "" FORCE)
set(BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(BUILD_CONFORMANCE_TESTS OFF CACHE BOOL "" FORCE)
set(BUILD_SDK_TESTS OFF CACHE BOOL "" FORCE)
set(DYNAMIC_LOADER OFF CACHE BOOL "" FORCE)
add_subdirectory(Externals/OpenXR "${CMAKE_BINARY_DIR}/Externals/OpenXR" EXCLUDE_FROM_ALL)
endif()
@@ -894,6 +904,7 @@ endif()
# packaging information
set(CPACK_PACKAGE_NAME "dolphin-emu")
set(CPACK_PACKAGE_VENDOR "Dolphin Team")
set(CPACK_PACKAGE_CONTACT "dolphinxr@example.com")
set(CPACK_PACKAGE_VERSION_MAJOR ${DOLPHIN_VERSION_MAJOR})
set(CPACK_PACKAGE_VERSION_MINOR ${DOLPHIN_VERSION_MINOR})
set(CPACK_PACKAGE_VERSION_PATCH ${DOLPHIN_VERSION_PATCH})
+39 -142
View File
@@ -1,147 +1,44 @@
[Graphics.VR]
UnitsPerMeter = 1.5
[ShaderOverride_Enable]
$HUD Scan Effect
$HUD Scan color
[ShaderOverride]
$Warning_Health
Hash=00000000b9ec5b5f
Type=PS
handling=screen
$FMV
Hash=000000002b158db5
Type=PS
handling=screen
$HUD Life
Hash=00000000076435a1
Type=PS
handling=headlocked
hash_family=1
family_signature=51808225deb2b85f
texture_mode=include
texture=4c1106bc3e129423
texture=91627895056f2669
texture=d3735622b3206ab0
texture=de81ade3d6923bae
texture=e3cfb7a4cb2e46bc
$HUD Visor Types
Hash=00000000476d615f
Type=PS
handling=headlocked
hash_family=1
family_signature=8cc4ffb088e48af3
$HUD Radar
Hash=000000006d51147b
Type=PS
handling=headlocked
hash_family=1
family_signature=18c2fb058f6ea8b9
texture_mode=include
texture=378cc384e8052923
texture=9e01777affbe3954
texture=c7687d7264fc0495
$HUD Border
Hash=0000000090f766ee
Type=PS
handling=headlocked
hash_family=1
family_signature=3d5d14f35f02bdc5
texture_mode=include
texture=378cc384e8052923
texture=4659c82198269108
texture=6213dc7b4cea2067
texture=65029fc7530c2556
texture=6770fbe0cce927a9
texture=847faa3fbc72fafd
texture=ab6e64b461e598b4
texture=acfb2c156818d9b4
texture=d3735622b3206ab0
$HUD Scan
Hash=000000001386f342
Type=PS
handling=screen
hash_family=1
family_signature=ed817a3f2923b114
$HUD Scan Border
Hash=000000000f312e21
Type=PS
handling=screen
$HUD Scan Effect
Hash=0000000075945182
Type=PS
handling=skip
$HUD Scan color
Hash=000000004bb35a60
Type=PS
handling=skip
$HUD Minimap Yellow
Hash=00000000e5329dc4
Type=PS
handling=headlocked
hash_family=1
$HUD Blue Dot Radar
Hash=000000004684e694
Type=GS
handling=headlocked
texture_mode=include
texture=4659c82198269108
$Unnamed Shader
Hash=00000000b9ec5b5f
Type=PS
handling=skip
[ElementsGroupOverride_Enable]
$Metroid Profile HUD and Visor
$Metroid Profile Screen Effects
$Metroid Profile Hidden Layers
$Scan zoom
$Scan color
[ElementsGroupOverride]
$Metroid Profile HUD and Visor
format=element_profile_v1
handling=headlocked
profile=metroid_prime_2_gc
profile_layer=METROID_HUD
profile_layer=METROID_UNKNOWN_HUD
profile_layer=METROID_DARK_VISOR_HUD
profile_layer=METROID_VISOR
profile_layer=METROID_HELMET
profile_layer=METROID_DARK_CENTRAL
profile_layer=METROID_VISOR_RADAR_HINT
profile_layer=METROID_RADAR_DOT
profile_layer=METROID_SCAN_RETICLE
profile_layer=METROID_SCAN_TEXT
profile_layer=METROID_SCAN_HOLOGRAM
profile_layer=METROID_VISOR_BOOTUP
profile_layer=METROID_MAP_OR_HINT
profile_layer=METROID_MAP
$Metroid Profile Screen Effects
format=element_profile_v1
handling=fullscreen
profile=metroid_prime_2_gc
profile_layer=METROID_SCREEN_FADE
profile_layer=METROID_SCREEN_OVERLAY
profile_layer=METROID_ECHO_EFFECT
profile_layer=METROID_DARK_EFFECT
profile_layer=METROID_VISOR_DIRT
profile_layer=METROID_SCAN_DARKEN
profile_layer=METROID_SCAN_HIGHLIGHTER
$Metroid Profile Hidden Layers
format=element_profile_v1
handling=skip
profile=metroid_prime_2_gc
profile_layer=METROID_EFB_COPY
profile_layer=METROID_BLACK_BARS
profile_layer=METROID_SCAN_BOX
format = element_only_v6
handling = skip
profile = metroid_prime_2_gc
profile_layer = METROID_SCAN_BOX
sig_perspective = 1
sig_persp_hfov = 175
sig_persp_vfov = 175
sig_persp_near = 100
sig_persp_far = 100
sig_ortho_left = 0
sig_ortho_right = 0
sig_ortho_top = 0
sig_ortho_bottom = 0
sig_use_projection = 0
sig_use_projection_type = 0
sig_use_layer = 0
sig_use_viewport = 1
sig_use_scissor = 1
sig_use_render_state = 1
sig_layer = 0
sig_vp_x = 374
sig_vp_y = 758
sig_vp_w = 32
sig_vp_h = 32
sig_sc_l = 342
sig_sc_t = 726
sig_sc_r = 405
sig_sc_b = 789
sig_alpha = 007f0000
sig_ztest = 1
sig_zupdate = 1
sig_zfunc = 3
sig_blend_color = 1
sig_blend_alpha = 1
[Graphics.VR]
MetroidThermalVisorFix = True
DetectSkybox = True
+75
View File
@@ -0,0 +1,75 @@
[ElementsGroupOverride_Enable]
$Minimap
$FMV
[ElementsGroupOverride]
$Minimap
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=007f0000
sig_ztest=0
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
$FMV
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=007f0000
sig_ztest=0
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
[Graphics.VR]
DontClearScreen = False
UnitsPerMeter = 2.6384351
VirtualScreen = False
+332 -10
View File
@@ -1,11 +1,203 @@
[ShaderOverride_Enable]
[HideObjectCodes]
Type = 128bits
Upper = 0x0000000000000000
Lower = 0x3F7FFFFF00000000
[ShaderOverride]
Hash = 00000000deb89407
Type = PS
match_mode = exact_hash
handling = skip
passthrough_opacity = 0
family_version = 2
hash_family = 1
family_signature = 182b4f6db39e05aa
[Graphics.VR]
DetectRenderTargets = False
DetectSkybox = False
DontClearScreen = False
FrameSizeFromXFB = False
MetroidThermalVisorFix = False
OrthoScissorFix = False
RemoveCinematicBars = False
SmallViewportsOnScreen = False
UnitsPerMeter = 50.00
[TextureElementOverride_Enable]
$Title Screen
$File Select
$File Select Prompt
$Main Menu
$Chalenge Menu
$HUD
[TextureElementOverride]
$Title Screen
handling=screen
texture=0ea0e7ac012220d3
texture=0ff29d0427eebd34
texture=149a3b76ff82e2c7
texture=1c3039e695a8a8a9
texture=3d044c0c7748b67c
texture=42e313c957924c24
texture=4ee37523f7385720
texture=6d9a91ba5cbd3f7f
texture=73ca69c9a27ed65d
texture=7d2f09ecccfb5635
texture=ac0089ac58ff54d4
texture=c8c5147119fb3a1a
texture=d1d856488a5d82d2
texture=ee47f4f4840f5449
texture=f173dec99b32afa4
texture=f88e0b142f45c216
$File Select
handling=screen
texture=0c32aef0edbbd237
texture=157b1d43706b5f6e
texture=1ea3a4c99fd2e49f
texture=1f7733a7ba57f325
texture=38e06f63482473c3
texture=62ad628b3609ed38
texture=7990e94ec311f4a9
texture=984c3618dbaed493
texture=9c6676e26aa911f6
texture=c46f43aba09999a3
texture=f7dca127bb53c5e9
$File Select Prompt
handling=screen
texture=119e2b932a4a2e7c
texture=2df5c0cf5e20b54f
texture=916fab1a884ac497
texture=e17820ab5ed56b69
$Main Menu
handling=screen
texture=0991eaeb8d0fe7d6
texture=0a66ae22ed2c1a24
texture=0c32aef0edbbd237
texture=114b9e8cf9115a86
texture=157b1d43706b5f6e
texture=1638b22107012129
texture=1ea3a4c99fd2e49f
texture=1f7733a7ba57f325
texture=35c4d3b72b599985
texture=3adf5d3908fb6659
texture=4825a0f7277e87dc
texture=4b1dd894b91c4a37
texture=4ec82ea171319864
texture=70ff2f5fe8b3f815
texture=7105d8f9da8e3184
texture=7ba79057b46b1989
texture=8a8c91bd2a0659d4
texture=9468da6db0040e97
texture=a35acf80abd10385
texture=b025b5ee70b2711f
texture=b25b7d580e919be4
texture=c882063f8763e3d6
texture=c88db77d831871f7
texture=cc7e69137962c780
texture=ccc53802c6e4f9ef
texture=dc460770514bbbdd
texture=e224ab6cfbffd889
texture=e332c550b190d644
texture=e3aaf1c17d21c212
texture=e4d4b0e4d93fc124
texture=e6e805cb8f26f46b
texture=efbcd448a80edd95
texture=f6fb40f6f3f11a9b
texture=f7dca127bb53c5e9
texture=ffbd87995d0eacbc
$Chalenge Menu
handling=screen
texture=02ae7099e4164bd3
texture=02c6668ccd849503
texture=02d61d3445c3d5db
texture=045ba7652cca0f56
texture=068359cc6d0b816e
texture=06a72d9020e5f770
texture=0760a9f79c2691b2
texture=11710741daa69655
texture=12fc713c04305b9a
texture=15165896080f17cd
texture=1b9cdf65a8e48c44
texture=1c4f11fd9398c357
texture=370edb4ac2e22efb
texture=3a344d59feaae7b7
texture=3c4d23b0bd6a7399
texture=43c38af8757e39de
texture=4597e29390a7c547
texture=586883f1bdc1905b
texture=59fe078f078d1ded
texture=5b8970d1297debf5
texture=690bb97f8297e123
texture=6e261811c9eca781
texture=6e817b864f0e8502
texture=72da6a4a1666236d
texture=75b0c23f0c582589
texture=7990e94ec311f4a9
texture=8e8f51ac937e6122
texture=9468da6db0040e97
texture=95c9a6ea5542314b
texture=97443701d6d65377
texture=9cbd490f4265de4b
texture=9f28114b0e6eab59
texture=a498bd551dac0cca
texture=a5d670c271cb7818
texture=a84472edab7b0764
texture=aa821caaceb7206e
texture=ac69a2927831b757
texture=b7626a0dc76e11fd
texture=ba57a7e760208ae5
texture=c0fafeb2697d916d
texture=c66dfc93fcf7c16e
texture=d02bec94aa5e506c
texture=d05ebc31e7f72aaa
texture=d61f6308f169096f
texture=da5c54cba97bbfce
texture=daf01c2b7b36d64d
texture=dce3538d3c8f6898
texture=e289ea04cefb233e
texture=e4cb9c1f53e0ca38
texture=e60ba5f3d41ddb1f
texture=e8efecd931bc7c7a
texture=ea30737d58a7e0ff
texture=ed99952ee70f5869
texture=f2668047b7761baa
texture=f8dd692f6264200d
$HUD
handling=screen
texture=091555bc4ec6eaf4
texture=198b0513b9249bf0
texture=38d272479e6a4813
texture=5dfc4f1ae0dcc253
texture=5f4d3f73a3bca830
texture=608d2f0042a0c46c
texture=6866a7fbcf3273f1
texture=96d1ba6e8ff22ea8
texture=a02dc613df3921ff
texture=a5ff2bb17574ec16
texture=c677f6a517adec0b
texture=cc8300fcc020ef69
texture=d76817671438a908
texture=d8e83a904ac21990
texture=fef48910c2651a58
$Sonic
handling=camera_anchor
anchor_up=0.7
anchor_hide=1
anchor_rotation=yaw
anchor_upm=10
texture=aae3bc7c46a2a3e5
[ElementsGroupOverride_Enable]
$HUD
$Shadows
$Shadows 2
$Items
[ElementsGroupOverride]
$Element Draw 24
format=element_only_v5
$HUD
format=element_only_v6
handling=screen
sig_perspective=1
sig_persp_hfov=6
@@ -17,6 +209,7 @@ sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=0
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
@@ -36,11 +229,140 @@ sig_zupdate=1
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
[HideObjectCodes_Enabled]
$Black screen
[HideObjectCodes]
$Black screen
Type=128bits
Upper=0x0000000000000000
Lower=0x3F7FFFFF00000000
$Shadows
format=element_only_v6
handling=fullscreen
sig_perspective=1
sig_persp_hfov=2
sig_persp_vfov=2
sig_persp_near=100
sig_persp_far=25
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=0
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=406
sig_vp_y=406
sig_vp_w=62
sig_vp_h=62
sig_sc_l=344
sig_sc_t=344
sig_sc_r=467
sig_sc_b=467
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
$Shadows 2
format=element_only_v6
handling=fullscreen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64
sig_ortho_top=0
sig_ortho_bottom=48
sig_use_projection=0
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=344
sig_sc_t=344
sig_sc_r=467
sig_sc_b=467
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
$FMV
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
$Items
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
+324 -22
View File
@@ -1,37 +1,339 @@
[ShaderOverride_Enable]
[ShaderOverride]
[Graphics.VR]
UnitsPerMeter = 25.00
[ElementsGroupOverride_Enable]
$FMV
Hash=00000000bcbf5145
Type=PS
$Player indicator
$Sky
$Text
$Training Menu
[ElementsGroupOverride]
$FMV
format=element_only_v5
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=-48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=007f0000
sig_ztest=1
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=0
$FMV effects
format=element_only_v5
handling=screen
sig_perspective=1
sig_persp_hfov=12016
sig_persp_vfov=11000
sig_persp_near=1000
sig_persp_far=500000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=007f0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=0
$Player indicator
format=element_only_v5
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=-48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=0
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=0
$Sky
format=element_only_v5
handling=fullscreen
sig_perspective=1
sig_persp_hfov=3495
sig_persp_vfov=2900
sig_persp_near=100
sig_persp_far=1638400
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=0
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=007f0000
sig_ztest=1
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=0
$Text
Hash=000000007905c727
Type=PS
format=element_only_v5
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=-48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=00640000
sig_ztest=0
sig_zupdate=0
sig_zfunc=0
sig_blend_color=1
sig_blend_alpha=0
$Character_indicator
Hash=0000000029d6fcdb
Type=PS
$Training Menu
format=element_only_v5
handling=screen
sig_perspective=1
sig_persp_hfov=4954
sig_persp_vfov=4154
sig_persp_near=1000
sig_persp_far=350000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=003f0000
sig_ztest=0
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=0
$Timer_also
Hash=00000000fb6ceffb
Type=PS
$Stage clear 02
format=element_only_v5
handling=screen
sig_perspective=1
sig_persp_hfov=3019
sig_persp_vfov=2500
sig_persp_near=10000
sig_persp_far=500000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=00640000
sig_ztest=0
sig_zupdate=0
sig_zfunc=0
sig_blend_color=1
sig_blend_alpha=0
[TextureElementOverride_Enable]
$Text
[TextureElementOverride]
$FD Skybox
handling=passthrough
passthrough_opacity=0
texture=177ced97ab0fbdf8
texture=271d7767587319b1
texture=5b58122972585ba0
texture=68e192c45f086f1e
texture=82593a6682ca4f43
texture=abc3fb3dbe7f95d2
texture=bb8ebd7d4cfc5f4a
$Credits_hud
Hash=000000007d095f4c
Type=PS
$test
handling=passthrough
passthrough_opacity=0
texture=aa026b61ff59b5a3
$Text
handling=screen
$Crosshair
Hash=00000000fc0d4ed9
texture=0b0443b8c4287d74
texture=5d168984c40f0d87
texture=69e55e920337d4aa
texture=71b030e1cf17f53a
texture=89139319fa0a2a19
texture=babea042c3cd59fe
[ShaderOverride_Enable]
$FD Skybox
$FD Skybox Middle
[ShaderOverride]
$Unnamed Shader 1
Hash=000000001d9cb526
Type=PS
handling=screen
match_mode=exact_hash
handling=skip
family_version=1
$Congratulation_picture
Hash=000000002b158db5
$Unnamed Shader 2
Hash=00000000000dbf5d
Type=PS
handling=screen
match_mode=exact_hash
handling=passthrough
passthrough_opacity=0
family_version=1
$Unnamed Shader 3
Hash=000000003f6b961d
Type=PS
match_mode=exact_hash
handling=skip
family_version=1
$Unnamed Shader 4
Hash=00000000a484eaa4
Type=PS
match_mode=exact_hash
handling=skip
family_version=1
$Unnamed Shader 5
Hash=000000009e2ad039
Type=PS
match_mode=exact_hash
handling=skip
family_version=1
$Unnamed Shader 6
Hash=00000000b54c073f
Type=PS
match_mode=exact_hash
handling=skip
family_version=1
$FD Skybox
Hash=00000000491248f7
Type=PS
match_mode=shader_family
handling=skip
family_version=2
hash_family=1
family_signature=182b4f6db39e05aa
$FD Skybox Middle
Hash=00000000387b372a
Type=PS
match_mode=shader_family
handling=passthrough
passthrough_opacity=0
family_version=2
hash_family=1
family_signature=ab5f736ec2e8171b
+2
View File
@@ -0,0 +1,2 @@
[Graphics.VR]
DontClearScreen = True
+252
View File
@@ -0,0 +1,252 @@
[TextureElementOverride_Enable]
[TextureElementOverride]
[ShaderOverride_Enable]
$Red Effect
[ShaderOverride]
$Red Effect
Hash=00000000e53922bf
Type=PS
match_mode=shader_family
handling=fullscreen
family_version=2
hash_family=1
family_signature=f9e0bf87af1230da
[ElementsGroupOverride_Enable]
$Underwater Effect
[ElementsGroupOverride]
$HUD
format=element_only_v6
handling=screen
selected_match_mode=include
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=-32000
sig_ortho_right=32000
sig_ortho_top=24000
sig_ortho_bottom=-24000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=003c0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
selected_match_0_family_version=1
selected_match_0_vs_family=0000000004f4437c
selected_match_0_ps_family=2d04083ee70f20bf
selected_match_0_gs_family=00000000b97119f0
selected_match_0_texture=aa1efcaffddc8d25
selected_match_0_texture=f560f1efe14cb438
selected_match_1_family_version=1
selected_match_1_vs_family=0000000004f4437c
selected_match_1_ps_family=2d04083ee70f20bf
selected_match_1_gs_family=00000000b97119f0
selected_match_1_texture=a4fe42c2ccbae06b
selected_match_1_texture=f560f1efe14cb438
selected_match_2_family_version=1
selected_match_2_vs_family=000000005b02c5c2
selected_match_2_ps_family=468c9fbbf6749adf
selected_match_2_gs_family=00000000b97119f0
selected_match_2_texture=aa1efcaffddc8d25
selected_match_2_texture=f560f1efe14cb438
selected_match_3_family_version=1
selected_match_3_vs_family=000000005b02c5c2
selected_match_3_ps_family=468c9fbbf6749adf
selected_match_3_gs_family=00000000b97119f0
selected_match_3_texture=942fd3454ca980b0
selected_match_3_texture=aa1efcaffddc8d25
selected_match_4_family_version=1
selected_match_4_vs_family=000000005b02c5c2
selected_match_4_ps_family=468c9fbbf6749adf
selected_match_4_gs_family=00000000b97119f0
selected_match_4_texture=7a795c9c70fb3620
selected_match_4_texture=aa1efcaffddc8d25
selected_match_5_family_version=1
selected_match_5_vs_family=000000005b02c5c2
selected_match_5_ps_family=468c9fbbf6749adf
selected_match_5_gs_family=00000000b97119f0
selected_match_5_texture=4757d09b75d73ab4
selected_match_5_texture=aa1efcaffddc8d25
selected_match_6_family_version=1
selected_match_6_vs_family=000000005b02c5c2
selected_match_6_ps_family=468c9fbbf6749adf
selected_match_6_gs_family=00000000b97119f0
selected_match_6_texture=85d3ff2198c2c546
selected_match_6_texture=aa1efcaffddc8d25
selected_match_7_family_version=1
selected_match_7_vs_family=000000005b02c5c2
selected_match_7_ps_family=468c9fbbf6749adf
selected_match_7_gs_family=00000000b97119f0
selected_match_7_texture=5c359480567fe6f5
selected_match_7_texture=aa1efcaffddc8d25
selected_match_8_family_version=1
selected_match_8_vs_family=000000005b02c5c2
selected_match_8_ps_family=468c9fbbf6749adf
selected_match_8_gs_family=00000000b97119f0
selected_match_8_texture=3d768e912ae7350c
selected_match_8_texture=aa1efcaffddc8d25
selected_match_9_family_version=1
selected_match_9_vs_family=000000005b02c5c2
selected_match_9_ps_family=468c9fbbf6749adf
selected_match_9_gs_family=00000000b97119f0
selected_match_9_texture=aa1efcaffddc8d25
selected_match_9_texture=fe9dbd473314684c
selected_match_10_family_version=1
selected_match_10_vs_family=000000005b02c5c2
selected_match_10_ps_family=468c9fbbf6749adf
selected_match_10_gs_family=00000000b97119f0
selected_match_10_texture=a10ac56e6f228fe1
selected_match_10_texture=aa1efcaffddc8d25
selected_match_11_family_version=1
selected_match_11_vs_family=000000005b02c5c2
selected_match_11_ps_family=468c9fbbf6749adf
selected_match_11_gs_family=00000000b97119f0
selected_match_11_texture=205ce8b1a67303b2
selected_match_11_texture=aa1efcaffddc8d25
selected_match_12_family_version=1
selected_match_12_vs_family=000000005b02c5c2
selected_match_12_ps_family=468c9fbbf6749adf
selected_match_12_gs_family=00000000b97119f0
selected_match_12_texture=a2d4e9f2fc62cf5a
selected_match_12_texture=aa1efcaffddc8d25
selected_match_13_family_version=1
selected_match_13_vs_family=000000005b02c5c2
selected_match_13_ps_family=468c9fbbf6749adf
selected_match_13_gs_family=00000000b97119f0
selected_match_13_texture=4bea559cdf493e01
selected_match_13_texture=aa1efcaffddc8d25
selected_match_14_family_version=1
selected_match_14_vs_family=000000005b02c5c2
selected_match_14_ps_family=468c9fbbf6749adf
selected_match_14_gs_family=00000000b97119f0
selected_match_14_texture=2aae2ab50f19d746
selected_match_14_texture=aa1efcaffddc8d25
selected_match_15_family_version=1
selected_match_15_vs_family=000000005b02c5c2
selected_match_15_ps_family=468c9fbbf6749adf
selected_match_15_gs_family=00000000b97119f0
selected_match_15_texture=aa1efcaffddc8d25
selected_match_15_texture=c6411e6acf9f433a
selected_match_16_family_version=1
selected_match_16_vs_family=000000005b02c5c2
selected_match_16_ps_family=468c9fbbf6749adf
selected_match_16_gs_family=00000000b97119f0
selected_match_16_texture=3f4feaec4c69b2c3
selected_match_16_texture=aa1efcaffddc8d25
selected_match_17_family_version=1
selected_match_17_vs_family=000000005b02c5c2
selected_match_17_ps_family=468c9fbbf6749adf
selected_match_17_gs_family=00000000b97119f0
selected_match_17_texture=3eb5a4a751996d9d
selected_match_17_texture=aa1efcaffddc8d25
selected_match_18_family_version=1
selected_match_18_vs_family=000000005b02c5c2
selected_match_18_ps_family=468c9fbbf6749adf
selected_match_18_gs_family=00000000b97119f0
selected_match_18_texture=aa1efcaffddc8d25
selected_match_18_texture=ba02994678dba91e
selected_match_19_family_version=1
selected_match_19_vs_family=000000005b02c5c2
selected_match_19_ps_family=468c9fbbf6749adf
selected_match_19_gs_family=00000000b97119f0
selected_match_19_texture=1a729e45818a3094
selected_match_19_texture=aa1efcaffddc8d25
selected_match_20_family_version=1
selected_match_20_vs_family=000000005b02c5c2
selected_match_20_ps_family=468c9fbbf6749adf
selected_match_20_gs_family=00000000b97119f0
selected_match_20_texture=19ba9ba5ca1a4e2b
selected_match_20_texture=aa1efcaffddc8d25
selected_match_21_family_version=1
selected_match_21_vs_family=000000005b02c5c2
selected_match_21_ps_family=468c9fbbf6749adf
selected_match_21_gs_family=00000000b97119f0
selected_match_21_texture=3d5bd6ece8ff6955
selected_match_21_texture=aa1efcaffddc8d25
selected_match_22_family_version=1
selected_match_22_vs_family=000000005b02c5c2
selected_match_22_ps_family=468c9fbbf6749adf
selected_match_22_gs_family=00000000b97119f0
selected_match_22_texture=624bfe5b87e97bb1
selected_match_22_texture=aa1efcaffddc8d25
selected_match_23_family_version=1
selected_match_23_vs_family=000000005b02c5c2
selected_match_23_ps_family=468c9fbbf6749adf
selected_match_23_gs_family=00000000b97119f0
selected_match_23_texture=aa1efcaffddc8d25
selected_match_23_texture=c51fbbfac0fc358d
selected_match_24_family_version=1
selected_match_24_vs_family=000000005b02c5c2
selected_match_24_ps_family=468c9fbbf6749adf
selected_match_24_gs_family=00000000b97119f0
selected_match_24_texture=68daa88814c2be8e
selected_match_24_texture=aa1efcaffddc8d25
selected_match_25_family_version=1
selected_match_25_vs_family=000000005b02c5c2
selected_match_25_ps_family=468c9fbbf6749adf
selected_match_25_gs_family=00000000b97119f0
selected_match_25_texture=aa1efcaffddc8d25
selected_match_25_texture=acf055485e42c060
selected_match_26_family_version=1
selected_match_26_vs_family=000000005b02c5c2
selected_match_26_ps_family=468c9fbbf6749adf
selected_match_26_gs_family=00000000b97119f0
selected_match_26_texture=aa1efcaffddc8d25
selected_match_26_texture=f46f3e244fdf6a20
$Underwater Effect
format=element_only_v6
handling=fullscreen
preserve_stereo_efb=1
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=-32000
sig_ortho_right=32000
sig_ortho_top=24000
sig_ortho_bottom=-24000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=0
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
[Graphics.VR]
AutoNativeEfbEffects = True
DontClearScreen = True
ExactScreenDepth = True
VirtualScreen = True
+152
View File
@@ -0,0 +1,152 @@
[TextureElementOverride_Enable]
$A
$HUD
[TextureElementOverride]
handling = screen
texture = ce0cc943428f8650
[Graphics.VR]
FrameSizeFromXFB = True
RemoveCinematicBars = True
MetroidThermalVisorFix = False
[ElementsGroupOverride_Enable]
$HUD - Power bar
$HUD - Club select & More
$HUD - Course logo
$Star Pointer
[ElementsGroupOverride]
$HUD - Power bar
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=003e0001
sig_ztest=0
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=0
$HUD - Club select & More
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=003f0000
sig_ztest=0
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=0
$HUD - Course logo
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=0
$Star Pointer
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=003f0000
sig_ztest=0
sig_zupdate=0
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=0
+337
View File
@@ -0,0 +1,337 @@
[ShaderOverride_Enable]
$Machine Settings - black overlay
[ShaderOverride]
$Machine Settings - black overlay
Hash=000000009184ac43
Type=PS
match_mode=shader_family
handling=fullscreen
family_version=2
hash_family=1
family_signature=9bfa9614d1e63c4e
$Unnamed Shader 1
Hash=000000002eae5761
Type=PS
match_mode=shader_family
handling=skip
family_version=2
hash_family=1
family_signature=1b8f3df3a2f27200
[Graphics.VR]
DetectRenderTargets = True
DisableCPUCull = False
DontClearScreen = True
FrameSizeFromXFB = False
OrthoScissorFix = True
RemoveCinematicBars = False
SmallViewportsOnScreen = True
UnitsPerMeter = 10.00
VirtualScreen = True
[ElementsGroupOverride_Enable]
$HUD
$Track Preview screen
$Machine Settings - Character
$Machine Settings - Machine
$Machine Settings - Other
$Select Machine - Other
$Select Machine - Selected Machine
$Select Machine - Ships
[ElementsGroupOverride]
$HUD
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=566
sig_vp_w=320
sig_vp_h=224
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=789
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
$Track Preview screen
format=element_only_v6
handling=screen_pane
units_per_meter=10
screen_pane_depth=flat
sig_perspective=1
sig_persp_hfov=6398
sig_persp_vfov=5500
sig_persp_near=100
sig_persp_far=9000000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=521
sig_vp_w=192
sig_vp_h=179
sig_sc_l=470
sig_sc_t=342
sig_sc_r=852
sig_sc_b=699
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
$Machine Settings - Character
format=element_only_v6
handling=fullscreen
sig_perspective=1
sig_persp_hfov=4402
sig_persp_vfov=3000
sig_persp_near=100
sig_persp_far=9000000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=540
sig_vp_w=320
sig_vp_h=198
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=737
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
$Machine Settings - Machine
format=element_only_v6
handling=fullscreen
sig_perspective=1
sig_persp_hfov=3859
sig_persp_vfov=3000
sig_persp_near=100
sig_persp_far=9000000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=622
sig_vp_y=542
sig_vp_w=280
sig_vp_h=200
sig_sc_l=342
sig_sc_t=342
sig_sc_r=901
sig_sc_b=741
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
$Machine Settings - Other
format=element_only_v6
handling=fullscreen
sig_perspective=1
sig_persp_hfov=4402
sig_persp_vfov=3000
sig_persp_near=100
sig_persp_far=9000000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=540
sig_vp_w=320
sig_vp_h=198
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=737
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
$Select Machine - Other
format=element_only_v6
handling=fullscreen
sig_perspective=1
sig_persp_hfov=6587
sig_persp_vfov=5500
sig_persp_near=100
sig_persp_far=9000000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
$Select Machine - Selected Machine
format=element_only_v6
handling=fullscreen
sig_perspective=1
sig_persp_hfov=6953
sig_persp_vfov=5500
sig_persp_near=100
sig_persp_far=9000000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=502
sig_vp_y=454
sig_vp_w=160
sig_vp_h=112
sig_sc_l=342
sig_sc_t=342
sig_sc_r=661
sig_sc_b=565
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
$Select Machine - Ships
format=element_only_v6
handling=fullscreen
sig_perspective=1
sig_persp_hfov=6587
sig_persp_vfov=5500
sig_persp_near=100
sig_persp_far=9000000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
[TextureElementOverride_Enable]
$C. Falcon Helmet
$C. Falcon Body
[TextureElementOverride]
$C. Falcon Helmet
handling=camera_anchor
anchor_up=0.1
anchor_hide=1
anchor_upm=2
flag=FPV
texture=78f9834de2e68714
$C. Falcon Body
handling=skip
condition=FPV
condition_mode=activate
texture=2b836ba24b2c2bd4
texture=2be2364e596f5f83
texture=33655b18f0ec9718
texture=45413ed5ca6a5f80
texture=aa5561dcc5e40a13
texture=bc2d7580ac99d2f4
texture=e1913370f6d9456b
+10
View File
@@ -0,0 +1,10 @@
[Graphics.VR]
DetectRenderTargets = True
VirtualScreen = True
[TextureElementOverride_Enable]
$tacos test
[TextureElementOverride]
$tacos test
handling=screen
texture=1028a70f1f5fe7bd
+107
View File
@@ -0,0 +1,107 @@
[ElementsGroupOverride_Enable]
$Weird effect
$Room Shadows
$Shadows
[ElementsGroupOverride]
$Weird effect
format=element_only_v6
handling=skip
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=44800
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=566
sig_vp_w=320
sig_vp_h=224
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=789
sig_alpha=001cff00
sig_ztest=0
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=0
$Room Shadows
format=element_only_v6
handling=fullscreen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=100
sig_ortho_top=100
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=003f0000
sig_ztest=0
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=0
$Shadows
format=element_only_v6
handling=fullscreen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=-10000
sig_ortho_right=10000
sig_ortho_top=10000
sig_ortho_bottom=-10000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=001cff00
sig_ztest=1
sig_zupdate=0
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=0
+131 -5
View File
@@ -1,5 +1,3 @@
[Graphics.VR]
UnitsPerMeter = 1.00
[HideObjectCodes_Enabled]
$Black Bar Bottom
$Black Bar top
@@ -13,11 +11,25 @@ $Black Bar top
Type=128bits
Upper=0x000000003F440001
Lower=0x00000000000000FF
[TextureElementOverride_Enable]
[TextureElementOverride]
$H Eyes
handling=skip
texture=50309b2f7f87bbe5
$Texture 6267f33da767b68c
handling=camera_anchor
anchor_up=0.7
anchor_hide=1
anchor_rotation=yaw
anchor_upm=1
texture=6267f33da767b68c
[ElementsGroupOverride_Enable]
$Minimap Road
$Minimap new
$Car glass
[ElementsGroupOverride]
$Minimap Road
format=element_only_v5
format=element_only_v6
handling=skip
sig_perspective=1
sig_persp_hfov=9
@@ -29,6 +41,7 @@ sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=0
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
@@ -50,7 +63,7 @@ sig_blend_color=1
sig_blend_alpha=1
$FMV
format=element_only_v5
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
@@ -62,6 +75,7 @@ sig_ortho_right=50
sig_ortho_top=38
sig_ortho_bottom=-38
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
@@ -82,3 +96,115 @@ sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
$Fmv new
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=-50
sig_ortho_right=50
sig_ortho_top=38
sig_ortho_bottom=-38
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=007f0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
$Minimap new
format=element_only_v6
handling=skip
sig_perspective=1
sig_persp_hfov=9000
sig_persp_vfov=9000
sig_persp_near=1000
sig_persp_far=800000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=872
sig_vp_y=722
sig_vp_w=60
sig_vp_h=60
sig_sc_l=812
sig_sc_t=662
sig_sc_r=931
sig_sc_b=781
sig_alpha=007f0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
$Car glass
format=element_only_v6
handling=camera_anchor
anchor_up=0.6
anchor_hide=1
comments=Keeps jumping left/right
selected_match_mode=include
sig_perspective=1
sig_persp_hfov=7812
sig_persp_vfov=6265
sig_persp_near=1000
sig_persp_far=800000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=007f0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
selected_match_0_family_version=2
selected_match_0_vs_family=25d00027e1d6a5ce
selected_match_0_ps_family=9d787892a4e9865b
selected_match_0_gs_family=9a65ac00c545d41f
selected_match_0_texture=863021b30fda28e6
selected_match_0_texture=e610a9b60b3feb19
+24 -12
View File
@@ -1,15 +1,7 @@
[ShaderOverride_Enable]
[ShaderOverride]
$Unnamed Shader 1
Hash=000000001410f7c7
Type=PS
match_mode=exact_hash
handling=screen
[ElementsGroupOverride_Enable]
$HUD
[ElementsGroupOverride]
$HUD
format=element_only_v5
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
@@ -21,6 +13,7 @@ sig_ortho_right=32
sig_ortho_top=24
sig_ortho_bottom=-24
sig_use_projection=0
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
@@ -40,6 +33,25 @@ sig_zupdate=1
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=0
[Graphics.VR]
UnitsPerMeter = 50.00
VirtualScreen = False
[ShaderOverride_Enable]
$Unnamed Shader 2
[ShaderOverride]
$Unnamed Shader 1
Hash=000000001410f7c7
Type=PS
match_mode=exact_hash
handling=screen
family_version=1
$Unnamed Shader 2
Hash=00000000cbf93e9e
Type=PS
match_mode=shader_family
handling=camera_anchor
anchor_up=1
anchor_hide=1
anchor_upm=10
family_version=2
hash_family=1
family_signature=c5d588563a94c74b
+304
View File
@@ -0,0 +1,304 @@
[Graphics.VR]
UnitsPerMeter = 5.00
[TextureElementOverride_Enable]
$HUD
$Numbers
$Text
$Minimap
$Abilities Icon
[TextureElementOverride]
$HUD
handling=screen
texture=000feab48fee8c58
texture=092e69959b902dd0
texture=2190cae106e5e83f
texture=4bee45a819f8bb5e
texture=4eb176e754fbf774
texture=706dee3bd02bc003
texture=79bf7486becb290f
texture=a4a984dc1a7bfb22
texture=c2f5d305ba9a1eb6
texture=d0cc204ca95d690f
texture=db82f2b3286bf55c
texture=e081e42af0931321
texture=e70f08b827057365
texture=efdb751179b7a51a
$Numbers
handling=screen
texture=000feab48fee8c58
texture=0529335e876e8cab
texture=0551e48a4428aa63
texture=1f86104a804c2b65
texture=2190cae106e5e83f
texture=21ff23ce1127704e
texture=2315d5969c28b6d7
texture=2d01603371cf3633
texture=30c06b50c2b6110c
texture=311b1f3d09871b17
texture=389c9e5f9661c073
texture=3c2fafe1e7f1556b
texture=3e4c32129bd30598
texture=46c67c44d6bc9d49
texture=4796d64e2ca00b39
texture=49cbcf7c4bb5f8e0
texture=4bae813951fb0d93
texture=5282d6e83e8099d8
texture=61fee5520d0de8ec
texture=677c741d0cafb1a6
texture=7829f962c0bc14ec
texture=79bf7486becb290f
texture=7eca49b4790ccd80
texture=8ac7f3900af11152
texture=a4a984dc1a7bfb22
texture=add83018e4f7e24c
texture=af1ab2d0a576c895
texture=b2204a805de726b1
texture=b91be7c3aec21e6b
texture=c5f4f5d565de6efc
texture=cba42a3fd57f8765
texture=d0cc204ca95d690f
texture=d4cb44c6651a0e06
texture=e081e42af0931321
texture=e5257571ca5013ed
texture=e70f08b827057365
texture=e8b8fffd46b5bce2
texture=efcc66d7e2deb7eb
texture=efdb751179b7a51a
texture=f3ce0b2de9d72a54
texture=f755183ca0024ec5
$Text
handling=screen
texture=04c66b651bc95943
texture=07b64736724232f0
texture=089cec1b0553a8bb
texture=0a1def28f641297d
texture=1e32c15e33599113
texture=24091644e5fb98ed
texture=24f6ec8be5e32761
texture=35074e710c532e93
texture=36cbd1e4289bb97f
texture=44996b07cb345a37
texture=50cb94aca7ec97b5
texture=5accb137a890e948
texture=5afb864b2c552aac
texture=665b45d24176e41f
texture=681c37116ae53d9e
texture=69b3d30a27d29936
texture=913e1975ffd4e592
texture=92a1216a845fb6cd
texture=92d763e178807ea2
texture=964cfa7c7309c0b0
texture=9a2691ee1d45bfda
texture=9f8bd738c39d299d
texture=a428846c536e9264
texture=adaf235e29e77ea6
texture=b670c2aae778b652
texture=b865b3284c9b0f2d
texture=b9ed1bbb310cde68
texture=c07bc68c2dbcf7f2
texture=c187aa217ae751cb
texture=c190ebacbb4ab2a1
texture=c3ac65bf337071e3
texture=c7569d94799d5805
texture=d4ca8142907bfdc3
texture=d4cb44c6651a0e06
texture=d8cec25cbf1d03cc
texture=d9a03313d846878f
texture=df92c2854dc68647
texture=e029fe8239fb5e02
texture=e362b2e98d72d149
texture=ee9ddb0d0171e208
texture=f5d7a7b1fccda51f
texture=fda1b8660587789f
texture=feb48a9794bc6a02
$Minimap
handling=screen
texture=6eb09ee517db7750
$Abilities Icon
handling=screen
texture=1885f4bbd0ec2859
texture=1e9d9592ceb30d5e
texture=282eb5226e9c47b1
texture=53281c16970c6186
texture=7264c9e36936a7ae
texture=df1f286f4e35d324
texture=f0a967b0a64e098c
texture=fae7a31f7d0fdf1c
[ElementsGroupOverride_Enable]
$HUD
$Element Draw 1
[ElementsGroupOverride]
$HUD
format=element_only_v6
handling=screen
sig_perspective=1
sig_persp_hfov=3110
sig_persp_vfov=2500
sig_persp_near=1000
sig_persp_far=100000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=0
$HUD Tags
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=6400
sig_ortho_top=0
sig_ortho_bottom=-4800
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=0
$Text
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=-48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=00640000
sig_ztest=0
sig_zupdate=0
sig_zfunc=0
sig_blend_color=1
sig_blend_alpha=0
$FMV
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=007f0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=0
$Element Draw 1
format=element_only_v6
handling=fullscreen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=25600
sig_ortho_top=0
sig_ortho_bottom=19200
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=470
sig_vp_y=438
sig_vp_w=128
sig_vp_h=96
sig_sc_l=342
sig_sc_t=342
sig_sc_r=597
sig_sc_b=533
sig_alpha=007f0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=0
+228
View File
@@ -0,0 +1,228 @@
[TextureElementOverride_Enable]
[TextureElementOverride]
$Lamp Torch
handling=controller_anchor
anchor_hand=right
anchor_rotation=full
texture=6fbbed05423d4967
texture=a9a59173f8247547
texture=dfffdb604847eab9
texture=fc30c7dabe1e6376
$Luigi Moustache
handling=camera_anchor
anchor_hide=0
anchor_rotation=yaw
anchor_upm=50
texture=4b5ae2d1b071af60
[Graphics.VR]
OrthoScissorFix = True
SmallViewportsOnScreen = False
[ElementsGroupOverride_Enable]
$Lighting in Lab
$Gameboy horror minimap
[ElementsGroupOverride]
$Lighting in Lab
format=element_only_v6
handling=fullscreen
sig_perspective=1
sig_persp_hfov=2254
sig_persp_vfov=1700
sig_persp_near=3000000
sig_persp_far=500000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=660
sig_vp_y=580
sig_vp_w=320
sig_vp_h=240
sig_sc_l=341
sig_sc_t=341
sig_sc_r=978
sig_sc_b=818
sig_alpha=00240000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
$Element Draw 298
format=element_only_v6
handling=headlocked
sig_perspective=1
sig_persp_hfov=3048
sig_persp_vfov=2600
sig_persp_near=1000
sig_persp_far=32768000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=872
sig_vp_y=744
sig_vp_w=55
sig_vp_h=42
sig_sc_l=817
sig_sc_t=702
sig_sc_r=926
sig_sc_b=785
sig_alpha=00240000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=0
$Lighting Foyer
format=element_only_v6
handling=fullscreen
sig_perspective=1
sig_persp_hfov=2254
sig_persp_vfov=1700
sig_persp_near=3000000
sig_persp_far=500000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=660
sig_vp_y=580
sig_vp_w=320
sig_vp_h=240
sig_sc_l=341
sig_sc_t=341
sig_sc_r=978
sig_sc_b=818
sig_alpha=00640000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
$Lighting Foyer 2
format=element_only_v6
handling=fullscreen
sig_perspective=1
sig_persp_hfov=2254
sig_persp_vfov=1700
sig_persp_near=3000000
sig_persp_far=500000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=660
sig_vp_y=580
sig_vp_w=320
sig_vp_h=240
sig_sc_l=341
sig_sc_t=341
sig_sc_r=978
sig_sc_b=693
sig_alpha=00640000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
$Luigi Lighting
format=element_only_v6
handling=fullscreen
sig_perspective=1
sig_persp_hfov=2254
sig_persp_vfov=1700
sig_persp_near=3000000
sig_persp_far=500000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=660
sig_vp_y=580
sig_vp_w=320
sig_vp_h=240
sig_sc_l=341
sig_sc_t=341
sig_sc_r=978
sig_sc_b=818
sig_alpha=00240000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
$Gameboy horror minimap
format=element_only_v6
handling=screen_pane
sig_perspective=1
sig_persp_hfov=3422
sig_persp_vfov=2600
sig_persp_near=16000
sig_persp_far=819200
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=660
sig_vp_y=580
sig_vp_w=208
sig_vp_h=156
sig_sc_l=452
sig_sc_t=424
sig_sc_r=867
sig_sc_b=735
sig_alpha=00640000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
+228
View File
@@ -0,0 +1,228 @@
[Graphics.VR]
UnitsPerMeter = 500.00
VirtualScreen = True
ExactScreenDepth = False
OrthoScissorFix = True
DetectRenderTargets = True
SmallViewportsOnScreen = True
FrameSizeFromXFB = False
RemoveCinematicBars = False
[ShaderOverride_Enable]
[ShaderOverride]
[ElementsGroupOverride_Enable]
$Character Select - Characters & Kart
[ElementsGroupOverride]
$HUD
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=60
sig_ortho_top=0
sig_ortho_bottom=44
sig_use_projection=0
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=646
sig_vp_y=566
sig_vp_w=304
sig_vp_h=224
sig_sc_l=342
sig_sc_t=342
sig_sc_r=949
sig_sc_b=789
sig_alpha=00640000
sig_ztest=0
sig_zupdate=0
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=0
$Shadows
format=element_only_v6
handling=fullscreen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=60
sig_ortho_top=0
sig_ortho_bottom=44
sig_use_projection=0
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=646
sig_vp_y=566
sig_vp_w=304
sig_vp_h=224
sig_sc_l=342
sig_sc_t=342
sig_sc_r=949
sig_sc_b=789
sig_alpha=003f0000
sig_ztest=0
sig_zupdate=0
sig_zfunc=0
sig_blend_color=1
sig_blend_alpha=1
$EFB
format=element_only_v6
handling=fullscreen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=60
sig_ortho_top=0
sig_ortho_bottom=44
sig_use_projection=0
sig_use_projection_type=1
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=646
sig_vp_y=566
sig_vp_w=304
sig_vp_h=224
sig_sc_l=342
sig_sc_t=342
sig_sc_r=949
sig_sc_b=789
sig_alpha=00640000
sig_ztest=0
sig_zupdate=0
sig_zfunc=0
sig_blend_color=1
sig_blend_alpha=0
$Shadow w Proj
format=element_only_v6
handling=fullscreen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=60
sig_ortho_top=0
sig_ortho_bottom=44
sig_use_projection=0
sig_use_projection_type=1
sig_use_layer=0
sig_use_viewport=0
sig_use_scissor=0
sig_use_render_state=1
sig_layer=0
sig_vp_x=646
sig_vp_y=566
sig_vp_w=304
sig_vp_h=224
sig_sc_l=342
sig_sc_t=342
sig_sc_r=949
sig_sc_b=789
sig_alpha=003f0000
sig_ztest=0
sig_zupdate=0
sig_zfunc=0
sig_blend_color=1
sig_blend_alpha=1
$Shadows on Daisy Cruiser
format=element_only_v6
handling=fullscreen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=60
sig_ortho_top=0
sig_ortho_bottom=44
sig_use_projection=0
sig_use_projection_type=1
sig_use_layer=0
sig_use_viewport=0
sig_use_scissor=0
sig_use_render_state=1
sig_layer=0
sig_vp_x=646
sig_vp_y=566
sig_vp_w=304
sig_vp_h=224
sig_sc_l=342
sig_sc_t=342
sig_sc_r=949
sig_sc_b=789
sig_alpha=00640000
sig_ztest=0
sig_zupdate=0
sig_zfunc=0
sig_blend_color=1
sig_blend_alpha=1
$Character Select - Characters & Kart
format=element_only_v6
handling=screen_pane
screen_pane_depth=vr
sig_perspective=1
sig_persp_hfov=5017
sig_persp_vfov=3000
sig_persp_near=10000
sig_persp_far=20000000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=0
sig_layer=0
sig_vp_x=646
sig_vp_y=616
sig_vp_w=304
sig_vp_h=174
sig_sc_l=342
sig_sc_t=442
sig_sc_r=949
sig_sc_b=789
sig_alpha=007f0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
[TextureElementOverride_Enable]
[TextureElementOverride]
$Mario
handling=camera_anchor
anchor_up=0.5
anchor_forward=0.3
anchor_hide=0
anchor_upm=50
texture=3a2498c371e850ad
-178
View File
@@ -1,178 +0,0 @@
[ShaderOverride_Enable]
[ShaderOverride]
$EFB Effects
Hash=000000003d877e91
Type=PS
match_mode=exact_hash
handling=fullscreen
$Character_Shadows
Hash=000000006c367f0c
Type=PS
match_mode=exact_hash
handling=fullscreen
$EFB Effects 2
Hash=000000005347e90a
Type=PS
match_mode=exact_hash
handling=fullscreen
$HUD
Hash=00000000198dabb4
Type=VS
match_mode=exact_hash
handling=screen
$Main menu stars
Hash=00000000dd2e5970
Type=VS
match_mode=exact_hash
handling=screen
$Main menu background
Hash=00000000d527ab2a
Type=VS
match_mode=exact_hash
handling=screen
$Main menu up
Hash=000000008d2ef813
Type=VS
match_mode=exact_hash
handling=screen
$Main menu blue
Hash=00000000516da5d0
Type=VS
match_mode=exact_hash
handling=screen
$Main menu arrows
Hash=00000000118459ee
Type=VS
match_mode=exact_hash
handling=screen
$Blue Square
Hash=000000002b3a6cc8
Type=VS
match_mode=exact_hash
handling=screen
$EFB Desert
Hash=0000000026e1b10a
Type=PS
match_mode=exact_hash
handling=fullscreen
$EFB Desert 2
Hash=0000000082d8dfce
Type=VS
match_mode=exact_hash
handling=fullscreen
[ElementsGroupOverride_Enable]
$EFB
$Shadow
[ElementsGroupOverride]
$HUD
format=element_only_v5
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=60
sig_ortho_top=0
sig_ortho_bottom=44
sig_use_projection=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=646
sig_vp_y=566
sig_vp_w=304
sig_vp_h=224
sig_sc_l=342
sig_sc_t=342
sig_sc_r=949
sig_sc_b=789
sig_alpha=00640000
sig_ztest=0
sig_zupdate=0
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=0
$EFB
format=element_only_v5
handling=fullscreen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=60
sig_ortho_top=0
sig_ortho_bottom=44
sig_use_projection=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=646
sig_vp_y=566
sig_vp_w=304
sig_vp_h=224
sig_sc_l=342
sig_sc_t=342
sig_sc_r=949
sig_sc_b=789
sig_alpha=00640000
sig_ztest=0
sig_zupdate=0
sig_zfunc=0
sig_blend_color=1
sig_blend_alpha=0
$Shadow
format=element_only_v5
handling=fullscreen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=60
sig_ortho_top=0
sig_ortho_bottom=44
sig_use_projection=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=646
sig_vp_y=566
sig_vp_w=304
sig_vp_h=224
sig_sc_l=342
sig_sc_t=342
sig_sc_r=949
sig_sc_b=789
sig_alpha=003f0000
sig_ztest=0
sig_zupdate=0
sig_zfunc=0
sig_blend_color=1
sig_blend_alpha=1
[Graphics.VR]
UnitsPerMeter = 500.00
VirtualScreen = True
-55
View File
@@ -1,55 +0,0 @@
[Graphics.VR]
UnitsPerMeter = 500.00
[ShaderOverride_Enable]
[ShaderOverride]
$HUD
Hash=00000000387e78c8
Type=PS
handling=screen
$HUD2
Hash=00000000c94c4d5f
Type=PS
handling=screen
$HUD item
Hash=00000000ecdd6992
Type=PS
handling=screen
[ElementsGroupOverride_Enable]
[ElementsGroupOverride]
$Element Draw 815
format=element_only_v5
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=60,800
sig_ortho_top=0
sig_ortho_bottom=44,800
sig_use_projection=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=646
sig_vp_y=566
sig_vp_w=304
sig_vp_h=224
sig_sc_l=342
sig_sc_t=342
sig_sc_r=949
sig_sc_b=789
sig_alpha=003f0000
sig_ztest=0
sig_zupdate=0
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
+93 -44
View File
@@ -1,52 +1,101 @@
[Graphics.VR]
UnitsPerMeter = 1.5
HudThickness = 0.5
[ElementsGroupOverride_Enable]
$Metroid Profile HUD and Visor
$Metroid Profile Screen Effects
$Metroid Profile Hidden Layers
$Black Box on the Left Side
$Menu
$Menu 2
$Canon test
[ElementsGroupOverride]
$Metroid Profile HUD and Visor
format=element_profile_v1
handling=headlocked
profile=metroid_prime_1_gc
profile_layer=METROID_HUD
profile_layer=METROID_UNKNOWN_HUD
profile_layer=METROID_DARK_VISOR_HUD
profile_layer=METROID_XRAY_HUD
profile_layer=METROID_VISOR
profile_layer=METROID_HELMET
profile_layer=METROID_VISOR_RADAR_HINT
profile_layer=METROID_RADAR_DOT
profile_layer=METROID_SCAN_RETICLE
profile_layer=METROID_SCAN_TEXT
profile_layer=METROID_SCAN_HOLOGRAM
profile_layer=METROID_VISOR_BOOTUP
profile_layer=METROID_MAP_OR_HINT
profile_layer=METROID_MAP
format = element_only_v6
handling = controller_anchor
profile = metroid_prime_1_gc
profile_layer = METROID_VISOR_DIRT
sig_perspective = 1
sig_persp_hfov = 8243
sig_persp_vfov = 6500
sig_persp_near = 1000
sig_persp_far = 409600
sig_ortho_left = 0
sig_ortho_right = 0
sig_ortho_top = 0
sig_ortho_bottom = 0
sig_use_projection = 0
sig_use_projection_type = 0
sig_use_layer = 0
sig_use_viewport = 0
sig_use_scissor = 0
sig_use_render_state = 1
sig_layer = 0
sig_vp_x = 662
sig_vp_y = 566
sig_vp_w = 320
sig_vp_h = 224
sig_sc_l = 342
sig_sc_t = 342
sig_sc_r = 981
sig_sc_b = 789
sig_alpha = 007f0000
sig_ztest = 1
sig_zupdate = 1
sig_zfunc = 3
sig_blend_color = 1
sig_blend_alpha = 1
anchor_hand = right
anchor_rotation = full
anchor_pitch = -90
texture_mode = include
texture = 2c8729df85edbaf7
[Graphics.VR]
AutoNativeEfbEffects = False
DetectRenderTargets = False
DetectSkybox = True
DisableCPUCull = True
DontClearScreen = True
ExactScreenDepth = False
FrameSizeFromXFB = False
MetroidThermalVisorFix = True
RemoveCinematicBars = True
SmallViewportsOnScreen = False
UnitsPerMeter = 1.50
VirtualScreen = False
[ShaderOverride_Enable]
[ShaderOverride]
[TextureElementOverride_Enable]
$Logos
$Press Start
$Menu Text
$Cannon
[TextureElementOverride]
$Logos
handling=screen
texture=71f924e0cffdc1af
texture=7d6faa0461b7ccbe
texture=9a427b09ac8ce161
$Metroid Profile Screen Effects
format=element_profile_v1
handling=fullscreen
profile=metroid_prime_1_gc
profile_layer=METROID_SCREEN_FADE
profile_layer=METROID_SCREEN_OVERLAY
profile_layer=METROID_ECHO_EFFECT
profile_layer=METROID_THERMAL_EFFECT
profile_layer=METROID_THERMAL_EFFECT_GUN
profile_layer=METROID_CHARGE_BEAM_EFFECT
profile_layer=METROID_XRAY_EFFECT
profile_layer=METROID_DARK_EFFECT
profile_layer=METROID_VISOR_DIRT
profile_layer=METROID_SCAN_DARKEN
profile_layer=METROID_SCAN_HIGHLIGHTER
$Press Start
handling=screen
texture=d1994fd7bf879660
$Metroid Profile Hidden Layers
format=element_profile_v1
handling=skip
profile=metroid_prime_1_gc
profile_layer=METROID_EFB_COPY
profile_layer=METROID_BLACK_BARS
profile_layer=METROID_SCAN_BOX
$Menu Text
handling=screen
texture=98d66e7812c70dd8
texture=bb21e8755f36b2f0
$Cannon
handling=controller_anchor
anchor_hand=right
anchor_rotation=full
anchor_pitch=-90
texture=1789add6ac081b19
texture=3c6ded49d64d30f2
texture=4f80b529b06db3fa
texture=702d953c2f22b5c6
texture=74b69a5b06b07925
texture=8d6f00b5d395f22f
texture=9fa941b46459adc5
texture=bd189f9434910a83
texture=bec6d78ea7dd739e
texture=ca5af9af518b322d
texture=f0180e008485ac86
+195 -19
View File
@@ -1,19 +1,9 @@
[HideObjectCodes_Enabled]
[HideObjectCodes]
$remove orb
Type=8bits
Upper=0x0000000000000000
Lower=0x000000000000003F
$remove shadow 2
Type=8bits
Upper=0x0000000000000000
Lower=0x0000000000000000
[ElementsGroupOverride_Enable]
$Circle and Shadow
$Big Shadow
$Bomb timer
[ElementsGroupOverride]
$HUD
format=element_only_v5
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
@@ -25,6 +15,7 @@ sig_ortho_right=64
sig_ortho_top=0
sig_ortho_bottom=48
sig_use_projection=0
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
@@ -46,7 +37,7 @@ sig_blend_color=1
sig_blend_alpha=1
$Circle and Shadow
format=element_only_v5
format=element_only_v6
handling=skip
texture_mode=exclude
texture=2f9ac52528781aae
@@ -62,6 +53,7 @@ sig_ortho_right=64
sig_ortho_top=0
sig_ortho_bottom=48
sig_use_projection=0
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
@@ -81,6 +73,159 @@ sig_zupdate=1
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
$Big Shadow
format=element_only_v6
handling=screen
sig_perspective=1
sig_persp_hfov=7518
sig_persp_vfov=6000
sig_persp_near=100
sig_persp_far=2000000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=660
sig_vp_y=564
sig_vp_w=320
sig_vp_h=224
sig_sc_l=340
sig_sc_t=340
sig_sc_r=979
sig_sc_b=787
sig_alpha=00240000
sig_ztest=1
sig_zupdate=1
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
$Bomb timer
format=element_only_v6
handling=screen
sig_perspective=1
sig_persp_hfov=7518
sig_persp_vfov=6000
sig_persp_near=10
sig_persp_far=2000000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=660
sig_vp_y=564
sig_vp_w=320
sig_vp_h=224
sig_sc_l=340
sig_sc_t=340
sig_sc_r=979
sig_sc_b=787
sig_alpha=00240000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
$Bonus Stage Floor
format=element_only_v6
handling=skip
selected_match_mode=include
sig_perspective=1
sig_persp_hfov=7517
sig_persp_vfov=6000
sig_persp_near=100
sig_persp_far=2000000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=660
sig_vp_y=564
sig_vp_w=320
sig_vp_h=224
sig_sc_l=340
sig_sc_t=340
sig_sc_r=979
sig_sc_b=787
sig_alpha=00240000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
selected_match_0_family_version=2
selected_match_0_vs_family=d0d904e1e81de8fd
selected_match_0_ps_family=d335d27bc08aa10d
selected_match_0_gs_family=9a65ac00c545d41f
selected_match_0_texture=164d0a0148d81b23
selected_match_0_texture=769e44967c15d4ff
selected_match_0_texture=aa889e25b7fd62d4
selected_match_0_texture=d19c357c078982c8
$Element Draw 574
format=element_only_v6
handling=flag
flag=test
clear_efb=1
sig_perspective=1
sig_persp_hfov=7517
sig_persp_vfov=6000
sig_persp_near=100
sig_persp_far=2000000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=0
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=660
sig_vp_y=564
sig_vp_w=320
sig_vp_h=224
sig_sc_l=340
sig_sc_t=340
sig_sc_r=979
sig_sc_b=787
sig_alpha=00240000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
[Graphics.VR]
AutoNativeEfbEffects = True
DetectRenderTargets = False
ExactScreenDepth = True
SmallViewportsOnScreen = True
VirtualScreen = True
[ShaderOverride_Enable]
[ShaderOverride]
$HUD
@@ -88,12 +233,43 @@ Hash=0000000056886e42
Type=PS
match_mode=exact_hash
handling=screen
family_version=1
$Bonus Stage Floor
Hash=000000002baf3bf9
Hash=00000000713b4a71
Type=PS
match_mode=exact_hash
match_mode=shader_family
handling=skip
[Graphics.VR]
UnitsPerMeter = 1.00
VirtualScreen = True
family_version=2
hash_family=1
family_signature=d335d27bc08aa10d
$Ball
Hash=000000002620f3f8
Type=PS
match_mode=shader_family
handling=camera_anchor
anchor_up=0.2
anchor_hide=0
family_version=2
hash_family=1
family_signature=49e5f87e14eb6b09
[TextureElementOverride_Enable]
[TextureElementOverride]
$AiAi Body
handling=skip
flag=FPV
texture=52269039af1be269
texture=6f235d58652912ae
texture=792fe286a81d74c9
texture=7acaa6e811b2ca35
texture=ed14a87a06a211b3
$Test skip
handling=skip
texture=190fd677cb984dad
texture=2606765b829f5012
texture=2ee02bd60fa4aecb
texture=44eb3efaa20066fe
texture=84e46e215eb0d680
+605
View File
@@ -0,0 +1,605 @@
[Graphics.VR]
AutoNativeEfbEffects = False
DetectRenderTargets = True
DontClearScreen = True
ExactScreenDepth = False
OrthoScissorFix = True
UnitsPerMeter = 500.00
VirtualScreen = False
[ShaderOverride_Enable]
$Water fix
[ShaderOverride]
$Skybox 01
Hash=000000003abc7c0c
Type=PS
match_mode=shader_family
handling=skip
family_version=2
hash_family=1
family_signature=df6a556b00c84d5d
$Skybox 02
Hash=00000000272321e4
Type=PS
match_mode=shader_family
handling=skip
family_version=2
hash_family=1
family_signature=105cc88e658e66b5
$Water fix
Hash=00000000cea766ad
Type=PS
match_mode=shader_family
handling=skip
family_version=2
hash_family=1
family_signature=d90279e5c7903380
$Delphino Ground
Hash=000000004e214c78
Type=PS
match_mode=shader_family
handling=skip
family_version=2
hash_family=1
family_signature=9d787892a4e9865b
$Select Data Water (AR)
Hash=000000009698a276
Type=PS
match_mode=shader_family
handling=skip
family_version=2
hash_family=1
family_signature=476921b225ef82dc
$Select Data Water
Hash=000000006b85185b
Type=PS
match_mode=shader_family
handling=skip
family_version=2
hash_family=1
family_signature=2daec1ad3d2c6482
$Select Data Shadows
Hash=00000000a43a43f0
Type=PS
match_mode=shader_family
handling=skip
family_version=2
hash_family=1
family_signature=944b215517cc3cdb
[ElementsGroupOverride_Enable]
$FMV
$Level Select
[ElementsGroupOverride]
$EFB
format=element_only_v6
handling=skip
texture_mode=exclude
texture=0b15cd9b3c7aadc5
texture=0deebc4f6cbf8fd7
texture=1c96069e3a43461a
texture=2a424a5892944eb4
texture=39f5a44bd06af71c
texture=7429ab5919c19776
texture=780c14f682f381a4
texture=863ba9ae1f747853
texture=a0ee80f74dd3b117
texture=a2420b3ad5c8fbbe
texture=a31a15e8e436f22f
texture=ab271635b24499b1
sig_perspective=1
sig_persp_hfov=6
sig_persp_vfov=5
sig_persp_near=10
sig_persp_far=30
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=0
sig_use_projection_type=1
sig_use_layer=0
sig_use_viewport=0
sig_use_scissor=0
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=566
sig_vp_w=320
sig_vp_h=224
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=789
sig_alpha=007f0000
sig_ztest=1
sig_zupdate=0
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
$HUD
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=60
sig_ortho_top=1
sig_ortho_bottom=46
sig_use_projection=0
sig_use_projection_type=1
sig_use_layer=0
sig_use_viewport=0
sig_use_scissor=0
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=566
sig_vp_w=320
sig_vp_h=224
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=789
sig_alpha=00640000
sig_ztest=0
sig_zupdate=0
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
$FMV
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64
sig_ortho_top=0
sig_ortho_bottom=44
sig_use_projection=0
sig_use_projection_type=1
sig_use_layer=0
sig_use_viewport=0
sig_use_scissor=0
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=566
sig_vp_w=320
sig_vp_h=224
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=789
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=0
$EFB 02
format=element_only_v6
handling=skip
texture_mode=exclude
texture=1c96069e3a43461a
texture=2a424a5892944eb4
texture=7429ab5919c19776
texture=780c14f682f381a4
texture=863ba9ae1f747853
sig_perspective=1
sig_persp_hfov=6
sig_persp_vfov=5
sig_persp_near=10
sig_persp_far=30
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=0
sig_use_projection_type=1
sig_use_layer=0
sig_use_viewport=0
sig_use_scissor=0
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=566
sig_vp_w=320
sig_vp_h=224
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=789
sig_alpha=007f0000
sig_ztest=1
sig_zupdate=0
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
$Bianco Hill Water
format=element_only_v6
handling=skip
texture_mode=exclude
texture=5bbe7c36b7331e6d
texture=7e14bcc72be82e94
texture=eaea00e24e6aacab
texture=f9baa54de002fa39
sig_perspective=1
sig_persp_hfov=6
sig_persp_vfov=5
sig_persp_near=10
sig_persp_far=30
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=0
sig_use_projection_type=1
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=566
sig_vp_w=320
sig_vp_h=224
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=789
sig_alpha=007f0000
sig_ztest=1
sig_zupdate=0
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=0
$Level Select
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=60
sig_ortho_top=1
sig_ortho_bottom=46
sig_use_projection=0
sig_use_projection_type=1
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=566
sig_vp_w=320
sig_vp_h=224
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=789
sig_alpha=00640000
sig_ztest=0
sig_zupdate=0
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
$Parts of Delphino Plaza Ground (AR)
format=element_only_v6
handling=skip
selected_match_mode=include
sig_perspective=1
sig_persp_hfov=7932
sig_persp_vfov=5000
sig_persp_near=10000
sig_persp_far=30000004
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=0
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=566
sig_vp_w=320
sig_vp_h=224
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=789
sig_alpha=007f0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=0
selected_match_0_family_version=2
selected_match_0_vs_family=f4c7570ded246939
selected_match_0_ps_family=9d787892a4e9865b
selected_match_0_gs_family=9a65ac00c545d41f
selected_match_0_texture=09223f92a4d83e02
selected_match_0_texture=8777328373eb7bd4
selected_match_0_texture=bed8fbefe21d43cb
selected_match_0_texture=da6f0a689f43eeb7
selected_match_1_family_version=2
selected_match_1_vs_family=f4c7570ded246939
selected_match_1_ps_family=9d787892a4e9865b
selected_match_1_gs_family=9a65ac00c545d41f
selected_match_1_texture=09223f92a4d83e02
selected_match_1_texture=66f988b1dcbd9332
selected_match_1_texture=bed8fbefe21d43cb
selected_match_1_texture=da6f0a689f43eeb7
selected_match_2_family_version=2
selected_match_2_vs_family=f4c7570ded246939
selected_match_2_ps_family=9d787892a4e9865b
selected_match_2_gs_family=9a65ac00c545d41f
selected_match_2_texture=09223f92a4d83e02
selected_match_2_texture=1abd04cf35cee8d9
selected_match_2_texture=bed8fbefe21d43cb
selected_match_2_texture=da6f0a689f43eeb7
selected_match_3_family_version=2
selected_match_3_vs_family=f4c7570ded246939
selected_match_3_ps_family=9d787892a4e9865b
selected_match_3_gs_family=9a65ac00c545d41f
selected_match_3_texture=09223f92a4d83e02
selected_match_3_texture=bed8fbefe21d43cb
selected_match_3_texture=c799aadbd949538c
selected_match_3_texture=da6f0a689f43eeb7
[TextureElementOverride_Enable]
$60fps Stars Glitch
$Behind Wall Mask
$Bianco Water
$File Select
$Heat Haze
$HUD
$HUD DEBS Alert
$Intro
$Level Select
$Option Menu
$Pause
$Pianta Village Water
$Title Screen
[TextureElementOverride]
$60fps Stars Glitch
handling=skip
texture=2224ef94600e4349
$Behind Wall Mask
handling=screen
texture=5c94b2c6f1649dab
$Bianco Water
handling=skip
texture=2dbb67e72bf8db05
$File Select
handling=screen
texture=111712b37213dc89
texture=2bcba8ce6e1fee64
texture=6105f7f114ae84e7
texture=64cee6c1e447fbf5
texture=76b33b6f37ae8f08
texture=943d2098e5ffb086
texture=999fa683890afc1f
texture=9bee06d8439a0efe
texture=9c61a1bda7d4df9f
texture=b760aadb1bf764e0
texture=b94d3c8dca426fb1
texture=bfd444847a23c61e
texture=ce5aff1cbf2eba90
texture=db199ec86a691416
texture=de4a444d21adeed6
texture=df56f15d71e7931b
texture=e1cd20bd2d00f48e
texture=e7663bdd3c3cb815
texture=e97372586eae7429
$Heat Haze
handling=skip
texture=a0ee80f74dd3b117
$HUD
handling=screen
texture=01a60a7d9b5f51c6
texture=0304896aa9adb0bf
texture=06f47ce9bd931cee
texture=0a330a53679495bf
texture=0a54fa0b5aed213f
texture=0ba0790584347690
texture=0ea77fbdffc6c900
texture=1d2547e8adb554d6
texture=1f600918722ebeca
texture=2701922b8bcb194e
texture=297479f41223c960
texture=2b9217f127a85419
texture=2f55b1232cb71f4f
texture=3c592f7ac2031d10
texture=45c7276ea8caa916
texture=47d941afe5ba76d6
texture=487a463bc0bd633c
texture=5014839063e2ef73
texture=509db83a57ea4dbf
texture=5231f8de769a7cfc
texture=577835acbee525ad
texture=6066c75478ca20d4
texture=60a4929bcf9cd85e
texture=62e4eac7f139141f
texture=6464ad542de196db
texture=6743827d94362afb
texture=6b299accc8ead586
texture=81765f96d3131cb7
texture=8381c728f194b3a0
texture=87785edd2c5550f9
texture=91ea110f64b641e9
texture=a1ad681e6c073750
texture=ab2ac66087591747
texture=ac9911596ff44f0f
texture=b048589bbf6e9ee3
texture=c9717b966554213f
texture=cc7ac949d09c6974
texture=cc7feca077d90013
texture=cfda62185dc4dd01
texture=d15419e685bdc648
texture=d7c966dd2344803f
texture=d9373485e4145137
texture=e2bbf85f32171071
texture=e6165ba3644fdb51
texture=e89c5b7615d307c1
texture=f5ea51068b0c1499
texture=f67b3c91df63d217
texture=f6abdf32379ebea3
texture=f9fe79ad514ef888
$HUD DEBS Alert
handling=screen
texture=0a87e259c524a5d8
texture=2e07a25ba44f339a
texture=31fac1826440ee46
texture=7cbd1245339e6d49
texture=e4b383fc9bacc672
$Intro
handling=screen
texture=071adce31d1747d7
texture=36ca6146c24274b5
texture=9972628edb9c9d47
texture=a3d41495fb684298
$Level Select
handling=screen
texture=105257d41ba3e61e
texture=16b63e57c5e0243d
texture=17ae6a23b59bcca2
texture=3cf0229711b06588
texture=46e34569265f7c42
texture=4d3e0661ddb61b36
texture=59bc2ea535ba329e
texture=5e1c3f78243abc9e
texture=7250a07aa00e1945
texture=794a9f476d81b933
texture=8132f4fab5486027
texture=8fc7d5531e087f0e
texture=941522d8ecb92a3a
texture=a47578f9e9b2bf49
texture=d13c18fe0a5750c3
texture=d18624c1b46d499b
texture=df05609140aeab06
texture=ea1730eb5fcfb672
$Option Menu
handling=screen
texture=1938181691fd5852
texture=1a782ff042c4b249
texture=37c9486b56315198
texture=37f4664824187eff
texture=3d2c9e30df1aaea7
texture=42a9b940b954a929
texture=50a451179c363bbb
texture=575fdba3a0f96cd6
texture=59e73f976091c40e
texture=654be1348658e4d1
texture=73f81d1173f84f5f
texture=881db0dbdb0fa6fb
texture=8b53dbe78fd9fa38
texture=8e4db6f51d2d8111
texture=ac03be30836f9c0a
texture=bfd444847a23c61e
texture=d050b33048b1b9d8
texture=d265f4c2fef089fd
texture=e98ce39a636fbb6d
texture=ee4d085b52d705a9
texture=fd17a9dba897c0de
$Pause
handling=screen
texture=07ad01cc9aad815b
texture=163f61548493efbb
texture=1f600918722ebeca
texture=27ee7e00861cefcc
texture=3c088294fd759555
texture=3f55bae1c2fec217
texture=45745a8a34f7c96b
texture=47d941afe5ba76d6
texture=53756de2f2c92144
texture=7ac1574dcb272c0c
texture=86e0a9cf002228b2
texture=88859e110db31a95
texture=8c76342201dcb87d
texture=973c2944edf640cc
texture=ac07ced61532d478
texture=b75b0aa81b91ef4e
texture=bf4c87f19404c73d
texture=c26a83dda44dc8b6
texture=d002bb380a37badf
texture=df435df4c810c026
texture=f16b6f03d9f2e288
$Pianta Village Water
handling=skip
texture=71d5a751cde6f897
$Select Data Ground
handling=skip
texture=21e544278a7fd949
texture=585fb96c9419590e
texture=f4e8f85b6d9d58d2
texture=fa92c42b02bdf884
$Title Screen
handling=screen
texture=0d72d804518cea76
texture=12c49516720224e9
texture=279b4ad929624e26
texture=2be218765ba946e5
texture=2e27761d897de1df
texture=2fca46cc2b0490f7
texture=332159b50e854264
texture=3d4469f3f4244b44
texture=4ab33179eab62b19
texture=4b8ca4ade2f87739
texture=4c10e4d1b62542a5
texture=549930ecad1ce7e9
texture=61538f252127d0a3
texture=665023fb85f9f4f3
texture=6838167583403da0
texture=6e965c8d22068600
texture=72093b9f0baf0279
texture=85af4308ecb3ed0e
texture=8d3df377ee98a246
texture=97e935152f7829cd
texture=9fcb17a7c98a957c
texture=ba65636909cf153e
texture=bd65da845999d990
texture=c69cbfa116116e04
texture=ca2e8e7c99a658fa
texture=ce88bfceeea828f7
texture=d0cba9c0255db427
texture=e5c071c1099ac762
texture=edab4e6c89e0c0d9
texture=f14f900999f6b99d
texture=f4101eefd907a066
+52 -23
View File
@@ -1,37 +1,66 @@
[ShaderOverride_Enable]
$Water fix
$Dark overlay
[ShaderOverride]
$Save hud
+Hash=000000001fa28974
+Type=PS
+handling=screen
Hash=000000001fa28974
Type=PS
match_mode=exact_hash
handling=screen
family_version=1
$Savescreen text
+Hash=000000004b5ec958
+Type=PS
+handling=screen
Hash=000000004b5ec958
Type=PS
match_mode=exact_hash
handling=screen
family_version=1
$Unnamed Shader
+Hash=000000002b3a6cc8
+Type=VS
+handling=screen
$Unnamed Shader
+Hash=0000000031c70e24
+Type=VS
+handling=screen
Hash=0000000031c70e24
Type=VS
match_mode=exact_hash
handling=screen
family_version=1
$Fludd Water Tank
+Hash=000000003a9e6320
+Type=VS
+handling=screen
Hash=000000003a9e6320
Type=VS
match_mode=exact_hash
handling=screen
family_version=1
$EFB
+Hash=00000000c071a3a6
+Type=VS
+handling=skip
Hash=00000000c071a3a6
Type=VS
match_mode=exact_hash
handling=skip
family_version=1
$Fludd Water Tank background
+Hash=00000000fe3d91e4
+Type=VS
+handling=screen
Hash=00000000fe3d91e4
Type=VS
match_mode=exact_hash
handling=screen
family_version=1
$Water fix
Hash=00000000ce0b0cff
Type=PS
match_mode=shader_family
handling=skip
family_version=2
hash_family=1
family_signature=d90279e5c7903380
$Dark overlay
Hash=00000000d805a87d
Type=PS
match_mode=shader_family
handling=skip
family_version=2
hash_family=1
family_signature=3c7345b940c3b6fd
[Graphics.VR]
DetectRenderTargets = True
OrthoScissorFix = True
@@ -1,239 +1,91 @@
[Graphics.VR]
UnitsPerMeter = 500.00
[TextureElementOverride_Enable]
$Water Effect
$Heat Haze
$HUD
$HUD DEBS Alert
$Pause
$Level Select
$Bianco Water
$60fps Stars Glitch
$Behind Wall Mask
$Title Screen
$File Select
$Option Menu
$Intro
$Pianta Village Water
[TextureElementOverride]
$Water Effect
[ShaderOverride_Enable]
[ShaderOverride]
$Startupscreen box
Hash=00000000516da5d0
Type=VS
match_mode=exact_hash
handling=screen
$Startupscreen box 2
Hash=000000002b3a6cc8
Type=VS
match_mode=exact_hash
handling=screen
$Startupscreen text 2
Hash=0000000031c70e24
Type=VS
match_mode=exact_hash
handling=screen
$Startupscreen_sprite
Hash=00000000467b2d0a
Type=VS
match_mode=exact_hash
handling=screen
$Water
Hash=00000000443bad5c
Type=VS
match_mode=exact_hash
handling=fullscreen
$efb01
Hash=00000000c071a3a6
Type=VS
match_mode=exact_hash
handling=skip
texture=2a424a5892944eb4
$Heat Haze
$Flud water tank
Hash=000000001ea4eedd
Type=PS
match_mode=exact_hash
handling=screen
$Flud water tank bac
Hash=0000000080fd3758
Type=PS
match_mode=exact_hash
handling=screen
$Water reflect
Hash=000000008bc1329c
Type=VS
match_mode=exact_hash
handling=skip
texture=a0ee80f74dd3b117
$HUD
handling=screen
texture=01a60a7d9b5f51c6
texture=0304896aa9adb0bf
texture=06f47ce9bd931cee
texture=0a330a53679495bf
texture=0a54fa0b5aed213f
texture=0ba0790584347690
texture=0ea77fbdffc6c900
texture=1d2547e8adb554d6
texture=1f600918722ebeca
texture=2701922b8bcb194e
texture=297479f41223c960
texture=2b9217f127a85419
texture=2f55b1232cb71f4f
texture=3c592f7ac2031d10
texture=45c7276ea8caa916
texture=47d941afe5ba76d6
texture=487a463bc0bd633c
texture=5014839063e2ef73
texture=509db83a57ea4dbf
texture=5231f8de769a7cfc
texture=577835acbee525ad
texture=6066c75478ca20d4
texture=60a4929bcf9cd85e
texture=62e4eac7f139141f
texture=6464ad542de196db
texture=6743827d94362afb
texture=6b299accc8ead586
texture=81765f96d3131cb7
texture=8381c728f194b3a0
texture=87785edd2c5550f9
texture=91ea110f64b641e9
texture=a1ad681e6c073750
texture=ab2ac66087591747
texture=ac9911596ff44f0f
texture=b048589bbf6e9ee3
texture=c9717b966554213f
texture=cc7ac949d09c6974
texture=cc7feca077d90013
texture=cfda62185dc4dd01
texture=d15419e685bdc648
texture=d7c966dd2344803f
texture=d9373485e4145137
texture=e2bbf85f32171071
texture=e6165ba3644fdb51
texture=e89c5b7615d307c1
texture=f5ea51068b0c1499
texture=f67b3c91df63d217
texture=f6abdf32379ebea3
texture=f9fe79ad514ef888
$HUD DEBS Alert
handling=screen
texture=0a87e259c524a5d8
texture=2e07a25ba44f339a
texture=31fac1826440ee46
texture=7cbd1245339e6d49
texture=e4b383fc9bacc672
$Pause
handling=screen
texture=07ad01cc9aad815b
texture=163f61548493efbb
texture=1f600918722ebeca
texture=27ee7e00861cefcc
texture=3c088294fd759555
texture=3f55bae1c2fec217
texture=45745a8a34f7c96b
texture=47d941afe5ba76d6
texture=53756de2f2c92144
texture=7ac1574dcb272c0c
texture=86e0a9cf002228b2
texture=88859e110db31a95
texture=8c76342201dcb87d
texture=973c2944edf640cc
texture=ac07ced61532d478
texture=b75b0aa81b91ef4e
texture=bf4c87f19404c73d
texture=c26a83dda44dc8b6
texture=d002bb380a37badf
texture=df435df4c810c026
texture=f16b6f03d9f2e288
$Level Select
handling=screen
texture=105257d41ba3e61e
texture=16b63e57c5e0243d
texture=17ae6a23b59bcca2
texture=3cf0229711b06588
texture=46e34569265f7c42
texture=4d3e0661ddb61b36
texture=59bc2ea535ba329e
texture=5e1c3f78243abc9e
texture=7250a07aa00e1945
texture=794a9f476d81b933
texture=8132f4fab5486027
texture=8fc7d5531e087f0e
texture=941522d8ecb92a3a
texture=a47578f9e9b2bf49
texture=d13c18fe0a5750c3
texture=d18624c1b46d499b
texture=df05609140aeab06
texture=ea1730eb5fcfb672
$Bianco Water
$Water effect 02
Hash=00000000d0bca5e8
Type=VS
match_mode=exact_hash
handling=skip
texture=2dbb67e72bf8db05
$60fps Stars Glitch
$EFB
Hash=00000000a2d9736d
Type=PS
match_mode=exact_hash
handling=skip
texture=2224ef94600e4349
$Behind Wall Mask
handling=screen
texture=5c94b2c6f1649dab
$Unnamed Shader 1
Hash=00000000ca9e5764
Type=PS
match_mode=exact_hash
handling=skip
$Title Screen
handling=screen
texture=0d72d804518cea76
texture=12c49516720224e9
texture=279b4ad929624e26
texture=2be218765ba946e5
texture=2e27761d897de1df
texture=2fca46cc2b0490f7
texture=332159b50e854264
texture=3d4469f3f4244b44
texture=4ab33179eab62b19
texture=4b8ca4ade2f87739
texture=4c10e4d1b62542a5
texture=549930ecad1ce7e9
texture=61538f252127d0a3
texture=665023fb85f9f4f3
texture=6838167583403da0
texture=6e965c8d22068600
texture=72093b9f0baf0279
texture=85af4308ecb3ed0e
texture=8d3df377ee98a246
texture=97e935152f7829cd
texture=9fcb17a7c98a957c
texture=ba65636909cf153e
texture=bd65da845999d990
texture=c69cbfa116116e04
texture=ca2e8e7c99a658fa
texture=ce88bfceeea828f7
texture=d0cba9c0255db427
texture=e5c071c1099ac762
texture=edab4e6c89e0c0d9
texture=f14f900999f6b99d
texture=f4101eefd907a066
$Sun
Hash=00000000eb4202b1
Type=PS
match_mode=exact_hash
handling=skip
$File Select
handling=screen
texture=111712b37213dc89
texture=2bcba8ce6e1fee64
texture=6105f7f114ae84e7
texture=64cee6c1e447fbf5
texture=76b33b6f37ae8f08
texture=943d2098e5ffb086
texture=999fa683890afc1f
texture=9bee06d8439a0efe
texture=9c61a1bda7d4df9f
texture=b760aadb1bf764e0
texture=b94d3c8dca426fb1
texture=bfd444847a23c61e
texture=ce5aff1cbf2eba90
texture=db199ec86a691416
texture=de4a444d21adeed6
texture=df56f15d71e7931b
texture=e1cd20bd2d00f48e
texture=e7663bdd3c3cb815
texture=e97372586eae7429
$Option Menu
handling=screen
texture=1938181691fd5852
texture=1a782ff042c4b249
texture=37c9486b56315198
texture=37f4664824187eff
texture=3d2c9e30df1aaea7
texture=42a9b940b954a929
texture=50a451179c363bbb
texture=575fdba3a0f96cd6
texture=59e73f976091c40e
texture=654be1348658e4d1
texture=73f81d1173f84f5f
texture=881db0dbdb0fa6fb
texture=8b53dbe78fd9fa38
texture=8e4db6f51d2d8111
texture=ac03be30836f9c0a
texture=bfd444847a23c61e
texture=d050b33048b1b9d8
texture=d265f4c2fef089fd
texture=e98ce39a636fbb6d
texture=ee4d085b52d705a9
texture=fd17a9dba897c0de
$Intro
handling=screen
texture=071adce31d1747d7
texture=36ca6146c24274b5
texture=9972628edb9c9d47
texture=a3d41495fb684298
$Pianta Village Water
$Unnamed Shader 2
Hash=00000000381d0018
Type=PS
match_mode=exact_hash
handling=skip
texture=71d5a751cde6f897
[ElementsGroupOverride_Enable]
$FMV
$Level Select
$Level Select PAL
[ElementsGroupOverride]
$EFB
format=element_only_v5
@@ -463,3 +315,268 @@ sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
$Level Select PAL
format=element_only_v5
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=-11
sig_ortho_right=71
sig_ortho_top=1
sig_ortho_bottom=46
sig_use_projection=0
sig_use_projection_type=1
sig_use_layer=0
sig_use_viewport=0
sig_use_scissor=0
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=522
sig_vp_w=320
sig_vp_h=180
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=701
sig_alpha=00640000
sig_ztest=0
sig_zupdate=0
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
[TextureElementOverride_Enable]
$Water Effect
$Heat Haze
$HUD
$HUD DEBS Alert
$Pause
$Level Select
$Bianco Water
$Behind Wall Mask
$Title Screen
$File Select
$Option Menu
$Intro
$Pianta Village Water
[TextureElementOverride]
$Water Effect
handling=skip
texture=2a424a5892944eb4
$Heat Haze
handling=skip
texture=a0ee80f74dd3b117
$HUD
handling=screen
texture=01a60a7d9b5f51c6
texture=0304896aa9adb0bf
texture=06f47ce9bd931cee
texture=0a330a53679495bf
texture=0a54fa0b5aed213f
texture=0ba0790584347690
texture=0ea77fbdffc6c900
texture=1d2547e8adb554d6
texture=1f600918722ebeca
texture=2701922b8bcb194e
texture=297479f41223c960
texture=2b9217f127a85419
texture=2f55b1232cb71f4f
texture=3c592f7ac2031d10
texture=45c7276ea8caa916
texture=47d941afe5ba76d6
texture=487a463bc0bd633c
texture=5014839063e2ef73
texture=509db83a57ea4dbf
texture=5231f8de769a7cfc
texture=577835acbee525ad
texture=6066c75478ca20d4
texture=60a4929bcf9cd85e
texture=62e4eac7f139141f
texture=6464ad542de196db
texture=6743827d94362afb
texture=6b299accc8ead586
texture=81765f96d3131cb7
texture=8381c728f194b3a0
texture=87785edd2c5550f9
texture=91ea110f64b641e9
texture=a1ad681e6c073750
texture=ab2ac66087591747
texture=ac9911596ff44f0f
texture=b048589bbf6e9ee3
texture=c9717b966554213f
texture=cc7ac949d09c6974
texture=cc7feca077d90013
texture=cfda62185dc4dd01
texture=d15419e685bdc648
texture=d7c966dd2344803f
texture=d9373485e4145137
texture=e2bbf85f32171071
texture=e6165ba3644fdb51
texture=e89c5b7615d307c1
texture=f5ea51068b0c1499
texture=f67b3c91df63d217
texture=f6abdf32379ebea3
texture=f9fe79ad514ef888
$HUD DEBS Alert
handling=screen
texture=0a87e259c524a5d8
texture=2e07a25ba44f339a
texture=31fac1826440ee46
texture=3805b95c880e2ed2
texture=7cbd1245339e6d49
texture=e4b383fc9bacc672
$Pause
handling=screen
texture=07ad01cc9aad815b
texture=163f61548493efbb
texture=1f600918722ebeca
texture=27ee7e00861cefcc
texture=3c088294fd759555
texture=3f55bae1c2fec217
texture=45745a8a34f7c96b
texture=47d941afe5ba76d6
texture=53756de2f2c92144
texture=7ac1574dcb272c0c
texture=86e0a9cf002228b2
texture=88859e110db31a95
texture=8c76342201dcb87d
texture=973c2944edf640cc
texture=ac07ced61532d478
texture=b75b0aa81b91ef4e
texture=bf4c87f19404c73d
texture=c26a83dda44dc8b6
texture=d002bb380a37badf
texture=df435df4c810c026
texture=f16b6f03d9f2e288
$Level Select
handling=screen
texture=105257d41ba3e61e
texture=16b63e57c5e0243d
texture=17ae6a23b59bcca2
texture=3cf0229711b06588
texture=46e34569265f7c42
texture=4d3e0661ddb61b36
texture=59bc2ea535ba329e
texture=5e1c3f78243abc9e
texture=7250a07aa00e1945
texture=794a9f476d81b933
texture=8132f4fab5486027
texture=8fc7d5531e087f0e
texture=941522d8ecb92a3a
texture=a47578f9e9b2bf49
texture=d13c18fe0a5750c3
texture=d18624c1b46d499b
texture=df05609140aeab06
texture=ea1730eb5fcfb672
$Bianco Water
handling=skip
texture=2dbb67e72bf8db05
$60fps Stars Glitch
handling=skip
texture=2224ef94600e4349
$Behind Wall Mask
handling=screen
texture=5c94b2c6f1649dab
$Title Screen
handling=screen
texture=0d72d804518cea76
texture=12c49516720224e9
texture=279b4ad929624e26
texture=2be218765ba946e5
texture=2e27761d897de1df
texture=2fca46cc2b0490f7
texture=332159b50e854264
texture=3d4469f3f4244b44
texture=4ab33179eab62b19
texture=4b8ca4ade2f87739
texture=4c10e4d1b62542a5
texture=549930ecad1ce7e9
texture=61538f252127d0a3
texture=665023fb85f9f4f3
texture=6838167583403da0
texture=6e965c8d22068600
texture=72093b9f0baf0279
texture=85af4308ecb3ed0e
texture=8d3df377ee98a246
texture=97e935152f7829cd
texture=9fcb17a7c98a957c
texture=ba65636909cf153e
texture=bd65da845999d990
texture=c69cbfa116116e04
texture=ca2e8e7c99a658fa
texture=ce88bfceeea828f7
texture=d0cba9c0255db427
texture=e5c071c1099ac762
texture=edab4e6c89e0c0d9
texture=f14f900999f6b99d
texture=f4101eefd907a066
$File Select
handling=screen
texture=111712b37213dc89
texture=2bcba8ce6e1fee64
texture=6105f7f114ae84e7
texture=64cee6c1e447fbf5
texture=76b33b6f37ae8f08
texture=943d2098e5ffb086
texture=999fa683890afc1f
texture=9bee06d8439a0efe
texture=9c61a1bda7d4df9f
texture=b760aadb1bf764e0
texture=b94d3c8dca426fb1
texture=bfd444847a23c61e
texture=ce5aff1cbf2eba90
texture=db199ec86a691416
texture=de4a444d21adeed6
texture=df56f15d71e7931b
texture=e1cd20bd2d00f48e
texture=e7663bdd3c3cb815
texture=e97372586eae7429
$Option Menu
handling=screen
texture=1938181691fd5852
texture=1a782ff042c4b249
texture=37c9486b56315198
texture=37f4664824187eff
texture=3d2c9e30df1aaea7
texture=42a9b940b954a929
texture=50a451179c363bbb
texture=575fdba3a0f96cd6
texture=59e73f976091c40e
texture=654be1348658e4d1
texture=73f81d1173f84f5f
texture=881db0dbdb0fa6fb
texture=8b53dbe78fd9fa38
texture=8e4db6f51d2d8111
texture=ac03be30836f9c0a
texture=bfd444847a23c61e
texture=d050b33048b1b9d8
texture=d265f4c2fef089fd
texture=e98ce39a636fbb6d
texture=ee4d085b52d705a9
texture=fd17a9dba897c0de
$Intro
handling=screen
texture=071adce31d1747d7
texture=36ca6146c24274b5
texture=9972628edb9c9d47
texture=a3d41495fb684298
$Pianta Village Water
handling=skip
texture=71d5a751cde6f897
+9 -36
View File
@@ -1,38 +1,11 @@
[ElementsGroupOverride_Enable]
[ElementsGroupOverride]
[ShaderOverride_Enable]
[ShaderOverride]
$HUD Small Square
Hash=00000000f1389fad
Type=PS
match_mode=exact_hash
handling=skip
texture_mode=include
texture=be8114e36b01a3c1
$HUD Small Square 2
Hash=00000000051c200c
Type=PS
match_mode=shader_family
handling=skip
hash_family=1
family_signature=72991ea47245d747
texture_mode=include
texture=be8114e36b01a3c1
[TextureElementOverride_Enable]
$Ninja Face
[TextureElementOverride]
handling = camera_anchor
anchor_hide = 1
anchor_upm = 1
texture = b2b0a10fc32706a3
[Graphics.VR]
UnitsPerMeter = 4.00
EnableOpenXR = True
OrthoScissorFix = True
VirtualScreen = True
[HideObjectCodes_Enabled]
$Cinematic Bar Down
$Cinematic Bar Up
[HideObjectCodes]
$Cinematic Bar Down
Type=128bits
Upper=0xFF95019000030000
Lower=0x00000000000002EB
$Cinematic Bar Up
Type=128bits
Upper=0xFF95FFD000030000
Lower=0x00000000000002EB
+5
View File
@@ -0,0 +1,5 @@
[Graphics.VR]
AutoNativeEfbEffects = True
ExactScreenDepth = True
SmallViewportsOnScreen = False
VirtualScreen = True
+109 -12
View File
@@ -1,17 +1,12 @@
[ShaderOverride_Enable]
[ShaderOverride]
$Motion Blur
Hash=0000000032dabdfb
Type=PS
match_mode=exact_hash
handling=skip
[ElementsGroupOverride_Enable]
$Motion Blur
$Motion Blur new
$HUD
$Hit Points
[ElementsGroupOverride]
$Motion Blur
format=element_only_v5
format=element_only_v6
handling=skip
comments= Looks like a drunk filter
comments=Looks like a drunk filter
credits=iChris4
sig_perspective=0
sig_persp_hfov=0
@@ -23,6 +18,7 @@ sig_ortho_right=64
sig_ortho_top=0
sig_ortho_bottom=48
sig_use_projection=0
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
@@ -42,5 +38,106 @@ sig_zupdate=0
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
[Graphics.VR]
UnitsPerMeter = 100.00
$Motion Blur new
format=element_only_v6
handling=skip
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=660
sig_vp_y=580
sig_vp_w=320
sig_vp_h=240
sig_sc_l=340
sig_sc_t=340
sig_sc_r=979
sig_sc_b=819
sig_alpha=000eff00
sig_ztest=0
sig_zupdate=0
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
$HUD
format=element_only_v6
handling=screen
sig_perspective=1
sig_persp_hfov=3932
sig_persp_vfov=3000
sig_persp_near=1000
sig_persp_far=500000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=660
sig_vp_y=580
sig_vp_w=320
sig_vp_h=240
sig_sc_l=340
sig_sc_t=340
sig_sc_r=979
sig_sc_b=818
sig_alpha=007f0000
sig_ztest=0
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
$Hit Points
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=660
sig_vp_y=580
sig_vp_w=320
sig_vp_h=240
sig_sc_l=340
sig_sc_t=340
sig_sc_r=979
sig_sc_b=819
sig_alpha=007f0000
sig_ztest=0
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
+109
View File
@@ -0,0 +1,109 @@
[Graphics.VR]
UnitsPerMeter = 5.00
[ElementsGroupOverride_Enable]
$HUD
$Life bar
$Life bar color
[ElementsGroupOverride]
$HUD
format=element_only_v5
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=44800
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=566
sig_vp_w=320
sig_vp_h=224
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=789
sig_alpha=007f0000
sig_ztest=0
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=0
$Life bar
format=element_only_v5
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=10000
sig_ortho_top=0
sig_ortho_bottom=10000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=663
sig_vp_y=567
sig_vp_w=320
sig_vp_h=224
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=789
sig_alpha=00450000
sig_ztest=0
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=0
$Life bar color
format=element_only_v5
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=10000
sig_ortho_top=0
sig_ortho_bottom=10000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=663
sig_vp_y=567
sig_vp_w=320
sig_vp_h=224
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=789
sig_alpha=007f0000
sig_ztest=0
sig_zupdate=0
sig_zfunc=7
sig_blend_color=0
sig_blend_alpha=1
+542
View File
@@ -0,0 +1,542 @@
[HideObjectCodes_Enabled]
[HideObjectCodes]
$Remove Mini Map 1
Type=128bits
Upper=0x3C00800500FFF800
Lower=0x000000000000003C
$Remove Mini Map 2
Type=128bits
Upper=0x3C00C80550FFF800
Lower=0x000000000000003C
$Remove Mini Map 3
Type=128bits
Upper=0x3C00B40550FFF800
Lower=0x000000000000003C
$Remove Mini Map 4
Type=128bits
Upper=0x3C00C8053CFFF800
Lower=0x000000000000003C
$Remove Mini Map 5
Type=128bits
Upper=0x3C00C806E0FFF800
Lower=0x0000003F8000003C
$Remove Mini Map 6
Type=128bits
Upper=0x3C02A80550FFF83F
Lower=0x800000000000003C
$Remove Mini Map 7
Type=128bits
Upper=0x3C00B406E0FFF800
Lower=0x0000003F8000003C
$Remove Mini Map 8
Type=128bits
Upper=0x3C02A8053CFFF83F
Lower=0x800000000000003C
$Remove Mini Map 9
Type=128bits
Upper=0x3C02A806E0FFF83F
Lower=0x8000003F8000003C
$Remove Mini Map 10
Type=128bits
Upper=0x3C00B4053CFFF800
Lower=0x000000000000003C
$Element Hide 5 Draws
Type=128bits
Upper=0xBF800000BF800000
Lower=0xC0000000BF800000
Type=128bits
Upper=0xBF5DDDDEBF800000
Lower=0xC0000000BF5DDDDE
Type=128bits
Upper=0xBF3BBBBCBF800000
Lower=0xC0000000BF3BBBBC
Type=128bits
Upper=0xBF19999ABF800000
Lower=0xC0000000BF19999A
Type=128bits
Upper=0xBEEEEEEEBF800000
Lower=0xC0000000BEEEEEEE
Type=128bits
Upper=0xBEAAAAAABF800000
Lower=0xC0000000BEAAAAAA
Type=128bits
Upper=0xBE4CCCCCBF800000
Lower=0xC0000000BE4CCCCC
Type=128bits
Upper=0xBD888888BF800000
Lower=0xC0000000BD888888
Type=128bits
Upper=0x3D888890BF800000
Lower=0xC00000003D888890
Type=128bits
Upper=0x3E4CCCD0BF800000
Lower=0xC00000003E4CCCD0
Type=128bits
Upper=0x3EAAAAACBF800000
Lower=0xC00000003EAAAAAC
Type=128bits
Upper=0x3EEEEEF0BF800000
Lower=0xC00000003EEEEEF0
Type=128bits
Upper=0x3F19999ABF800000
Lower=0xC00000003F19999A
Type=128bits
Upper=0x3F3BBBBCBF800000
Lower=0xC00000003F3BBBBC
Type=128bits
Upper=0x3F5DDDDEBF800000
Lower=0xC00000003F5DDDDE
Type=128bits
Upper=0x3F800000BF800000
Lower=0xC00000003F800000
Type=128bits
Upper=0x0000000000000000
Lower=0x0000000000000000
$Element Hide 18 Draws
Type=128bits
Upper=0x3C013505B5FFF83B
Lower=0x0000003E1B6DB73C
Type=128bits
Upper=0x3C016D05C5FFF83E
Lower=0x9700003C1249253C
Type=128bits
Upper=0x3C01B105B5FFF83F
Lower=0x4B00003C1249253C
Type=128bits
Upper=0x3C01F505C1FFF83D
Lower=0x3800003C1249253C
Type=128bits
Upper=0x3C021D05C5FFF83E
Lower=0x5C00003C1249253C
Type=128bits
Upper=0x3C013005B0FFF83B
Lower=0x0000003E1B6DB73C
Type=128bits
Upper=0x3C016805C0FFF83E
Lower=0x9700003C1249253C
Type=128bits
Upper=0x3C01AC05B0FFF83F
Lower=0x4B00003C1249253C
Type=128bits
Upper=0x3C01F005BCFFF83D
Lower=0x3800003C1249253C
Type=128bits
Upper=0x3C021805C0FFF83E
Lower=0x5C00003C1249253C
Type=128bits
Upper=0x3C016B0609FFF83E
Lower=0xBE00003C1249253C
Type=128bits
Upper=0x3C019F0615FFF83D
Lower=0x3800003C1249253C
Type=128bits
Upper=0x3C01C7060DFFF83C
Lower=0xF000003C1249253C
Type=128bits
Upper=0x3C01E70615FFF83D
Lower=0x3800003C1249253C
Type=128bits
Upper=0x3C01660604FFF83E
Lower=0xBE00003C1249253C
Type=128bits
Upper=0x3C019A0610FFF83D
Lower=0x3800003C1249253C
Type=128bits
Upper=0x3C01C20608FFF83C
Lower=0xF000003C1249253C
Type=128bits
Upper=0x3C01E20610FFF83D
Lower=0x3800003C1249253C
$Element Hide 10 Draws
Type=128bits
Upper=0x3C00000000FFF800
Lower=0x000000000000003C
Type=128bits
Upper=0x3C00B4053CFFF800
Lower=0x000000000000003C
Type=128bits
Upper=0x3C00C8053CFFF800
Lower=0x000000000000003C
Type=128bits
Upper=0x3C00B40550FFF800
Lower=0x000000000000003C
Type=128bits
Upper=0x3C00C80550FFF800
Lower=0x000000000000003C
Type=128bits
Upper=0x3C00C806E0FFF800
Lower=0x0000003F8000003C
Type=128bits
Upper=0x3C02A80550FFF83F
Lower=0x800000000000003C
Type=128bits
Upper=0x3C02A806E0FFF83F
Lower=0x8000003F8000003C
Type=128bits
Upper=0x3C02A8053CFFF83F
Lower=0x800000000000003C
Type=128bits
Upper=0x3C00B406E0FFF800
Lower=0x0000003F8000003C
[ElementsGroupOverride_Enable]
$Water
$Inventory
$Compas
[ElementsGroupOverride]
$Subtitles Cutscenes
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=372
sig_sc_t=757
sig_sc_r=951
sig_sc_b=781
sig_alpha=003f0000
sig_ztest=0
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
$Subtitles Gameplay
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=426
sig_sc_t=757
sig_sc_r=937
sig_sc_b=781
sig_alpha=003f0000
sig_ztest=0
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
$Space Map Text
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=382
sig_sc_t=392
sig_sc_r=771
sig_sc_b=591
sig_alpha=003f0000
sig_ztest=0
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
$Space Map A & B Buttons
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=482
sig_sc_t=402
sig_sc_r=841
sig_sc_b=821
sig_alpha=003f0000
sig_ztest=0
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
$HUD new
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=003f0000
sig_ztest=0
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
$HUD Map Box
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=348
sig_sc_r=981
sig_sc_b=815
sig_alpha=003f0000
sig_ztest=0
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
$HUD Map text
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=396
sig_sc_t=682
sig_sc_r=507
sig_sc_b=781
sig_alpha=003f0000
sig_ztest=0
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
$Water
format=element_only_v6
handling=skip
sig_perspective=1
sig_persp_hfov=7518
sig_persp_vfov=6000
sig_persp_near=2500
sig_persp_far=1000000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=348
sig_sc_r=981
sig_sc_b=815
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=0
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
$Inventory
format=element_only_v6
handling=screen_pane
sig_perspective=1
sig_persp_hfov=7518
sig_persp_vfov=6000
sig_persp_near=2500
sig_persp_far=1000000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=906
sig_vp_y=537
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=003f0000
sig_ztest=0
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
$Compas
format=element_only_v6
handling=screen_pane
sig_perspective=1
sig_persp_hfov=5542
sig_persp_vfov=4300
sig_persp_near=2500
sig_persp_far=1000000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=452
sig_vp_y=732
sig_vp_w=320
sig_vp_h=240
sig_sc_l=392
sig_sc_t=682
sig_sc_r=511
sig_sc_b=781
sig_alpha=003f0000
sig_ztest=0
sig_zupdate=0
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
[Graphics.VR]
DetectRenderTargets = True
DontClearScreen = False
OrthoScissorFix = True
SmallViewportsOnScreen = True
UnitsPerMeter = 20.00
+82 -3
View File
@@ -1,6 +1,16 @@
[ElementsGroupOverride_Enable]
[ElementsGroupOverride]
[HideObjectCodes_Enabled]
$White Square
$White Square 02
$White Square 01
$White Square 03
$White Square 04
$White Square 05
$White Square 06
$White Square 07
$White Square 08
$White Square 09
$White Square 00
[HideObjectCodes]
$White Square
Type=128bits
@@ -11,10 +21,55 @@ $White Square 02
Type=128bits
Upper=0xC4273066C3CF47B3
Lower=0xBF816C75FFFFFFFF
$White Square 01
Type=128bits
Upper=0xC425E2CCC3D0C1F3
Lower=0xBF8258A2FFFFFFFF
$White Square 03
Type=128bits
Upper=0xC425B2C0C3D0F86E
Lower=0xBF827AA6FFFFFFFF
$White Square 04
Type=128bits
Upper=0xC42612BFC3D08B96
Lower=0xBF8236B0FFFFFFFF
$White Square 05
Type=128bits
Upper=0xC4264299C3D05555
Lower=0xBF8214D0FFFFFFFF
$White Square 06
Type=128bits
Upper=0xC4267259C3D01F30
Lower=0xBF81F301FFFFFFFF
$White Square 07
Type=128bits
Upper=0xC426A202C3CFE927
Lower=0xBF81D144FFFFFFFF
$White Square 08
Type=128bits
Upper=0xC426D192C3CFB339
Lower=0xBF81AF98FFFFFFFF
$White Square 09
Type=128bits
Upper=0xC4270108C3CF7D69
Lower=0xBF818DFEFFFFFFFF
$White Square 00
Type=128bits
Upper=0xC425829CC3D12F05
Lower=0xBF829CBCFFFFFFFF
[ShaderOverride_Enable]
[ShaderOverride]
[ElementsGroupOverride_Enable]
[ElementsGroupOverride]
[Graphics.VR]
UnitsPerMeter = 40.00
[TextureElementOverride_Enable]
$HUD - Speed
$Pause Menu
@@ -32,10 +87,12 @@ $Select a Memory Card
$Result Screen
$Metal Habour Sun Flair
$Chao Garden
$Ennemy Health bar
[TextureElementOverride]
$HUD - Speed
handling=screen
texture=035bb73c378b80fe
texture=0901f959759f4f66
texture=0b6b779cd79037a4
texture=169aed02ad1adf2d
texture=365386fa4af5c4fb
@@ -196,6 +253,7 @@ texture=d9683c4ce660962a
$HUD - Items
handling=screen
comments=To make things difficult, Capsules and HUD share the same texture and both use Perspective Projection.
texture=08e66a16c7ab2772
texture=501b64606b946ad7
texture=964ce6668e588a79
@@ -365,3 +423,24 @@ texture=495e8aab6940f041
texture=4ba3e88f3cdbe08f
texture=a53f409e651212c1
$Skybox Final Rush AR
handling=passthrough
passthrough_opacity=0
texture=8296bd06b185091c
texture=b7c6c9cd631a7dfc
texture=c1c5b68120cdb8e1
texture=d39290e7b1d6518d
$Ennemy Health bar
handling=screen
texture=1e63a95fae253cf4
texture=209d1911dee3f095
texture=3fb03ee04700d4cb
texture=5a9fa5fe10043584
texture=8263fa6e76895ae5
texture=9681fe19d54dc756
texture=afd6975a3d10947d
texture=b9bbf6b24d43d507
texture=f37c42a7f527f8d5
texture=f58e0ca78d84bb81
+367
View File
@@ -0,0 +1,367 @@
[HideObjectCodes_Enabled]
$White Square
$White Square 02
[HideObjectCodes]
$White Square
Type=128bits
Upper=0xC425E2CCC3D0C1F3
Lower=0xBF8258A2FFFFFFFF
$White Square 02
Type=128bits
Upper=0xC4273066C3CF47B3
Lower=0xBF816C75FFFFFFFF
[ShaderOverride_Enable]
[ShaderOverride]
[ElementsGroupOverride_Enable]
[ElementsGroupOverride]
[TextureElementOverride_Enable]
$HUD - Speed
$Pause Menu
$Stage Select
$HUD - Animals
$HUD - Mecha
$Mire
$HUD - TH
$HUD - TH - MS - Text
$Level Intro
$Kart
$Intro
$Main Menu
$Select a Memory Card
$Result Screen
$Metal Habour Sun Flair
$Chao Garden
[TextureElementOverride]
$HUD - Speed
handling=screen
texture=035bb73c378b80fe
texture=0b6b779cd79037a4
texture=169aed02ad1adf2d
texture=365386fa4af5c4fb
texture=397cf75b2bfd5618
texture=3f95af26eadc1e59
texture=5e95a94bee9b94cc
texture=65aa115aaa4da681
texture=6e6485f30204331d
texture=7eef4c7cb13545e5
texture=8b2ff0acc9131cc7
texture=8c2124304cd65f91
texture=9a3c20dce7af0f2b
texture=a80e09d105411ff9
texture=b08ebc8041d10279
texture=b222fad7a918e6db
texture=bc83c0b4b43fa988
texture=c886864ab3058f15
texture=ca36d548d8d3f106
texture=d359416dd1f0eef2
texture=fe58517853490af7
$Pause Menu
handling=screen
texture=300bd7b746f8eb25
texture=40eba6c22fe3ad5d
texture=5110c79813ce4f89
texture=5632f7df7f4b77bd
texture=5803b9df3332dd42
texture=668bb68e64c4414e
texture=a96f5a5f957aa53c
texture=cfee991052472833
texture=ea76c6397a187816
$Stage Select
handling=screen
texture=00e0126af96a10a6
texture=011d485fd5fb41f4
texture=0264d9232f1d541e
texture=06aec18dc4ffcde1
texture=0a73f052d1682163
texture=0bed9fe054c0ef1f
texture=0f54d080d28f8a1e
texture=0fa0bc2ae8c702e2
texture=13e1b0106b4b910b
texture=149b05035335bcf2
texture=15152f4facefa7ce
texture=1a1415ea212bed4b
texture=1e3eecbd408bc645
texture=1f5fa34a5d70509c
texture=200a1065e999d2e7
texture=211a56403ae65df0
texture=2bda8060f5af2d11
texture=2c3dad23357f879c
texture=2cedfa4023b6803e
texture=2dedc1e77dadbaf2
texture=31b88a44665460a2
texture=34835ace58aa1328
texture=36426c682e039b7e
texture=365d3efccfd04786
texture=3ee914307e0cfba2
texture=402daf0c844d2a87
texture=43a291b5d14f4747
texture=44346934ca407bbf
texture=475e9a0aca517999
texture=488818d1dc1bf568
texture=488da6bb5b191232
texture=4e7b29a719ebed7c
texture=4ffb1203bbe05f7f
texture=5022a8f801f1fbd4
texture=55ed86591cdcb542
texture=572cb04ad4769b59
texture=597f21380cbc37b2
texture=5e9182ba280b02ea
texture=60a75acea8d778df
texture=6801c44d1ec73bfa
texture=6a24b4acefc93db5
texture=72f8bca0e1726dc3
texture=7300b378aff68c45
texture=747cfbb5dc242db4
texture=7522a502b68b2cbc
texture=782bf7c46ebcbe94
texture=79a65326dcfbdef0
texture=7c15e72aed71595d
texture=80eed62e0b762381
texture=8118677d50616cbc
texture=81992e80ff01bffd
texture=81efb83a6f788810
texture=822e5f63526270aa
texture=8374cf50b50748f4
texture=83ea7eecfcf92791
texture=86767ff600b75a3b
texture=87a7977b7224b483
texture=8eba61dd4b7b5610
texture=924b626afe84e009
texture=95a06ce9d4982399
texture=97d2fb9e91eae90a
texture=9879d676e3799e90
texture=98c045ff0512bd11
texture=9bb4d5de5a92c936
texture=9d92f43715852d66
texture=9ef66dae9a701aba
texture=9f03cded2faa6d9d
texture=9fc0213cc88a6a04
texture=a57ccad7bdfc42b0
texture=a9d0e667a7e069ca
texture=aac639d692420b0e
texture=b097f58b1bc27fde
texture=b70b60dc908f5fda
texture=b8f66c2b85ef9edc
texture=ba58dac830646e41
texture=bac13237fee6c8c2
texture=bb9150646bf96b1f
texture=be82d3d99810f73b
texture=bfcff714bafe8a78
texture=c09aa43bafdafe23
texture=c187eb9c1e77da86
texture=cafe4998ebd68563
texture=d40817868363f48b
texture=d7ca6ec614c20cd0
texture=daf5d4164cef1e80
texture=dd75a565c18848f1
texture=def8914128846d2c
texture=e0401508db2fff64
texture=e26fb795ebf00af5
texture=e63b0e84d69e66e8
texture=e6c1aa0edd8c4987
texture=eaf16aadb8b37171
texture=ebbee0751de97116
texture=f3923d7da94782d8
texture=f4232b7f01ef1288
texture=f7cf814f0a9175ea
texture=fd3d703c92100687
texture=fe1cbcee0743e3bf
texture=ff29942713765b0c
$HUD - Animals
handling=skip
texture=006fb09061fbd506
texture=16e2fa825ca94bac
texture=1b86e055f25be8dc
texture=4932dff920a44ddc
texture=5773575471221c6a
texture=591736c8fda54c3e
texture=642f45914eb0fe0b
texture=6b3b5f14bf6353b9
texture=7820f977d5907262
texture=8114eb4372afa4cb
texture=845df0100a6692fc
texture=8a0d6e0407c4267b
texture=8c6e5f1fb5f8cbdb
texture=95b8c202853ddbb7
texture=b90dae2c2b1aa4fb
texture=bf1e3dec01468520
texture=bffe8253fd156fa9
texture=ca69f28d2f50e5b5
texture=cfe207c6aaefe0dd
texture=d9683c4ce660962a
$HUD - Items
handling=screen
texture=08e66a16c7ab2772
texture=501b64606b946ad7
texture=964ce6668e588a79
texture=d86d8ed979f2bcf3
$HUD - Mecha
handling=screen
texture=0495b39a426b4dc0
texture=3174b707a8c574be
texture=460af379cb33302d
texture=6c97723ab6215748
texture=963c218d6f65287a
texture=e6224a382c3eaa08
$Mire
handling=screen
texture=bbb87a4e992103d1
texture=da0e4acf79b69e02
$HUD - TH
handling=screen
texture=0c39d3bb654e9761
texture=1bf531828b899bff
texture=1d3c4fccd3d49f8b
texture=200313fe488ba657
texture=227b67932bd4b0e4
texture=267a0d171dcbf78f
texture=2bb50ab46a667833
texture=326d43d9bbfa24b7
texture=3a7ce7d13de5d152
texture=3cdc64a2ae462beb
texture=5d8ef103ab0562e0
texture=67b7b8001a445307
texture=6defa0873931aff6
texture=73d2a01da71414ec
texture=8f360e1a5d6e77a8
texture=9fd55c10ae9aa2ea
texture=befc446b90a9647d
texture=c9801d207bad1f7b
texture=eae2542012f67bc4
texture=f89af9b6af1ccda9
$HUD - TH - MS - Text
handling=screen
texture=1b9ffe3b921405ea
texture=35b36dea3eaf4206
texture=3e13610cf545fd50
texture=3f5f017c8bf1f10d
texture=46dbf58b44c6dad0
texture=4eeac2beee7d7433
texture=5805686bd542fdcf
texture=63c174714fa840f5
texture=6995281093de00d7
texture=6b80b4d07cbde717
texture=753514368e4bb1fb
texture=9444dca69ef0f612
texture=a110e4345434336b
texture=ac7f8c85cfa62d11
texture=ada862a2f32b8012
texture=da2b11f89cce82b4
texture=e1a588c6c969be0d
texture=e3ffaa173dea2f6c
$Level Intro
handling=screen
texture=0707c640cbf4c518
texture=2cb7e1cf33855f3f
texture=363ec56bcc455099
texture=3c1655d341bed3e1
texture=412f7d7052dd7eb7
texture=47da6e87b5e62b36
texture=53ad3d102d4d9047
texture=545cc06f68d712a9
texture=55a694a969589dcb
texture=5aecd459c6ece632
texture=5c7da40a7c7630d0
texture=5d0a429f0ec92674
texture=675a0a28063a7043
texture=7a5f7c8dd0b471eb
texture=8434885b980fd0b0
texture=8b75fcfa8d1ff40d
texture=978f2b3d8487bd10
texture=a94c5c7a7e7db4ab
texture=ad8c2c51fd6e69b2
texture=b31d3646aaa95af3
texture=c5b8d600fd138269
texture=c834449a772f0469
texture=cfa03b9babf58db1
texture=dd7d772a5bd31f7e
texture=e55273825ed22d38
texture=e6224a382c3eaa08
texture=e7b94fac2f45e4a8
texture=f076324250aa0388
$Kart
handling=screen
texture=053c8a3c3fadd4d7
texture=2584f2f93a3159dd
$Intro
handling=screen
texture=059ff4603b07ddf8
texture=30eba242b976ef08
texture=40978ba7f803486e
texture=c3c29ade6e29d5a4
texture=d8300b881c49fa85
texture=e7fdbaa3614bcd44
texture=ec34eff2d1aa01fa
$Main Menu
handling=screen
texture=0f35116c80fa97d5
texture=11f8e8563827c5df
texture=1e80e5550620f216
texture=2eb80f37b4e02b61
texture=44cea5eaabf42269
texture=4c21a029024a8347
texture=67f6b13c0b360ab4
texture=6ef56e47270f08ba
texture=d4134d6d0b55c09e
texture=dac3584e20ba17cb
texture=e64e1a5cdc2413de
texture=e6e5860629398a6e
texture=f2303f77938fb1ca
texture=f55930ddc2a6dec2
$Select a Memory Card
handling=screen
texture=00b6cf8ca3f40cc6
texture=2dedc1e77dadbaf2
texture=2e99146f397b65c3
texture=352e9415cc6a37d7
texture=365d3efccfd04786
texture=383144355d5e1f7b
texture=49cad8412aa5e473
texture=7df94b6beae6ff1a
texture=be8434353a39206e
texture=deaacc5a5ec4b77b
texture=dec416952603f40f
texture=e42bae89adaa2fae
texture=e790647ebd9de024
$Result Screen
handling=screen
texture=04e625c8d5585506
texture=6a6f10d55eeb6a10
texture=a1ef28664f2cb9e8
$Metal Habour Sun Flair
handling=units_per_meter
units_per_meter=0.01
texture=3df32461831e7bd6
texture=4db0aaf533a042ab
texture=67dd24c29b471df9
texture=71466731c75efcbf
texture=a69b410a516ce43d
texture=b454d8dc637305ca
texture=c3eecb915da4afa1
$Chao Garden
handling=screen
texture=15e474f5fc8fba34
texture=2d438e4e8053392d
texture=2dc26edb48217e94
texture=463693688440db13
texture=495e8aab6940f041
texture=4ba3e88f3cdbe08f
texture=a53f409e651212c1
+144
View File
@@ -0,0 +1,144 @@
[Graphics.VR]
VirtualScreen = False
[ElementsGroupOverride_Enable]
$Minimap
$Ship wireframe
$Visor
$HUD
[ElementsGroupOverride]
$Minimap
format=element_only_v6
handling=screen
sig_perspective=1
sig_persp_hfov=11600
sig_persp_vfov=10040
sig_persp_near=1000
sig_persp_far=100000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=660
sig_vp_y=580
sig_vp_w=320
sig_vp_h=240
sig_sc_l=340
sig_sc_t=356
sig_sc_r=979
sig_sc_b=805
sig_alpha=003f0000
sig_ztest=0
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=0
$Ship wireframe
format=element_only_v6
handling=screen
sig_perspective=1
sig_persp_hfov=11563
sig_persp_vfov=10000
sig_persp_near=1000
sig_persp_far=10000000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=660
sig_vp_y=580
sig_vp_w=320
sig_vp_h=240
sig_sc_l=340
sig_sc_t=356
sig_sc_r=979
sig_sc_b=805
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=0
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=0
$Visor
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=-100
sig_ortho_right=100
sig_ortho_top=100
sig_ortho_bottom=-100
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=660
sig_vp_y=580
sig_vp_w=320
sig_vp_h=240
sig_sc_l=340
sig_sc_t=356
sig_sc_r=979
sig_sc_b=805
sig_alpha=003f0000
sig_ztest=0
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=0
$HUD
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=660
sig_vp_y=580
sig_vp_w=320
sig_vp_h=240
sig_sc_l=340
sig_sc_t=356
sig_sc_r=979
sig_sc_b=805
sig_alpha=003f0000
sig_ztest=0
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=0
+119 -6
View File
@@ -1,9 +1,66 @@
[ShaderOverride_Enable]
[ShaderOverride]
[TextureElementOverride_Enable]
$Intro Logo
$Main Menu
$Select a level
$Loading
$HUD
$Text
$Pause Menu
[TextureElementOverride]
$Intro Logo
handling=screen
texture=6226ba2ac1d15558
texture=6712a5ff3e69c91a
texture=be2006d9345ae529
$Main Menu
handling=screen
texture=143a9a3691ec2fe3
texture=580a55bac9e48450
texture=62f51ff1e1bb0c01
texture=84724037de4ae3df
texture=d12d44827443b185
$Select a level
handling=screen
texture=1f8073e98a2364c3
texture=49a8c44f197eeeac
texture=73962f92710e9e9e
texture=8435a3940c003445
texture=c1a8be3ee037dd86
texture=d35071dfd82af4f7
$Loading
handling=screen
texture=521a24fbce243442
texture=62f51ff1e1bb0c01
texture=7b083d30575cad4c
texture=dd8ee3fcada1d477
$HUD
handling=screen
texture=09d976ea25d1c1c0
texture=1b15674d61c05ba0
texture=419463745aa5965d
texture=8f45dd68096d4665
texture=924376c246b3c129
texture=cc9e9b4f27f7130b
texture=f044169b53dba310
$Text
handling=screen
texture=a6f9e58ce8b15a75
texture=cc80552cae3417e6
$Pause Menu
handling=screen
texture=1b214a192871a592
texture=fb31bc5c96de28fd
[ElementsGroupOverride_Enable]
$Health Bars
[ElementsGroupOverride]
$HUD
format=element_only_v5
format=element_only_v6
handling=screen
selected_match_mode=include
sig_perspective=0
@@ -16,6 +73,7 @@ sig_ortho_right=64
sig_ortho_top=0
sig_ortho_bottom=48
sig_use_projection=0
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
@@ -35,65 +93,79 @@ sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
selected_match_0_family_version=1
selected_match_0_vs_family=00000000198dabb4
selected_match_0_ps_family=a89c4ca6fc8e5876
selected_match_0_gs_family=000000002b78268c
selected_match_0_texture=09d976ea25d1c1c0
selected_match_1_family_version=1
selected_match_1_vs_family=00000000198dabb4
selected_match_1_ps_family=a89c4ca6fc8e5876
selected_match_1_gs_family=000000002b78268c
selected_match_1_texture=1b15674d61c05ba0
selected_match_2_family_version=1
selected_match_2_vs_family=000000002b3a6cc8
selected_match_2_ps_family=0d577e9bbc49f1ab
selected_match_2_gs_family=000000007b617113
selected_match_2_texture=1b15674d61c05ba0
selected_match_3_family_version=1
selected_match_3_vs_family=000000002b3a6cc8
selected_match_3_ps_family=0d577e9bbc49f1ab
selected_match_3_gs_family=000000007b617113
selected_match_3_texture=8f45dd68096d4665
selected_match_4_family_version=1
selected_match_4_vs_family=00000000198dabb4
selected_match_4_ps_family=a89c4ca6fc8e5876
selected_match_4_gs_family=000000002b78268c
selected_match_4_texture=cc9e9b4f27f7130b
selected_match_5_family_version=1
selected_match_5_vs_family=000000002b3a6cc8
selected_match_5_ps_family=0d577e9bbc49f1ab
selected_match_5_gs_family=000000007b617113
selected_match_5_texture=cc9e9b4f27f7130b
selected_match_6_family_version=1
selected_match_6_vs_family=00000000198dabb4
selected_match_6_ps_family=a89c4ca6fc8e5876
selected_match_6_gs_family=000000002b78268c
selected_match_6_texture=419463745aa5965d
selected_match_7_family_version=1
selected_match_7_vs_family=00000000198dabb4
selected_match_7_ps_family=a89c4ca6fc8e5876
selected_match_7_gs_family=000000002b78268c
selected_match_7_texture=fb31bc5c96de28fd
selected_match_8_family_version=1
selected_match_8_vs_family=000000002b3a6cc8
selected_match_8_ps_family=0d577e9bbc49f1ab
selected_match_8_gs_family=000000007b617113
selected_match_8_texture=fb31bc5c96de28fd
selected_match_9_family_version=1
selected_match_9_vs_family=00000000198dabb4
selected_match_9_ps_family=a89c4ca6fc8e5876
selected_match_9_gs_family=000000002b78268c
selected_match_9_texture=1b214a192871a592
selected_match_10_family_version=1
selected_match_10_vs_family=000000002b3a6cc8
selected_match_10_ps_family=0d577e9bbc49f1ab
selected_match_10_gs_family=000000007b617113
selected_match_10_texture=419463745aa5965d
selected_match_11_family_version=1
selected_match_11_vs_family=00000000198dabb4
selected_match_11_ps_family=a89c4ca6fc8e5876
selected_match_11_gs_family=000000002b78268c
selected_match_11_texture=924376c246b3c129
selected_match_12_family_version=1
selected_match_12_vs_family=00000000198dabb4
selected_match_12_ps_family=a89c4ca6fc8e5876
selected_match_12_gs_family=000000002b78268c
selected_match_12_texture=8f45dd68096d4665
selected_match_13_family_version=1
selected_match_13_vs_family=00000000198dabb4
selected_match_13_ps_family=9d787892a4e9865b
selected_match_13_gs_family=000000002b78268c
selected_match_13_texture=cc80552cae3417e6
$EFB
format=element_only_v5
format=element_only_v6
handling=skip
selected_match_mode=include
sig_perspective=0
@@ -106,6 +178,7 @@ sig_ortho_right=64
sig_ortho_top=0
sig_ortho_bottom=48
sig_use_projection=0
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
@@ -125,10 +198,50 @@ sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
selected_match_0_family_version=1
selected_match_0_vs_family=00000000198dabb4
selected_match_0_ps_family=a89c4ca6fc8e5876
selected_match_0_gs_family=000000002b78268c
selected_match_0_texture=5983dda9f15715a4
$Health Bars
format=element_only_v6
handling=screen
selected_match_mode=include
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
selected_match_0_family_version=2
selected_match_0_vs_family=f4ea2995f595d421
selected_match_0_ps_family=0d577e9bbc49f1ab
selected_match_0_gs_family=9a691400c548baae
selected_match_0_texture=000000002caf2903
[Graphics.VR]
UnitsPerMeter = 30.00
VirtualScreen = False
DontClearScreen = False
+154 -145
View File
@@ -1,150 +1,5 @@
[Graphics.VR]
UnitsPerMeter = 30.00
OpcodeReplay = 0
ForcedVBIFrequency = 120
[TextureElementOverride_Enable]
[TextureElementOverride]
$Main Menu
handling=screen
texture=143a9a3691ec2fe3
texture=1f8073e98a2364c3
texture=49a8c44f197eeeac
texture=634aefd8d516c9bf
texture=6d76110de4a56138
texture=73962f92710e9e9e
texture=8f5047e58bff1b21
texture=afa640b26de7fdf0
texture=bab511d7e23412d7
texture=be2006d9345ae529
texture=febe2674c632a66e
$Pause
handling=screen
texture=1b214a192871a592
texture=fb31bc5c96de28fd
$HUD
handling=screen
texture=09d976ea25d1c1c0
texture=419463745aa5965d
texture=8f45dd68096d4665
texture=8f5047e58bff1b21
texture=928c2332561eeb1b
texture=c200a7ab6180b62e
texture=cc9e9b4f27f7130b
texture=f044169b53dba310
$HUD2
handling=screen
texture=1b15674d61c05ba0
[ShaderOverride_Enable]
[ShaderOverride]
[ElementsGroupOverride_Enable]
$HUD
$EFB
$HUD Text
[ElementsGroupOverride]
$HUD
format=element_only_v5
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=-8000
sig_ortho_right=56000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
$EFB
format=element_only_v5
handling=skip
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
$HUD Text
format=element_only_v5
handling=screen
sig_perspective=1
sig_persp_hfov=8268
sig_persp_vfov=5313
sig_persp_near=1000
sig_persp_far=3000000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
[HideObjectCodes_Enabled]
[HideObjectCodes]
$EFB Fullscreen Effects
@@ -268,4 +123,158 @@ Lower=0x00000000FFFFFFFF
Type=128bits
Upper=0x000000003FC00000
Lower=0x00000000FFFFFFFF
[TextureElementOverride_Enable]
$Main Menu
$Pause
$HUD
$Intro
[TextureElementOverride]
$Main Menu
handling=screen
texture=143a9a3691ec2fe3
texture=1f8073e98a2364c3
texture=49a8c44f197eeeac
texture=634aefd8d516c9bf
texture=6d76110de4a56138
texture=73962f92710e9e9e
texture=8f5047e58bff1b21
texture=afa640b26de7fdf0
texture=bab511d7e23412d7
texture=be2006d9345ae529
texture=febe2674c632a66e
$Pause
handling=screen
texture=1b214a192871a592
texture=fb31bc5c96de28fd
$HUD
handling=screen
texture=09d976ea25d1c1c0
texture=419463745aa5965d
texture=8f45dd68096d4665
texture=8f5047e58bff1b21
texture=928c2332561eeb1b
texture=c200a7ab6180b62e
texture=cc9e9b4f27f7130b
texture=f044169b53dba310
$HUD2
handling=screen
texture=1b15674d61c05ba0
$Intro
handling=screen
texture=bab511d7e23412d7
texture=be2006d9345ae529
texture=febe2674c632a66e
[ElementsGroupOverride_Enable]
$HUD
$EFB
$HUD Text
[ElementsGroupOverride]
$HUD
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=-8000
sig_ortho_right=56000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
$EFB
format=element_only_v6
handling=skip
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
$HUD Text
format=element_only_v6
handling=screen
sig_perspective=1
sig_persp_hfov=8268
sig_persp_vfov=5313
sig_persp_near=1000
sig_persp_far=3000000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
[Graphics.VR]
DontClearScreen = False
ForcedVBIFrequency = 90
UnitsPerMeter = 30.00
+26 -27
View File
@@ -1,10 +1,7 @@
[ElementsGroupOverride_Enable]
$fmv
$Minimap
$EFB Motion Blur
[ElementsGroupOverride]
$fmv
format=element_only_v5
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
@@ -38,7 +35,7 @@ sig_blend_color=1
sig_blend_alpha=1
$Minimap
format=element_only_v5
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
@@ -72,7 +69,7 @@ sig_blend_color=1
sig_blend_alpha=1
$EFB Motion Blur
format=element_only_v5
format=element_only_v6
handling=skip
sig_perspective=0
sig_persp_hfov=0
@@ -104,22 +101,29 @@ sig_zupdate=0
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
[Graphics.VR]
AutoNativeEfbEffects = True
DetectRenderTargets = False
ExactScreenDepth = True
SmallViewportsOnScreen = False
UnitsPerMeter = 2.998006
VirtualScreen = True
[TextureElementOverride_Enable]
$Warning Screen
$Texture Override 2
$Texture Override
$Map
$Hilight effect locker
$Annoying Circle of dots
[TextureElementOverride]
$Warning Screen
handling=screen
texture=654ebd6875a8963b
texture=c21158de2312c991
$Annoying Circle of dots
handling=skip
texture=af146b1164b509e4
$Texture Override 2
$Hilight effect locker
handling=screen
texture=8755670da0334bf9
texture=df723848c5663568
$Map
handling=screen
texture=13708b609f1294d5
texture=28b9f90d5150572b
texture=35f9d709f72ae949
$Texture Override
handling=screen
@@ -128,17 +132,12 @@ texture=472f09edac31b620
texture=62d42ba32fc47c0c
texture=deee39b18006b496
$Map
$Texture Override 2
handling=screen
texture=13708b609f1294d5
texture=28b9f90d5150572b
texture=35f9d709f72ae949
texture=8755670da0334bf9
$Hilight effect locker
$Warning Screen
handling=screen
texture=df723848c5663568
$Annoying Circle of dots
handling=skip
texture=af146b1164b509e4
texture=654ebd6875a8963b
texture=c21158de2312c991
+143
View File
@@ -0,0 +1,143 @@
[ElementsGroupOverride_Enable]
$Pause
$HUD
$FMV
$Button Prompt
[ElementsGroupOverride]
$Pause
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=566
sig_vp_w=320
sig_vp_h=224
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=789
sig_alpha=007f0000
sig_ztest=0
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
$HUD
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=566
sig_vp_w=320
sig_vp_h=224
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=789
sig_alpha=007f0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
$FMV
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=566
sig_vp_w=320
sig_vp_h=168
sig_sc_l=342
sig_sc_t=398
sig_sc_r=981
sig_sc_b=733
sig_alpha=00440000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
$Button Prompt
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=566
sig_vp_w=320
sig_vp_h=168
sig_sc_l=342
sig_sc_t=398
sig_sc_r=981
sig_sc_b=733
sig_alpha=007f0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
[Graphics.VR]
UnitsPerMeter = 20.00
+70 -6
View File
@@ -1,7 +1,71 @@
[ShaderOverride_Enable]
[ShaderOverride]
$FMV
+Hash=00000000884db77c
+Type=VS
+handling=screen
[TextureElementOverride_Enable]
$Blur
[TextureElementOverride]
$Intro
handling=screen
texture=090cc006900c59d5
texture=09f27e01a5791125
texture=251b6f1cf8c34887
texture=3d6e585c6325a3c3
texture=5fad17344111e760
texture=9159f1a2280d0bcd
texture=99f793943e299209
texture=bcbaa36c9296931c
texture=daee6caf6a5c145f
texture=eaf76fd62c8fed44
$Memory Card
handling=screen
texture=45189e6458d8ae97
texture=616fe6f3bce3540e
texture=9b90e885fb416f2e
texture=a80e051208584cf7
texture=be3eb62522e980b0
texture=bfd10fb02856aa95
$Blur
handling=skip
texture=d79c0e35a60f2740
[ElementsGroupOverride_Enable]
[ElementsGroupOverride]
$Motion Blur
format=element_only_v6
handling=skip
selected_match_mode=include
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=-32000
sig_ortho_right=32000
sig_ortho_top=24000
sig_ortho_bottom=-24000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=003c0000
sig_ztest=0
sig_zupdate=0
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=0
selected_match_0_family_version=2
selected_match_0_vs_family=34bcb31e998fe927
selected_match_0_ps_family=fecf8123ae5a4ca2
selected_match_0_gs_family=9a65ac00c545d41f
selected_match_0_texture=b35789a9055f4bff
selected_match_0_texture=d79c0e35a60f2740
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+2 -28
View File
@@ -1,5 +1,3 @@
[Graphics.VR]
UnitsPerMeter = 200.00
[ElementsGroupOverride_Enable]
$Save Select
$HUD
@@ -205,29 +203,5 @@ sig_zupdate=0
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
[ShaderOverride_Enable]
[ShaderOverride]
$EFB01
Hash=000000007b36df8b
Type=VS
match_mode=exact_hash
handling=skip
$EFB02
Hash=000000005bf8cd62
Type=VS
match_mode=exact_hash
handling=skip
$EFB03
Hash=0000000074f6b7f4
Type=VS
match_mode=exact_hash
handling=skip
$Unnamed Shader 1
Hash=000000008d0242c8
Type=PS
match_mode=exact_hash
handling=skip
[HideObjectCodes_Enabled]
[HideObjectCodes]
+71
View File
@@ -0,0 +1,71 @@
[ElementsGroupOverride_Enable]
$Grey Filter
$Black Bars
[ElementsGroupOverride]
$Grey Filter
format=element_only_v5
handling=skip
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=31
sig_ortho_top=0
sig_ortho_bottom=23
sig_use_projection=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=003f0000
sig_ztest=0
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
$Black Bars
format=element_only_v5
handling=skip
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=31,900
sig_ortho_top=0
sig_ortho_bottom=23,900
sig_use_projection=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=003f0000
sig_ztest=0
sig_zupdate=0
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
[Graphics.VR]
UnitsPerMeter = 500.00
+71 -246
View File
@@ -1,248 +1,73 @@
[Graphics.VR]
UnitsPerMeter = 2.0
[ShaderOverride_Enable]
[ShaderOverride]
$EFB 01
Hash=0000000097d12539
Type=VS
handling=skip
hash_family=1
family_signature=0000000097d12539
$Planete Atmosphere
Hash=00000000c5c08aa5
Type=PS
handling=units_per_meter
units_per_meter=0.01
$Space
Hash=000000008d9f07a3
Type=PS
handling=units_per_meter
units_per_meter=0.01
texture_mode=include
texture=528f41b25f15a001
texture=5f3b19e4d4c471dc
$Planete
Hash=00000000ec1bd8b6
Type=PS
handling=units_per_meter
units_per_meter=0.01
$Morph Ball Transition EFB 1
Hash=00000000c5f8cf72
Type=PS
handling=skip
$Unnamed Shader 1
Hash=0000000047e2e4c8
Type=PS
handling=skip
$Unnamed Shader 2
Hash=00000000bf3ff898
Type=PS
handling=skip
$Unnamed Shader 3
Hash=0000000013f4fcd2
Type=PS
handling=skip
$HUD Visor Icon
Hash=0000000031edab72
Type=PS
handling=headlocked
texture_mode=include
texture=47382578f2df4238
texture=c325dd2e81b76450
$HUD Bars
Hash=00000000486f9c44
Type=PS
handling=headlocked
texture_mode=include
texture=3eb8381879cf96e1
texture=de81ade3d6923bae
texture=e2afa23ca21dcd09
$HUD Borders Lights
Hash=000000005467ff27
Type=PS
handling=headlocked
texture_mode=include
texture=3eb8381879cf96e1
texture=4659c82198269108
$HUD Visor Indicator
Hash=000000006bcd9515
Type=PS
handling=screen
texture_mode=include
texture=3eb8381879cf96e1
texture=847479ca4ca13986
texture=e2afa23ca21dcd09
$HUD 01
Hash=000000009cd2d360
Type=PS
handling=headlocked
texture_mode=include
texture=3eb8381879cf96e1
texture=49679a7ccbbbdefb
texture=509723fa4ca15c07
texture=7cd48b7c7d1eabe1
texture=a63ebdc372c2c2b0
texture=b6101c40f90e35b8
texture=b9b77bed5f7fe2d2
texture=c0a6e20f68761b39
texture=cd73483a21a0393e
texture=e1bfa9d78b45f982
texture=e23d5bfa878b3822
texture=e378bac5ef1d4edc
texture=e433bfd213466a50
texture=e4907f1ef76b811b
texture=ecd7866aed633019
texture=f394c71d898aa628
texture=f6415ff79092ca08
texture=f6f85f3048de0489
$HUD Text
Hash=00000000a238512d
Type=PS
handling=headlocked
texture_mode=include
texture=5d731b783a1f75a4
texture=8a7b20be8ca8cf79
texture=91627895056f2669
$HUD 02
Hash=00000000e677acc3
Type=PS
handling=headlocked
texture_mode=include
texture=847479ca4ca13986
texture=a63ebdc372c2c2b0
texture=e433bfd213466a50
$HUD Minimap
Hash=000000002866acba
Type=PS
handling=headlocked
texture_mode=include
texture=3eb8381879cf96e1
texture=847479ca4ca13986
texture=e2afa23ca21dcd09
$Unnamed Shader 4
Hash=000000006f06112e
Type=PS
handling=skip
$Hotkey PS 15c126c4
Hash=0000000015c126c4
Type=PS
handling=skip
$Hotkey PS 132e8e6f
Hash=00000000132e8e6f
Type=PS
handling=skip
$Hotkey PS 7ff45305
Hash=000000007ff45305
Type=PS
handling=skip
$Scanner Overlay
Hash=000000000d8e89c2
Type=PS
handling=screen
$HUD Energy Text
Hash=0000000011d43845
Type=VS
handling=headlocked
texture_mode=include
texture=5d731b783a1f75a4
texture=91627895056f2669
texture=e3cfb7a4cb2e46bc
$HUD Small Lights
Hash=00000000e270bbdb
Type=VS
handling=headlocked
texture_mode=include
texture=f6f85f3048de0489
$Radar Dots
Hash=000000001cb03fd3
Type=PS
handling=headlocked
$Morph Ball EFB
Hash=00000000f69bd91e
Type=VS
handling=skip
$EFB EFFECT
Hash=0000000095979b60
Type=VS
handling=skip
$Hotkey VS 37889dfc
Hash=0000000037889dfc
Type=VS
handling=skip
condition=Scanner
condition_mode=activate
texture_mode=exclude
texture=40a6c697a216cd45
texture=43758082fb69453b
texture=4659c82198269108
texture=4f212cf0e3017ed8
texture=509723fa4ca15c07
texture=659d52e07839443d
texture=74737b6e425b2753
texture=7cd48b7c7d1eabe1
texture=84357180359b5c91
texture=96279794b79efbbd
texture=a63ebdc372c2c2b0
texture=aa08c274288a4fd6
texture=b04ce8b0a5109788
texture=b2f411682a7de4a5
texture=b6101c40f90e35b8
texture=b9fc67cccfab4dcf
texture=ba98829618fb8753
texture=be036a6bd3610c09
texture=c0a6e20f68761b39
texture=cd73483a21a0393e
texture=e1bfa9d78b45f982
texture=e23d5bfa878b3822
texture=e378bac5ef1d4edc
texture=e4907f1ef76b811b
texture=e86108662ce1e1d0
texture=e8f3888a8db51c51
texture=ecd7866aed633019
texture=f394c71d898aa628
texture=f6f85f3048de0489
texture=fa99db57356c36da
[ElementsGroupOverride]
format = element_only_v6
handling = controller_anchor
sig_perspective = 1
sig_persp_hfov = 8564
sig_persp_vfov = 5500
sig_persp_near = 200
sig_persp_far = 75000
sig_ortho_left = 0
sig_ortho_right = 0
sig_ortho_top = 0
sig_ortho_bottom = 0
sig_use_projection = 1
sig_use_projection_type = 0
sig_use_layer = 0
sig_use_viewport = 0
sig_use_scissor = 0
sig_use_render_state = 1
sig_layer = 0
sig_vp_x = 662
sig_vp_y = 566
sig_vp_w = 320
sig_vp_h = 224
sig_sc_l = 342
sig_sc_t = 342
sig_sc_r = 981
sig_sc_b = 789
sig_alpha = 007f0000
sig_ztest = 1
sig_zupdate = 1
sig_zfunc = 3
sig_blend_color = 1
sig_blend_alpha = 1
texture_mode = include
texture = 9fa941b46459adc5
anchor_hand = right
anchor_rotation = full
anchor_pitch = -90
[TextureElementOverride_Enable]
$Arm Cannon
[TextureElementOverride]
$Scanner
Hash=00000000e1202485
Type=VS
handling=screen
flag=Scanner
$Hotkey VS e270bbdb
Hash=00000000e270bbdb
Type=VS
handling=screen
condition=Scanner
condition_mode=activate
texture_mode=exclude
texture=91627895056f2669
texture=96279794b79efbbd
texture=a63ebdc372c2c2b0
handling=headlocked
texture=08e82e47d1725332
$Arm Cannon
handling=controller_anchor
anchor_hand=right
anchor_rotation=full
anchor_pitch=-90
texture=1789add6ac081b19
texture=201a77eb59cfa6ec
texture=3c6ded49d64d30f2
texture=4f80b529b06db3fa
texture=684b623f651c5942
texture=702d953c2f22b5c6
texture=74b69a5b06b07925
texture=8d6f00b5d395f22f
texture=9fa941b46459adc5
texture=bd189f9434910a83
texture=bec6d78ea7dd739e
texture=c11caa5c7c794d84
texture=ca5af9af518b322d
[Graphics.VR]
AutoNativeEfbEffects = False
DetectSkybox = True
EnableCameraAnchor = True
EnableControllerAnchor = True
ExactScreenDepth = True
MetroidThermalVisorFix = True
OrthoScissorFix = True
UnitsPerMeter = 1.50
VirtualScreen = False
+2
View File
@@ -0,0 +1,2 @@
[Graphics.VR]
DetectRenderTargets = True
+37
View File
@@ -0,0 +1,37 @@
[ElementsGroupOverride_Enable]
$Cow Shadow
[ElementsGroupOverride]
$Cow Shadow
format=element_only_v6
handling=fullscreen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=-6400
sig_ortho_right=6400
sig_ortho_top=6400
sig_ortho_bottom=-6400
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=406
sig_vp_y=406
sig_vp_w=64
sig_vp_h=64
sig_sc_l=342
sig_sc_t=342
sig_sc_r=469
sig_sc_b=469
sig_alpha=007f0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=0
+115 -320
View File
@@ -1,327 +1,122 @@
[Graphics.VR]
UnitsPerMeter = 1.5
DetectSkybox = True
DisableCPUCull = True
EnableControllerAnchor = True
FrameSizeFromXFB = True
MetroidThermalVisorFix = True
RemoveCinematicBars = True
UnitsPerMeter = 1.50
[ShaderOverride_Enable]
[ShaderOverride]
$Scan Effects
Hash=00000000a834da79
Type=VS
handling=skip
flag=Scan
$Scan EFB Effect
Hash=00000000a134cc51
Type=VS
handling=skip
condition=Scan
condition_mode=activate
$Space and Starts
Hash=000000009440f71a
Type=PS
handling=units_per_meter
units_per_meter=0.01
texture_mode=include
texture=28f68ec4760a8f33
texture=2af3eac112df6ad9
texture=4c8d5e5105a1ce62
texture=53402773209dd054
texture=5978a9fd0fa420ea
texture=8070f69d4aa12fa5
texture=83d06a7f46004d63
texture=a4d08582b031ed5d
$Planete Clouds
Hash=00000000de8254f4
Type=PS
handling=units_per_meter
units_per_meter=0.01
texture_mode=include
texture=1232a662782399dd
texture=b2787e156fb34699
texture=b74dd65817a93afd
texture=c27a9425d08998c6
$Planete in the intro
Hash=00000000d9bb9293
Type=PS
handling=units_per_meter
units_per_meter=0.01
texture_mode=include
texture=0f3192a333bd60bf
texture=28f68ec4760a8f33
texture=63cf3537e0682ce5
texture=86ab78afc99d10dc
texture=c821af3115336fb4
$Planete in the intro Atmosphere
Hash=00000000980dc843
Type=PS
handling=units_per_meter
units_per_meter=0.01
texture_mode=include
texture=7498fdac756ee362
texture=c821af3115336fb4
$Samus Arm in the ship
Hash=000000007d4a4a7d
Type=PS
handling=units_per_meter
units_per_meter=2.5
$Samus Arm in the ship Green Button
Hash=000000001dba12b0
Type=PS
handling=units_per_meter
units_per_meter=2.5
$Space Gas
Hash=00000000cd4c1319
Type=PS
handling=units_per_meter
units_per_meter=0.1
$Textbox
Hash=0000000053bb9636
Type=PS
[ElementsGroupOverride_Enable]
$Pointer
$Map Selector
[ElementsGroupOverride]
$Pointer
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=44800
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=566
sig_vp_w=320
sig_vp_h=224
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=789
sig_alpha=007f0000
sig_ztest=1
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
$Textbox Shadow
Hash=000000007b346bb1
Type=PS
handling=screen
$HUD Life Bar Metter
Hash=00000000467b2d0a
Type=VS
$Map Selector
format=element_only_v6
handling=headlocked
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=44800
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=566
sig_vp_w=320
sig_vp_h=224
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=789
sig_alpha=007f0000
sig_ztest=1
sig_zupdate=0
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
$Element Draw 111
format=element_only_v6
handling=controller_anchor
anchor_hand=right
texture_mode=include
texture=380a4ed102753a91
texture=4c1106bc3e129423
texture=877ac67dc3c23f97
texture=8a3e8ec9d97c84f7
texture=91627895056f2669
texture=96342171475066ab
texture=b0c321687c7a410b
texture=b7bcef92f3f7378d
texture=d3576576ea854c06
texture=e0490df227638ca4
texture=e3cfb7a4cb2e46bc
$HUD Minimap Yellow
Hash=00000000e4c0f308
Type=VS
handling=headlocked
$HUD Side Glowing Pattern
Hash=00000000e3693792
Type=VS
handling=skip
condition=Ship Map
condition_mode=deactivate
$HUD Top and Bottom Patterns
Hash=00000000876869e8
Type=VS
handling=skip
texture_mode=include
texture=05cc1aa330c76706
texture=2c35e0978af15ab9
texture=302a1ef6254d41ed
texture=45bfea2d6d4095bc
texture=78f06525df8be9a9
texture=79a461275782740f
texture=7b1e147db495548a
texture=8867d8afd385931b
texture=96024ca94ed7a952
texture=9e49a1d847a78cad
texture=cabb2ea6008423e8
texture=e23d5bfa878b3822
texture=f5b543c6ce3d2892
$HUD Blue Bars
Hash=00000000b5dfae94
Type=VS
handling=headlocked
texture_mode=include
texture=ca4340be4ff1d0c1
$HUD Radar & Minimap
Hash=00000000d9e56ba1
Type=PS
handling=headlocked
hash_family=1
family_signature=9bfa9614d1e63c4e
$HUD Minimap Shadow Background
Hash=000000006a5d85fb
Type=PS
handling=headlocked
hash_family=1
family_signature=17436f16bab03b71
$HUD Minimap Yellow Background
Hash=00000000075dba1e
Type=PS
handling=headlocked
hash_family=1
family_signature=3d5d14f35f02bdc5
$HUD Minimap Window Cut
Hash=00000000f5db6afb
Type=PS
handling=headlocked
condition=Ship Map
condition_mode=deactivate
hash_family=1
family_signature=51329b04b4650d91
$Radar Shadow Background
Hash=00000000738497fb
Type=PS
handling=skip
hash_family=1
family_signature=17437a16bab04e22
$HUD Minimap 2
Hash=000000008ababdcd
Type=PS
handling=headlocked
condition=Ship Map
condition_mode=deactivate
hash_family=1
family_signature=703d1f1b1c8687fd
$HUD Minimap Shadow Background 2
Hash=0000000009abbe00
Type=PS
handling=skip
hash_family=1
family_signature=17436e16bab039be
$Ship Map & Arrow
Hash=00000000c8fbe7f6
Type=PS
handling=screen
condition=Ship Map
condition_mode=activate
hash_family=1
family_signature=c13ee4d4a421f2bb
$Ship Map EFB
Hash=00000000a36dcb25
Type=PS
handling=skip
condition=Ship Map
condition_mode=activate
hash_family=1
family_signature=1680a2a7798383fc
$Ship Map Planete Norion
Hash=00000000127b6c87
Type=PS
handling=screen
condition=Ship Map
condition_mode=activate
hash_family=1
family_signature=5ce3569f191a73c9
$Ship Map
Hash=00000000127b6c87
Type=PS
handling=flag
flag=Ship Map
texture_mode=include
texture=1ae3f91996bf8504
texture=6dde3b3a6b083159
texture=78fd4a6b3dce1042
$Ship Map Selector
Hash=00000000f5db6afb
Type=PS
handling=screen
condition=Ship Map
condition_mode=activate
$Exit Ship Box
Hash=000000004e4fb751
Type=PS
handling=screen
$Exit Ship Text
Hash=0000000090cee951
Type=PS
handling=screen
$Exit Ship B Button
Hash=000000000fa714b3
Type=PS
handling=screen
$HUD Selector
Hash=000000004058a00e
Type=PS
handling=headlocked
hash_family=1
family_signature=f97a5e54037b9825
$HUD Selector Icons
Hash=00000000f973d429
Type=PS
handling=headlocked
hash_family=1
family_signature=0b49f78c7fc55d69
texture_mode=include
texture=2c639f847f1c286c
$Radar Samus Face
Hash=00000000f973d429
Type=PS
handling=skip
condition=Scan
condition_mode=activate
$Scan side pannels
Hash=000000004e114e63
Type=PS
handling=headlocked
condition=Scan
condition_mode=activate
$Blue Bars Hyper Mode
Hash=000000004058a00e
Type=PS
handling=headlocked
$Floating pixel
Hash=00000000516da5d0
Type=VS
handling=skip
hash_family=1
family_signature=00000000516da5d0
$Stray Pixel
Hash=00000000bba2a905
Type=PS
handling=skip
hash_family=1
family_signature=54636216817a60d3
$Radar Target point
Hash=00000000ec9eb741
Type=PS
handling=headlocked
hash_family=1
family_signature=7afdb23d054cb864
$Morph Ball HUD
Hash=000000004058a00e
Type=PS
handling=headlocked
$A Button Prompt
Hash=000000006142402e
Type=PS
handling=headlocked
hash_family=1
family_signature=9cb98db2e2ef5edd
texture=17e6c8543933ba4a
texture=2ad8b14ecd9447cf
texture=38ee0f92b65d44f7
sig_perspective=1
sig_persp_hfov=8959
sig_persp_vfov=5500
sig_persp_near=200
sig_persp_far=75000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=566
sig_vp_w=320
sig_vp_h=224
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=789
sig_alpha=007f0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
[TextureElementOverride_Enable]
[TextureElementOverride]
+179 -24
View File
@@ -1,25 +1,15 @@
[Graphics.VR]
UnitsPerMeter = 500.00
[ShaderOverride_Enable]
[ShaderOverride]
$B button
Hash=0000000015b56d5a
Type=PS
match_mode=exact_hash
handling=flag
flag=B button
$Mario
Hash=00000000a89a8548
Type=PS
match_mode=exact_hash
handling=fullscreen
condition=B button
condition_mode=activate
[Graphics.VR]
UnitsPerMeter = 500.00
ElementDepth = 5.0000
[ElementsGroupOverride_Enable]
$Element Draw 247
$Element Draw 318
$Element Draw 222
$Menu
$Race HUD
$Minimap Player Head
$Minimap Player Head Background
$EFB
$Menu 02
[ElementsGroupOverride]
$Element Draw 247
format=element_only_v5
@@ -332,7 +322,7 @@ sig_ortho_right=30
sig_ortho_top=22
sig_ortho_bottom=-22
sig_use_projection=0
sig_use_layer=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
@@ -426,10 +416,10 @@ sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=-41,600
sig_ortho_right=41,600
sig_ortho_top=22,800
sig_ortho_bottom=-22,800
sig_ortho_left=-41
sig_ortho_right=41
sig_ortho_top=22
sig_ortho_bottom=-22
sig_use_projection=0
sig_use_layer=0
sig_use_viewport=1
@@ -451,3 +441,168 @@ sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=0
$Race HUD
format=element_only_v5
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=-41
sig_ortho_right=41
sig_ortho_top=22
sig_ortho_bottom=-22
sig_use_projection=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=646
sig_vp_y=570
sig_vp_w=304
sig_vp_h=228
sig_sc_l=342
sig_sc_t=342
sig_sc_r=949
sig_sc_b=797
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=0
$Minimap Player Head
format=element_only_v5
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=-41
sig_ortho_right=41
sig_ortho_top=22
sig_ortho_bottom=-22
sig_use_projection=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=646
sig_vp_y=570
sig_vp_w=304
sig_vp_h=228
sig_sc_l=342
sig_sc_t=342
sig_sc_r=949
sig_sc_b=797
sig_alpha=003e008c
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=0
$Minimap Player Head Background
format=element_only_v5
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=-41
sig_ortho_right=41
sig_ortho_top=22
sig_ortho_bottom=-22
sig_use_projection=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=646
sig_vp_y=570
sig_vp_w=304
sig_vp_h=228
sig_sc_l=342
sig_sc_t=342
sig_sc_r=949
sig_sc_b=797
sig_alpha=003c0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=0
$EFB
format=element_only_v5
handling=skip
sig_perspective=1
sig_persp_hfov=8
sig_persp_vfov=5
sig_persp_near=1
sig_persp_far=50
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=646
sig_vp_y=570
sig_vp_w=304
sig_vp_h=228
sig_sc_l=342
sig_sc_t=342
sig_sc_r=949
sig_sc_b=797
sig_alpha=007f0000
sig_ztest=1
sig_zupdate=0
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=0
$Menu 02
format=element_only_v5
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=-30
sig_ortho_right=30
sig_ortho_top=22
sig_ortho_bottom=-22
sig_use_projection=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=646
sig_vp_y=570
sig_vp_w=304
sig_vp_h=228
sig_sc_l=342
sig_sc_t=342
sig_sc_r=949
sig_sc_b=797
sig_alpha=003c0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
+178 -19
View File
@@ -1,29 +1,188 @@
[Graphics.VR]
UnitsPerMeter = 500.0
[ShaderOverride_Enable]
[ShaderOverride]
$HUD
Hash=00000000198dabb4
Type=VS
[ElementsGroupOverride_Enable]
$Menu 01
$Menu 02
$HUD 01
$Minimap head
$Minimap head 02
[ElementsGroupOverride]
$Menu 01
format=element_only_v5
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=-30400
sig_ortho_right=30400
sig_ortho_top=22800
sig_ortho_bottom=-22800
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=646
sig_vp_y=570
sig_vp_w=304
sig_vp_h=228
sig_sc_l=342
sig_sc_t=342
sig_sc_r=949
sig_sc_b=797
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
$HUD Rank
Hash=00000000d6773474
Type=VS
$Menu 02
format=element_only_v5
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=-30400
sig_ortho_right=30400
sig_ortho_top=22800
sig_ortho_bottom=-22800
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=646
sig_vp_y=570
sig_vp_w=304
sig_vp_h=228
sig_sc_l=342
sig_sc_t=342
sig_sc_r=949
sig_sc_b=797
sig_alpha=003c0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
$HUD Letters
Hash=000000000e9b236e
Type=VS
$HUD 01
format=element_only_v5
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=-41600
sig_ortho_right=41600
sig_ortho_top=22800
sig_ortho_bottom=-22800
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=646
sig_vp_y=570
sig_vp_w=304
sig_vp_h=228
sig_sc_l=342
sig_sc_t=342
sig_sc_r=949
sig_sc_b=797
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=0
$EFB Effect
Hash=0000000078d6ff61
Type=PS
$Minimap head
format=element_only_v5
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=-41600
sig_ortho_right=41600
sig_ortho_top=22800
sig_ortho_bottom=-22800
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=646
sig_vp_y=570
sig_vp_w=304
sig_vp_h=228
sig_sc_l=342
sig_sc_t=342
sig_sc_r=949
sig_sc_b=797
sig_alpha=003e008c
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=0
$Minimap head 02
format=element_only_v5
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=-41600
sig_ortho_right=41600
sig_ortho_top=22800
sig_ortho_bottom=-22800
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=646
sig_vp_y=570
sig_vp_w=304
sig_vp_h=228
sig_sc_l=342
sig_sc_t=342
sig_sc_r=949
sig_sc_b=797
sig_alpha=003c0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=0
[TextureElementOverride_Enable]
$efb
$efb2
[TextureElementOverride]
$efb
handling=fullscreen
texture=00000000e0d282e8
$Award Ceremony EFB Effect
Hash=00000000fdb363d3
Type=PS
$efb2
handling=fullscreen
texture=000000009d5254b2
+343 -1
View File
@@ -1,2 +1,344 @@
[TextureElementOverride_Enable]
[TextureElementOverride]
$Wii safety
handling=screen
texture=ab5ba6919333be7a
[ElementsGroupOverride_Enable]
$EFB
$Element Draw 61
[ElementsGroupOverride]
$Element Draw 120
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=-41600
sig_ortho_right=41600
sig_ortho_top=22800
sig_ortho_bottom=-22800
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=646
sig_vp_y=570
sig_vp_w=304
sig_vp_h=228
sig_sc_l=342
sig_sc_t=342
sig_sc_r=949
sig_sc_b=797
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=0
$Element Draw 174
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=-41600
sig_ortho_right=41600
sig_ortho_top=22800
sig_ortho_bottom=-22800
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=646
sig_vp_y=570
sig_vp_w=304
sig_vp_h=228
sig_sc_l=342
sig_sc_t=342
sig_sc_r=949
sig_sc_b=797
sig_alpha=003e008c
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=0
$Element Draw 116
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=-41600
sig_ortho_right=41600
sig_ortho_top=22800
sig_ortho_bottom=-22800
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=646
sig_vp_y=570
sig_vp_w=304
sig_vp_h=228
sig_sc_l=342
sig_sc_t=342
sig_sc_r=949
sig_sc_b=797
sig_alpha=003c0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=0
$Menu 01
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=-30400
sig_ortho_right=30400
sig_ortho_top=22800
sig_ortho_bottom=-22800
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=646
sig_vp_y=570
sig_vp_w=304
sig_vp_h=228
sig_sc_l=342
sig_sc_t=342
sig_sc_r=949
sig_sc_b=797
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
$Menu 02
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=-30400
sig_ortho_right=30400
sig_ortho_top=22800
sig_ortho_bottom=-22800
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=646
sig_vp_y=570
sig_vp_w=304
sig_vp_h=228
sig_sc_l=342
sig_sc_t=342
sig_sc_r=949
sig_sc_b=797
sig_alpha=003c0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
$EFB
format=element_only_v6
handling=fullscreen
sig_perspective=1
sig_persp_hfov=8705
sig_persp_vfov=5500
sig_persp_near=1300
sig_persp_far=50000000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=646
sig_vp_y=570
sig_vp_w=304
sig_vp_h=228
sig_sc_l=342
sig_sc_t=342
sig_sc_r=949
sig_sc_b=797
sig_alpha=007f0000
sig_ztest=1
sig_zupdate=0
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=0
$Mario
format=element_only_v6
handling=camera_anchor
anchor_up=1
anchor_hide=1
anchor_rotation=yaw
anchor_yaw=-90
texture_mode=include
texture=5c89df31b5089780
sig_perspective=1
sig_persp_hfov=8705
sig_persp_vfov=5500
sig_persp_near=1300
sig_persp_far=50000000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=0
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=0
sig_use_scissor=0
sig_use_render_state=1
sig_layer=0
sig_vp_x=646
sig_vp_y=570
sig_vp_w=304
sig_vp_h=228
sig_sc_l=342
sig_sc_t=342
sig_sc_r=949
sig_sc_b=797
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
$Kart
format=element_only_v6
handling=camera_anchor
anchor_up=2
anchor_hide=0
anchor_rotation=yaw
anchor_yaw=-180
selected_match_mode=include
sig_perspective=1
sig_persp_hfov=8705
sig_persp_vfov=5500
sig_persp_near=1300
sig_persp_far=50000000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=0
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=0
sig_use_scissor=0
sig_use_render_state=1
sig_layer=0
sig_vp_x=646
sig_vp_y=570
sig_vp_w=304
sig_vp_h=228
sig_sc_l=342
sig_sc_t=342
sig_sc_r=949
sig_sc_b=797
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
selected_match_0_family_version=2
selected_match_0_vs_family=f5a0a42f43da4103
selected_match_0_ps_family=a7509afecefc532b
selected_match_0_gs_family=9a624400c542ed90
selected_match_0_texture=ac869b6f32d8bbdb
selected_match_0_texture=d17367bd5292d74e
selected_match_0_texture=f6e9be5d70632cf5
selected_match_0_texture=fb10eb2c95cf3756
$Element Draw 61
format=element_only_v6
handling=camera_anchor
anchor_up=2
anchor_hide=0
anchor_rotation=full
anchor_yaw=-180
texture_mode=include
texture=fb10eb2c95cf3756
sig_perspective=1
sig_persp_hfov=8705
sig_persp_vfov=5500
sig_persp_near=1300
sig_persp_far=50000000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=0
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=0
sig_use_scissor=0
sig_use_render_state=1
sig_layer=0
sig_vp_x=646
sig_vp_y=570
sig_vp_w=304
sig_vp_h=228
sig_sc_l=342
sig_sc_t=342
sig_sc_r=949
sig_sc_b=797
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
[Graphics.VR]
UnitsPerMeter = 500.0
AutoNativeEfbEffects = True
ExactScreenDepth = True
UnitsPerMeter = 500.00
VirtualScreen = True
+78 -14
View File
@@ -1,15 +1,37 @@
[TextureElementOverride_Enable]
$EFB Effect
$Mario Face
[TextureElementOverride]
$EFB Effect
handling=fullscreen
texture=6e821733be2d616f
$Mario Face
handling=camera_anchor
anchor_up=0.3
anchor_forward=0.2
anchor_hide=1
anchor_upm=100
texture=89b6ef6d317d5272
[Graphics.VR]
DontClearScreen = True
ElementDepth = 0.9792
UnitsPerMeter = 500.00
VirtualScreen = True
[ShaderOverride_Enable]
[ShaderOverride]
$Unnamed Shader 1
Hash=00000000a5ece7a3
Type=PS
match_mode=shader_family
handling=fullscreen
family_version=2
hash_family=1
family_signature=d4c6ec4ad5083096
[ElementsGroupOverride_Enable]
$Race HUD
$Minimap Racer
$Minimap Racer 1P
$EFB Volcano
$Main Menu
$Main Menu 2
[ElementsGroupOverride]
$EFB
format=element_only_v5
format=element_only_v6
handling=skip
sig_perspective=0
sig_persp_hfov=0
@@ -21,6 +43,7 @@ sig_ortho_right=83
sig_ortho_top=0
sig_ortho_bottom=45
sig_use_projection=0
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
@@ -42,7 +65,7 @@ sig_blend_color=1
sig_blend_alpha=1
$EFB2
format=element_only_v5
format=element_only_v6
handling=skip
sig_perspective=0
sig_persp_hfov=0
@@ -54,6 +77,7 @@ sig_ortho_right=83
sig_ortho_top=0
sig_ortho_bottom=45
sig_use_projection=0
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
@@ -75,7 +99,7 @@ sig_blend_color=1
sig_blend_alpha=1
$Race HUD
format=element_only_v5
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
@@ -87,6 +111,7 @@ sig_ortho_right=41
sig_ortho_top=22
sig_ortho_bottom=-22
sig_use_projection=0
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
@@ -108,7 +133,7 @@ sig_blend_color=1
sig_blend_alpha=0
$Minimap Racer
format=element_only_v5
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
@@ -120,6 +145,7 @@ sig_ortho_right=41
sig_ortho_top=22
sig_ortho_bottom=-22
sig_use_projection=0
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
@@ -141,7 +167,7 @@ sig_blend_color=1
sig_blend_alpha=0
$Minimap Racer 1P
format=element_only_v5
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
@@ -153,6 +179,7 @@ sig_ortho_right=41
sig_ortho_top=22
sig_ortho_bottom=-22
sig_use_projection=0
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
@@ -174,7 +201,7 @@ sig_blend_color=1
sig_blend_alpha=0
$EFB Volcano
format=element_only_v5
format=element_only_v6
handling=fullscreen
sig_perspective=1
sig_persp_hfov=8
@@ -186,6 +213,7 @@ sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=0
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
@@ -207,7 +235,7 @@ sig_blend_color=1
sig_blend_alpha=0
$Main Menu
format=element_only_v5
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
@@ -219,6 +247,7 @@ sig_ortho_right=30
sig_ortho_top=22
sig_ortho_bottom=-22
sig_use_projection=0
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
@@ -240,7 +269,7 @@ sig_blend_color=1
sig_blend_alpha=1
$Main Menu 2
format=element_only_v5
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
@@ -252,6 +281,7 @@ sig_ortho_right=30
sig_ortho_top=22
sig_ortho_bottom=-22
sig_use_projection=0
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
@@ -272,3 +302,37 @@ sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
$Element Draw 7
format=element_only_v6
handling=screen
sig_perspective=1
sig_persp_hfov=5782
sig_persp_vfov=4500
sig_persp_near=1000
sig_persp_far=1000000
sig_ortho_left=0
sig_ortho_right=0
sig_ortho_top=0
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=646
sig_vp_y=570
sig_vp_w=304
sig_vp_h=228
sig_sc_l=518
sig_sc_t=442
sig_sc_r=773
sig_sc_b=697
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
+155 -82
View File
@@ -1,12 +1,54 @@
[Graphics.VR]
UnitsPerMeter = 500.0
AutoNativeEfbEffects = False
ClearEFBCopies = 0
DontClearScreen = False
EagerHeartbeat = False
ExactScreenDepth = False
FoveationLevel = 1
UnitsPerMeter = 500.116
VirtualScreen = False
[TextureElementOverride_Enable]
[TextureElementOverride]
$Mario Camera Anchor
handling=camera_anchor
anchor_up=0.3
anchor_hide=1
anchor_rotation=yaw
anchor_yaw=180
anchor_upm=100
texture=44ab6c34b85672e3
$Hides Mario's head
handling=skip
texture=0fa38ef411bf4613
texture=601c1f7515fda890
texture=cff0958af362cd34
texture=ee299582cde9987b
$Skybox - Beach Ball Galaxy
handling=skip
texture=ef518b706f1ae146
[HideObjectCodes_Enabled]
$CInematic bar up
$Cinematic Bar Down
[HideObjectCodes]
$CInematic bar up
Type=128bits
Upper=0xC398000000000000
Lower=0x0000000000000000
$Cinematic Bar Down
Type=128bits
Upper=0xC3980000C2700000
Lower=0x0000000000000000
[ElementsGroupOverride_Enable]
$HUD
$Pointer trail
$Select Level Screen
$Blue Mask
[ElementsGroupOverride]
$HUD
format=element_only_v5
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
@@ -18,6 +60,7 @@ sig_ortho_right=30
sig_ortho_top=22
sig_ortho_bottom=-22
sig_use_projection=0
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
@@ -39,7 +82,7 @@ sig_blend_color=1
sig_blend_alpha=0
$Pointer trail
format=element_only_v5
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
@@ -51,6 +94,7 @@ sig_ortho_right=83
sig_ortho_top=0
sig_ortho_bottom=45
sig_use_projection=0
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
@@ -72,7 +116,7 @@ sig_blend_color=1
sig_blend_alpha=0
$Select Level Screen
format=element_only_v5
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
@@ -84,6 +128,7 @@ sig_ortho_right=30
sig_ortho_top=22
sig_ortho_bottom=-22
sig_use_projection=0
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
@@ -103,96 +148,124 @@ sig_zupdate=0
sig_zfunc=0
sig_blend_color=1
sig_blend_alpha=1
[HideObjectCodes_Enabled]
$CInematic bar up
$Cinematic Bar Down
[HideObjectCodes]
$CInematic bar up
Type=128bits
Upper=0xC398000000000000
Lower=0x0000000000000000
$Cinematic Bar Down
Type=128bits
Upper=0xC3980000C2700000
Lower=0x0000000000000000
$Blue Mask
format=element_only_v6
handling=skip
comments=Appears when using "Exact Screen Depth"
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=45600
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=570
sig_vp_w=320
sig_vp_h=228
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=797
sig_alpha=007f0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
[ShaderOverride_Enable]
$Honey Hive - Waterfall
$Water - Beach Ball Galaxy
$Water - Loopdeloop
[ShaderOverride]
$HUD_Numbers
Hash=000000005233425f
$Skybox Observatory Bottom
Hash=000000004ed8cf69
Type=PS
match_mode=exact_hash
handling=screen
texture_mode=exclude
texture=d92187b4040c8492
$HUD_Icones
Hash=00000000a30177c8
Type=PS
match_mode=exact_hash
handling=screen
$HUD_Shadows
Hash=000000003c371f64
Type=PS
match_mode=exact_hash
handling=screen
$Text_box Arrow
Hash=00000000757115fb
Type=PS
match_mode=exact_hash
handling=screen
$Wii pointer trail
Hash=000000007c9a1b09
Type=PS
match_mode=exact_hash
handling=screen
$Cinematic_Bars 01
Hash=00000000a30177c8
Type=PS
match_mode=exact_hash
match_mode=shader_family
handling=skip
texture_mode=include
texture=ff10223616c08787
family_version=2
hash_family=1
family_signature=12f5dbd274600568
$Select_buttons
Hash=000000004e1d3326
$Skybox Observatory Middle
Hash=00000000097d1923
Type=PS
match_mode=exact_hash
handling=screen
$Hand Pointer
Hash=00000000f9f27a88
Type=PS
match_mode=exact_hash
handling=screen
$Hand pointer shadow
Hash=000000009551be3c
Type=PS
match_mode=exact_hash
handling=screen
$Galaxy Map trails
Hash=000000005233425f
Type=PS
match_mode=exact_hash
match_mode=shader_family
handling=skip
texture_mode=include
texture=60eff5497ae01c93
family_version=2
hash_family=1
family_signature=e09e2a0a9e8d9253
$Waterfall
Hash=0000000086d1bafc
$Skybox Observatory Top
Hash=000000006f090420
Type=PS
match_mode=exact_hash
match_mode=shader_family
handling=skip
family_version=2
hash_family=1
family_signature=800443491b0a6b06
$Bowl Galaxy Water
Hash=0000000052b3c704
$Skybox Observatory Very Bottom
Hash=00000000f3c681a9
Type=PS
match_mode=exact_hash
match_mode=shader_family
handling=skip
family_version=2
hash_family=1
family_signature=ba10a96dddff097d
$Honey Hive - Waterfall
Hash=00000000a4eacc59
Type=PS
match_mode=shader_family
handling=skip
family_version=2
hash_family=1
family_signature=d8e1f8bb1c2d7db0
$Water - Beach Ball Galaxy
Hash=000000007a07f8c2
Type=PS
match_mode=shader_family
handling=skip
family_version=2
hash_family=1
family_signature=e5295fb9b16c2d7d
$Skybox - Beach Ball Galaxy
Hash=000000007a1260dc
Type=PS
match_mode=shader_family
handling=skip
family_version=2
hash_family=1
family_signature=1328718655894688
$Skybox Bottom - Beach Ball Galaxy
Hash=00000000581cf4c4
Type=PS
match_mode=shader_family
handling=skip
family_version=2
hash_family=1
family_signature=c239a83d2a9525c2
$Water - Loopdeloop
Hash=000000005c1e2490
Type=PS
match_mode=shader_family
handling=skip
family_version=2
hash_family=1
family_signature=d7221cc320bdbdea
+243
View File
@@ -0,0 +1,243 @@
[Graphics.VR]
UnitsPerMeter = 10.006772
[ElementsGroupOverride_Enable]
$N of Players
$Miis
$Miis head
$Mii shadows
$Racket Shadow
[ElementsGroupOverride]
$N of Players
format=element_only_v6
handling=fullscreen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=83200
sig_ortho_top=0
sig_ortho_bottom=45600
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=570
sig_vp_w=320
sig_vp_h=228
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=797
sig_alpha=007f0000
sig_ztest=0
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
$HUD
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=-41600
sig_ortho_right=41600
sig_ortho_top=22800
sig_ortho_bottom=-22800
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=570
sig_vp_w=320
sig_vp_h=228
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=797
sig_alpha=003f0000
sig_ztest=0
sig_zupdate=0
sig_zfunc=0
sig_blend_color=1
sig_blend_alpha=0
$Miis
format=element_only_v6
handling=fullscreen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=45600
sig_ortho_bottom=0
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=570
sig_vp_w=320
sig_vp_h=228
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=797
sig_alpha=007f0000
sig_ztest=0
sig_zupdate=0
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=0
$Miis head
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=-41600
sig_ortho_right=41600
sig_ortho_top=22800
sig_ortho_bottom=-22800
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=570
sig_vp_w=320
sig_vp_h=228
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=797
sig_alpha=007f0000
sig_ztest=0
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=0
$Mii shadows
format=element_only_v6
handling=fullscreen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=-6400
sig_ortho_right=6400
sig_ortho_top=6400
sig_ortho_bottom=-6400
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=406
sig_vp_y=406
sig_vp_w=64
sig_vp_h=64
sig_sc_l=342
sig_sc_t=342
sig_sc_r=469
sig_sc_b=469
sig_alpha=007f0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
$Racket Shadow
format=element_only_v6
handling=fullscreen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=-6400
sig_ortho_right=6400
sig_ortho_top=6400
sig_ortho_bottom=-6400
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=406
sig_vp_y=406
sig_vp_w=64
sig_vp_h=64
sig_sc_l=342
sig_sc_t=342
sig_sc_r=469
sig_sc_b=469
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=1
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
[ShaderOverride_Enable]
[ShaderOverride]
$Mii
Hash=0000000003f1af72
Type=PS
match_mode=shader_family
handling=skip
family_version=2
hash_family=1
family_signature=7f3361d23637196d
$Mii body 02
Hash=00000000e4c6b8a2
Type=PS
match_mode=shader_family
handling=camera_anchor
anchor_up=0.75
anchor_hide=1
family_version=2
hash_family=1
family_signature=e1e8b39827da1c8b
$Mii head
Hash=000000005ffcc15c
Type=PS
match_mode=shader_family
handling=skip
family_version=2
hash_family=1
family_signature=2d361f8242c7983d
File diff suppressed because it is too large. Load diff
+7
View File
@@ -1,2 +1,9 @@
[Graphics.VR]
AutoNativeEfbEffects = True
DontClearScreen = True
EagerHeartbeat = False
ExactScreenDepth = True
ForcedVBIFrequency = 0
LockHeadPosePerFrame = True
UnitsPerMeter = 10.00
VirtualScreen = True
+243 -39
View File
@@ -1,24 +1,82 @@
[Graphics.VR]
UnitsPerMeter = 25.00
[TextureElementOverride]
handling = skip
texture = 13076c64ca241c2f
[ShaderOverride_Enable]
$Unnamed Shader 2
[ShaderOverride]
$Unnamed Shader 1
Hash=0000000045a52582
Type=PS
match_mode=shader_family
handling=screen
family_version=2
hash_family=1
family_signature=1d2ea4c1151fba82
$Unnamed Shader 2
Hash=000000000c96a805
Type=PS
match_mode=shader_family
handling=fullscreen
family_version=2
hash_family=1
family_signature=9fe143c10cfee633
[ElementsGroupOverride_Enable]
$FMV
$HUD
$Boost
$Boost Ripple
$HUD During Boost
[ElementsGroupOverride]
$HUD
format=element_only_v5
$FMV
format=element_only_v6
handling=screen
comments=Still missing some elements
credits=iChris4
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=48
sig_use_projection=0
sig_use_layer=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=003e0001
sig_ztest=1
sig_zupdate=0
sig_zfunc=1
sig_blend_color=1
sig_blend_alpha=1
$HUD
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
@@ -37,36 +95,182 @@ sig_zupdate=0
sig_zfunc=1
sig_blend_color=1
sig_blend_alpha=1
[ShaderOverride_Enable]
[ShaderOverride]
$Bloom Effect
Hash=000000005233425f
Type=PS
match_mode=exact_hash
handling=skip
texture_mode=include
texture=a6c477a4cdc8b783
$HUD
Hash=000000005233425f
Type=PS
match_mode=exact_hash
handling=screen
texture_mode=exclude
texture=a6c477a4cdc8b783
$HUD3
Hash=00000000198dabb4
Type=VS
match_mode=exact_hash
handling=screen
$Boost
Hash=00000000198dabb4
Type=VS
match_mode=exact_hash
format=element_only_v6
handling=skip
texture_mode=include
texture=a6c477a4cdc8b783
texture=c55d55f335211444
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=003f0000
sig_ztest=0
sig_zupdate=0
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=1
$Boost Ripple
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=003e0001
sig_ztest=1
sig_zupdate=1
sig_zfunc=1
sig_blend_color=1
sig_blend_alpha=1
$HUD During Boost
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=003e0001
sig_ztest=0
sig_zupdate=0
sig_zfunc=1
sig_blend_color=1
sig_blend_alpha=1
$Element Draw 1458
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=0
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=588
sig_sc_t=638
sig_sc_r=707
sig_sc_b=757
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
$Element Draw 2037
format=element_only_v6
handling=screen_pane
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=0
sig_ortho_right=64000
sig_ortho_top=0
sig_ortho_bottom=48000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=0
sig_use_viewport=1
sig_use_scissor=0
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=572
sig_sc_t=546
sig_sc_r=739
sig_sc_b=821
sig_alpha=003f0000
sig_ztest=1
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=1
[Graphics.VR]
AutoNativeEfbEffects = False
DetectSkybox = False
ExactScreenDepth = False
MetroidThermalVisorFix = False
OrthoScissorFix = False
RemoveCinematicBars = False
UnitsPerMeter = 25.00
VirtualScreen = False
+51
View File
@@ -0,0 +1,51 @@
[ElementsGroupOverride_Enable]
$HUD
[ElementsGroupOverride]
$HUD
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=-30400
sig_ortho_right=30400
sig_ortho_top=22800
sig_ortho_bottom=-22800
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=646
sig_vp_y=570
sig_vp_w=304
sig_vp_h=228
sig_sc_l=342
sig_sc_t=342
sig_sc_r=949
sig_sc_b=797
sig_alpha=003f0000
sig_ztest=0
sig_zupdate=0
sig_zfunc=7
sig_blend_color=1
sig_blend_alpha=0
[TextureElementOverride_Enable]
$Texture 0000000041dfd25e
$Texture 00000000fc40d015
[TextureElementOverride]
$Texture 0000000041dfd25e
handling=skip
texture=0000000041dfd25e
$Texture 00000000fc40d015
handling=skip
texture=00000000fc40d015
[Graphics.VR]
AutoNativeEfbEffects = False
ExactScreenDepth = False
VirtualScreen = False
+40
View File
@@ -0,0 +1,40 @@
[TextureElementOverride_Enable]
[TextureElementOverride]
[Graphics.VR]
EnableCameraHeight = False
[ElementsGroupOverride_Enable]
[ElementsGroupOverride]
$Element Draw 182
format=element_only_v6
handling=screen
sig_perspective=0
sig_persp_hfov=0
sig_persp_vfov=0
sig_persp_near=0
sig_persp_far=0
sig_ortho_left=-42667
sig_ortho_right=42667
sig_ortho_top=24000
sig_ortho_bottom=-24000
sig_use_projection=1
sig_use_projection_type=0
sig_use_layer=1
sig_use_viewport=1
sig_use_scissor=1
sig_use_render_state=1
sig_layer=0
sig_vp_x=662
sig_vp_y=582
sig_vp_w=320
sig_vp_h=240
sig_sc_l=342
sig_sc_t=342
sig_sc_r=981
sig_sc_b=821
sig_alpha=0044003f
sig_ztest=1
sig_zupdate=0
sig_zfunc=3
sig_blend_color=1
sig_blend_alpha=0
+50
View File
@@ -0,0 +1,50 @@
[Profile]
Device = OpenXR/0/OpenXR Controller
General/Open = @(Ctrl+O)
General/Toggle Pause = F10
General/Stop = Escape
General/Toggle Fullscreen = @(Alt+Return)
General/Take Screenshot = F9
General/Open Achievements = @(Alt+A)
Emulation Speed/Disable Emulation Speed Limit = Tab
Stepping/Step Into = F11
Stepping/Step Over = @(Shift+F10)
Stepping/Step Out = @(Shift+F11)
Breakpoint/Toggle Breakpoint = @(Shift+F9)
Wii/Connect Wii Remote 1 = @(Alt+F5)
Wii/Connect Wii Remote 2 = @(Alt+F6)
Wii/Connect Wii Remote 3 = @(Alt+F7)
Wii/Connect Wii Remote 4 = @(Alt+F8)
Wii/Connect Balance Board = @(Alt+F9)
VR/Reset VR Position = @(Shift+R)
Load State/Load State Slot 1 = F1
Load State/Load State Slot 2 = F2
Load State/Load State Slot 3 = F3
Load State/Load State Slot 4 = F4
Load State/Load State Slot 5 = F5
Load State/Load State Slot 6 = F6
Load State/Load State Slot 7 = F7
Load State/Load State Slot 8 = F8
Save State/Save State Slot 1 = @(Shift+F1)
Save State/Save State Slot 2 = @(Shift+F2)
Save State/Save State Slot 3 = @(Shift+F3)
Save State/Save State Slot 4 = @(Shift+F4)
Save State/Save State Slot 5 = @(Shift+F5)
Save State/Save State Slot 6 = @(Shift+F6)
Save State/Save State Slot 7 = @(Shift+F7)
Save State/Save State Slot 8 = @(Shift+F8)
Other State Hotkeys/Undo Load State = F12
Other State Hotkeys/Undo Save State = @(Shift+F12)
GBA Core/Load ROM = @(`Ctrl`+`Shift`+`O`)
GBA Core/Unload ROM = @(`Ctrl`+`Shift`+`W`)
GBA Core/Reset = @(`Ctrl`+`Shift`+`R`)
GBA Volume/Volume Down = `KP_Subtract`
GBA Volume/Volume Up = `KP_Add`
GBA Volume/Volume Toggle Mute = `M`
GBA Window Size/1x = `KP_1`
GBA Window Size/2x = `KP_2`
GBA Window Size/3x = `KP_3`
GBA Window Size/4x = `KP_4`
USB Emulation Devices/Show Skylanders Portal = @(Ctrl+P)
USB Emulation Devices/Show Infinity Base = @(Ctrl+I)
Android/Return to Main Menu = `Left Button Menu`
@@ -7,9 +7,6 @@ Buttons/2 = `Right Thumbstick Y-`
Buttons/- = `Right Thumbstick X-`
Buttons/+ = `Right Thumbstick X+`
Buttons/Home = `Left Button Menu`
IR/Total Yaw = 30.
IR/Pointer Sensitivity = 25.
IR/Recenter = `Right Button Thumbstick`
IMUIR/Enabled = False
Extension = Nunchuk
Nunchuk/Buttons/C = `Left Button Squeeze`&`Left Squeeze`
+66
View File
@@ -0,0 +1,66 @@
FROM ubuntu:26.04
RUN apt-get update \
&& apt-get install -y \
build-essential \
clang \
cmake \
file \
qt6-base-dev \
qt6-base-private-dev \
qt6-svg-dev \
pkg-config \
libgl1-mesa-dev \
libx11-dev \
libxrandr-dev \
libxi-dev \
libegl1-mesa-dev \
libavcodec-dev \
libavformat-dev \
libavutil-dev \
libswresample-dev \
libswscale-dev \
libudev-dev \
libevdev-dev \
libsdl3-dev \
glslang-dev \
glslang-tools \
libpugixml-dev \
libenet-dev \
libxxhash-dev \
libbz2-dev \
liblzma-dev \
libzstd-dev \
zlib1g-dev \
libminizip-ng-dev \
liblzo2-dev \
liblz4-dev \
libspng-dev \
libcubeb-dev \
libusb-1.0-0-dev \
libsfml-dev \
libminiupnpc-dev \
libcurl4-openssl-dev \
libhidapi-dev \
libsystemd-dev \
libgtest-dev \
libasound2-dev \
libpulse-dev \
llvm-dev \
libbluetooth-dev \
gettext \
libvulkan-dev \
vulkan-tools
## fmt that comes with ubuntu 26 also seems incorrect.
# libfmt-dev \
RUN mkdir -p /app/dolphinxr
WORKDIR /app/dolphinxr
COPY . .
RUN mkdir Build \
&& cd Build \
&& cmake .. -DENABLE_VR=ON -DENABLE_VULKAN=ON -DUSE_SYSTEM_MBEDTLS=OFF -DUSE_SYSTEM_LIBMGBA=OFF \
&& cd .. \
&& cmake --build Build --target dolphin-emu -j $(nproc)
+18
View File
@@ -0,0 +1,18 @@
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 7efde81..9d5e1fd 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -163,8 +163,12 @@ option(BUILD_ALL_EXTENSIONS "Build loader and layers with all extensions" OFF)
option(
BUILD_LOADER_WITH_EXCEPTION_HANDLING
"Enable exception handling in the loader. Leave this on unless your standard library is built to not throw."
- ON
+ OFF
)
+if(NOT BUILD_LOADER_WITH_EXCEPTION_HANDLING)
+ add_definitions(-DXRLOADER_DISABLE_EXCEPTION_HANDLING)
+ add_definitions(-DJSON_USE_EXCEPTIONS=0)
+endif()
if(WIN32)
set(OPENXR_DEBUG_POSTFIX
+125 -33
View File
@@ -6,8 +6,17 @@ Dolphin is an emulator for running GameCube and Wii games on Windows,
Linux, macOS, and recent Android devices. It's licensed under the terms
of the GNU General Public License, version 2 or later (GPLv2+).
This fork adds OpenXR support to Dolphin so users can play in VR on supported
Windows builds and was developed with the use of AI tools.
This fork adds OpenXR support to Dolphin so users can play in VR on Windows,
desktop Linux, and standalone Meta Quest headsets, and was developed with the
use of AI tools.
- **Windows** — VR runs on the Direct3D 11, Direct3D 12, Vulkan, and OpenGL
backends with any OpenXR runtime (SteamVR, Oculus/Meta Link, VDXR, etc.).
- **Linux** — VR runs on the Vulkan and OpenGL backends and requires a working
system OpenXR runtime such as Monado or SteamVR.
- **Meta Quest** — a standalone Android build (Quest 2, Quest 3, Quest 3S, and
Quest Pro) renders natively in the headset on the Vulkan and OpenGL ES
backends, with OpenXR controller support.
Please read the [FAQ](https://dolphin-emu.org/docs/faq/) before using Dolphin.
@@ -15,30 +24,43 @@ Please read the [FAQ](https://dolphin-emu.org/docs/faq/) before using Dolphin.
### Desktop
* OS
* Windows (10 1903 or higher).
* Linux.
* macOS (11.0 Big Sur or higher).
* Unix-like systems other than Linux are not officially supported but might work.
* Processor
* A CPU with SSE2 support.
* A modern CPU (3 GHz and Dual Core, not older than 2008) is highly recommended.
* Graphics
* A reasonably modern graphics card (Direct3D 11.1 / OpenGL 3.3).
* A graphics card that supports Direct3D 11.1 / OpenGL 4.4 is recommended.
- OS
- Windows (10 1903 or higher).
- Linux.
- macOS (11.0 Big Sur or higher).
- Unix-like systems other than Linux are not officially supported but might work.
- Processor
- A CPU with SSE2 support.
- A modern CPU (3 GHz and Dual Core, not older than 2008) is highly recommended.
- Graphics
- A reasonably modern graphics card (Direct3D 11.1 / OpenGL 3.3).
- A graphics card that supports Direct3D 11.1 / OpenGL 4.4 is recommended.
### Android
* OS
* Android (5.0 Lollipop or higher).
* Processor
* A processor with support for 64-bit applications (either ARMv8 or x86-64).
* Graphics
* A graphics processor that supports OpenGL ES 3.0 or higher. Performance varies heavily with [driver quality](https://dolphin-emu.org/blog/2013/09/26/dolphin-emulator-and-opengl-drivers-hall-fameshame/).
* A graphics processor that supports standard desktop OpenGL features is recommended for best performance.
- OS
- Android (5.0 Lollipop or higher).
- Processor
- A processor with support for 64-bit applications (either ARMv8 or x86-64).
- Graphics
- A graphics processor that supports OpenGL ES 3.0 or higher. Performance varies heavily with [driver quality](https://dolphin-emu.org/blog/2013/09/26/dolphin-emulator-and-opengl-drivers-hall-fameshame/).
- A graphics processor that supports standard desktop OpenGL features is recommended for best performance.
Dolphin can only be installed on devices that satisfy the above requirements. Attempting to install on an unsupported device will fail and display an error message.
### VR (OpenXR)
- Windows
- An OpenXR runtime (SteamVR, Oculus/Meta Link, VDXR, etc.) and a headset it supports.
- Direct3D 11, Direct3D 12, Vulkan, or OpenGL backend.
- Linux
- An OpenXR runtime such as Monado or SteamVR.
- Vulkan (recommended) or OpenGL backend.
- Meta Quest
- Quest 2, Quest 3, Quest 3S, or Quest Pro, running the standalone `quest` build.
- Vulkan or OpenGL ES backend.
- VR is not supported on macOS.
## Building for Windows
Use the solution file `Source/dolphin-emu.sln` to build Dolphin on Windows.
@@ -48,33 +70,32 @@ tested and are not recommended to be used. Git and latest Windows SDK must be
installed when building.
Make sure to pull submodules before building:
```sh
git submodule update --init --recursive
```
### Building the OpenXR VR version
To build the VR-enabled version of this fork, OpenXR support must be enabled.
On desktop Linux, OpenXR VR is Vulkan-only and requires a working system OpenXR
runtime such as Monado or SteamVR.
To build the VR-enabled version of this fork, OpenXR support must be enabled
with `-DENABLE_VR=ON`. VR is supported on Windows, desktop Linux, and Android
(Meta Quest); see the Linux and Android sections below for those platforms.
If you are generating a Visual Studio build with CMake, configure with
`-DENABLE_VR=ON`:
```sh
cmake -S . -B Build-vs2022 -G "Visual Studio 17 2022" -A x64 -DENABLE_VR=ON
```
On desktop Linux, configure with OpenXR and Vulkan enabled:
```sh
cmake -S . -B Build -DENABLE_VR=ON -DENABLE_VULKAN=ON
```
When using the Visual Studio generator, build the OpenXR loader first:
```sh
cmake --build Build-vs2022 --config Release --target openxr_loader
```
Finally, build Dolphin:
```sh
cmake --build Build-vs2022 --config Release --target dolphin-emu
```
@@ -87,21 +108,36 @@ The "Debug" solution configuration is significantly slower, more verbose and les
## Building for Linux and macOS
Dolphin requires [CMake](https://cmake.org/) for systems other than Windows.
Dolphin requires [CMake](https://cmake.org/) for systems other than Windows.
You need a recent version of GCC or Clang with decent c++20 support. CMake will
inform you if your compiler is too old.
Many libraries are bundled with Dolphin and used if they're not installed on
Many libraries are bundled with Dolphin and used if they're not installed on
your system. CMake will inform you if a bundled library is used or if you need
to install any missing packages yourself. You may refer to the [wiki](https://github.com/dolphin-emu/dolphin/wiki/Building-for-Linux) for more information.
Make sure to pull submodules before building:
```sh
git submodule update --init --recursive
```
### Building the OpenXR VR version on Linux:
OpenXR VR is available on desktop Linux (it is not supported on macOS). It
requires a working system OpenXR runtime such as Monado or SteamVR, and runs on
the Vulkan and OpenGL backends. Configure with OpenXR and Vulkan enabled:
```sh
cmake -S . -B Build -DENABLE_VR=ON -DENABLE_VULKAN=ON
cmake --build Build --target dolphin-emu -j $(nproc)
```
OpenGL (GLX) is always built on desktop Linux, so VR remains usable even
without `-DENABLE_VULKAN=ON`, though Vulkan is recommended.
### macOS Build Steps:
A binary supporting a single architecture can be built using the following steps:
A binary supporting a single architecture can be built using the following steps:
1. `mkdir build`
2. `cd build`
@@ -119,8 +155,8 @@ application bundle using the following steps:
4. Universal binaries will be available in the `universal` folder
Doing this is more complex as it requires installation of library dependencies for both x64 and ARM (or universal library
equivalents) and may require specifying additional arguments to point to relevant library locations.
Execute BuildMacOSUniversalBinary.py --help for more details.
equivalents) and may require specifying additional arguments to point to relevant library locations.
Execute BuildMacOSUniversalBinary.py --help for more details.
### Linux Global Build Steps:
@@ -142,6 +178,28 @@ Useful for development as root access is not required.
4. `make -j $(nproc)`
5. `ln -s ../../Data/Sys Binaries/`
### Building with Docker
A `Dockerfile` is provided for a reproducible Linux build environment. Build the image from the repository root:
```sh
docker build -t dolphinxr:latest .
```
To produce an installable `.deb` package from the built image and extract it to the host:
```sh
mkdir -p dist
docker run --rm -v "$(pwd)/dist:/out" -w /app/dolphinxr/Build dolphinxr:latest \
bash -c "cpack -G DEB && cp -v *.deb /out/"
```
Then install it:
```sh
sudo apt install ./dist/dolphin-emu-*.deb
```
### Linux Portable Build Steps:
Can be stored on external storage and used on different Linux systems.
@@ -160,6 +218,7 @@ These instructions assume familiarity with Android development. If you do not ha
Android dev environment set up, see [AndroidSetup.md](AndroidSetup.md).
Make sure to pull submodules before building:
```sh
git submodule update --init --recursive
```
@@ -170,6 +229,38 @@ Android apps are compiled using a build system called Gradle. Dolphin's native c
however, is compiled using CMake. The Gradle script will attempt to run a CMake build
automatically while building the Java code.
### Building the Meta Quest VR version
The Android project has two product flavors on the `device` dimension:
`standard` (phones and tablets, built with `-DENABLE_VR=OFF`) and `quest`
(standalone headsets, built with `-DENABLE_VR=ON`). The `quest` flavor is
arm64-only, installs under the application ID `org.dolphinemu.dolphinemu.quest`
so it can live alongside a standard install, and declares the OpenXR manifest
entries required by Quest 2, Quest 3, Quest 3S, and Quest Pro.
Build it with Gradle from `Source/Android`:
```sh
./gradlew assembleQuestDebug # or assembleQuestRelease
```
Helper scripts are also provided for Windows:
```powershell
.\Source\Android\build-quest.ps1 # debug APK
.\Source\Android\build-quest-release.ps1 # release APK (needs signing properties)
```
Install the resulting APK on a headset with adb:
```sh
adb install -r Source/Android/app/build/outputs/apk/quest/debug/app-quest-debug.apk
```
VR settings for the headset (launch in VR, resolution scale, reference space,
controller bindings, and so on) live under the OpenXR section of the in-app
settings.
## Uninstalling
On Windows, simply remove the extracted directory, unless it was installed with the NSIS installer,
@@ -223,6 +314,7 @@ There's also "Null", which will not render anything, and
is intended for debugging purposes only.
## DolphinTool Usage
```
usage: dolphin-tool COMMAND -h
@@ -5,6 +5,7 @@
package org.dolphinemu.dolphinemu
import android.app.Activity
import android.content.Intent
import android.content.res.Resources
import android.view.Surface
@@ -370,6 +371,11 @@ object NativeLibrary {
@JvmStatic
external fun RequestOpenXRRecenter()
external fun StartOpenXRControllerMapper(activity: Activity, controllerPort: Int, targetType: Int): Boolean
external fun GetOpenXRControllerMapperState(): Int
external fun GetOpenXRControllerMapperFailure(): String
external fun ApplyOpenXRControllerMapper(): Boolean
external fun StopOpenXRControllerMapper()
/**
* Ensures that IsRunning will return true from now on until emulation exits.
@@ -1200,7 +1200,9 @@ class EmulationActivity : AppCompatActivity(), ThemeProvider {
}
private fun startEmulationActivity(activity: FragmentActivity, launcher: Intent) {
if (QuestVrSettings.isLaunchInVrEnabled()) {
// Launch immersively whenever OpenXR is enabled — both stereo 3D and the flat-panel
// ("Launch games in VR" off) path present through the XR compositor.
if (QuestVrSettings.isOpenXrImmersiveEnabled()) {
launcher.addCategory("com.oculus.intent.category.VR")
launcher.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP)
activity.startActivity(launcher)
@@ -1223,7 +1225,7 @@ class EmulationActivity : AppCompatActivity(), ThemeProvider {
val settings = Settings()
settings.loadSettings()
try {
QuestVrSettings.prepareLaunchSettings(settings, launchSystemMenu)
QuestVrSettings.prepareLaunchSettings(settings)
settings.saveSettings()
} finally {
settings.close()
@@ -0,0 +1,87 @@
// SPDX-License-Identifier: GPL-2.0-or-later
package org.dolphinemu.dolphinemu.activities
import android.app.Activity
import android.graphics.Color
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.view.View
import android.widget.Toast
import org.dolphinemu.dolphinemu.NativeLibrary
import org.dolphinemu.dolphinemu.R
class OpenXRControllerMapperActivity : Activity() {
private val handler = Handler(Looper.getMainLooper())
private val pollMapper = object : Runnable {
override fun run() {
when (NativeLibrary.GetOpenXRControllerMapperState()) {
STATE_APPLY_PENDING -> {
if (NativeLibrary.ApplyOpenXRControllerMapper()) {
Toast.makeText(
this@OpenXRControllerMapperActivity,
R.string.openxr_controller_mapper_applied,
Toast.LENGTH_SHORT
).show()
}
finish()
return
}
STATE_APPLIED, STATE_CANCELLED -> {
finish()
return
}
STATE_FAILED -> {
Toast.makeText(
this@OpenXRControllerMapperActivity,
NativeLibrary.GetOpenXRControllerMapperFailure(),
Toast.LENGTH_LONG
).show()
finish()
return
}
}
handler.postDelayed(this, POLL_INTERVAL_MS)
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
window.decorView.systemUiVisibility =
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY or
View.SYSTEM_UI_FLAG_FULLSCREEN or
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
setContentView(View(this).apply { setBackgroundColor(Color.BLACK) })
val port = intent.getIntExtra(EXTRA_CONTROLLER_PORT, -1)
val targetType = intent.getIntExtra(EXTRA_TARGET_TYPE, TARGET_WII_REMOTE)
if (!NativeLibrary.StartOpenXRControllerMapper(this, port, targetType)) {
Toast.makeText(this, NativeLibrary.GetOpenXRControllerMapperFailure(), Toast.LENGTH_LONG)
.show()
finish()
return
}
handler.post(pollMapper)
}
override fun onDestroy() {
handler.removeCallbacks(pollMapper)
NativeLibrary.StopOpenXRControllerMapper()
super.onDestroy()
}
companion object {
const val EXTRA_CONTROLLER_PORT = "controller_port"
const val EXTRA_TARGET_TYPE = "target_type"
const val TARGET_WII_REMOTE = 0
const val TARGET_GAMECUBE_CONTROLLER = 1
const val TARGET_HOTKEYS = 2
private const val POLL_INTERVAL_MS = 100L
private const val STATE_APPLY_PENDING = 3
private const val STATE_APPLIED = 4
private const val STATE_CANCELLED = 5
private const val STATE_FAILED = 6
}
}
@@ -0,0 +1,69 @@
// SPDX-License-Identifier: GPL-2.0-or-later
package org.dolphinemu.dolphinemu.dialogs
import android.app.Dialog
import android.os.Bundle
import android.widget.Toast
import androidx.fragment.app.DialogFragment
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import org.dolphinemu.dolphinemu.R
import org.dolphinemu.dolphinemu.features.settings.model.QuestVrSettings
import org.dolphinemu.dolphinemu.features.settings.model.Settings
import org.dolphinemu.dolphinemu.utils.FirstLaunchDialogs
class QuestControllerSetupDialog : DialogFragment() {
private val isFirstLaunch: Boolean
get() = arguments?.getBoolean(KEY_FIRST_LAUNCH) ?: true
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// The first-launch prompt gates the analytics prompt behind its answer, so it has to be
// answered. Invoked from the main menu it is just an action the user can back out of.
isCancelable = !isFirstLaunch
}
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
return MaterialAlertDialogBuilder(requireContext())
.setTitle(R.string.quest_controller_setup_title)
.setMessage(R.string.quest_controller_setup_description)
.setPositiveButton(R.string.yes) { _, _ -> onAnswered(true) }
.setNegativeButton(R.string.no) { _, _ -> onAnswered(false) }
.create()
}
private fun onAnswered(applyDefaults: Boolean) {
if (isFirstLaunch) {
FirstLaunchDialogs.onQuestControllerSetupAnswered(requireActivity(), applyDefaults)
return
}
// Applying on demand deliberately leaves the first-launch bookkeeping alone, so declining
// here does not suppress the initial prompt.
if (!applyDefaults) {
return
}
Settings().use { settings ->
settings.loadSettings()
QuestVrSettings.applyDefaultControllerSetup(settings)
settings.saveSettings()
}
Toast.makeText(
requireContext(),
R.string.quest_controller_preset_applied,
Toast.LENGTH_SHORT
).show()
}
companion object {
const val TAG = "QuestControllerSetupDialog"
private const val KEY_FIRST_LAUNCH = "first_launch"
fun newInstance(isFirstLaunch: Boolean): QuestControllerSetupDialog =
QuestControllerSetupDialog().apply {
arguments = Bundle().apply { putBoolean(KEY_FIRST_LAUNCH, isFirstLaunch) }
}
}
}
@@ -100,6 +100,13 @@ enum class IntSetting(
"PNGCompressionLevel",
6
),
// Default must match GFX_COMMAND_BUFFERS_IN_FLIGHT in GraphicsSettings.cpp.
GFX_COMMAND_BUFFERS_IN_FLIGHT(
Settings.FILE_GFX,
Settings.SECTION_GFX_SETTINGS,
"CommandBuffersInFlight",
8
),
GFX_MSAA(Settings.FILE_GFX, Settings.SECTION_GFX_SETTINGS, "MSAA", 1),
GFX_EFB_SCALE(Settings.FILE_GFX, Settings.SECTION_GFX_SETTINGS, "InternalResolution", 1),
GFX_SHADER_COMPILATION_MODE(
@@ -17,6 +17,11 @@ object QuestGameOverrideSettings {
"ElementsGroupOverride",
"ElementsGroupOverride_Enable",
true
),
TEXTURE_ELEMENT_OVERRIDES(
"TextureElementOverride",
"TextureElementOverride_Enable",
true
)
}
@@ -11,31 +11,53 @@ object QuestGameVrConfigSettings {
private const val VR_SECTION = "Graphics.VR"
private const val LEGACY_VR_SECTION = "GFX.VR"
// Every key the VR Config screen can read back. A key missing here is dropped while parsing,
// so a stored per-game value would silently read as the global default.
private val knownKeys = setOf(
"EnableOpenXR",
"UnitsPerMeter",
"EnableLeanBackAngle",
"LeanBackAngle",
"EnableCameraForward",
"CameraForward",
"EnableCameraHeight",
"CameraHeight",
"EnableCameraAnchor",
"CameraAnchorSmoothing",
"EnableControllerAnchor",
"VirtualScreen",
"ScreenDistance",
"ScreenSize",
"HudThickness",
"HeadLockedCurvature",
"ExactScreenDepth",
"AutoNativeEfbEffects",
"DontClearScreen",
"LoadCustomShaders",
"DisableCPUCull",
"OpcodeReplay",
"RemoveCinematicBars",
"FrameSizeFromXFB",
"SmallViewportsOnScreen",
"DetectRenderTargets",
"OrthoScissorFix",
"DetectSkybox",
"MetroidThermalVisorFix",
"MetroidD3DThermalPaletteFix",
"ForcedVBIFrequency",
"AutoVBIFromHMD",
"AutoLayerSpread",
"LayerOffset",
"ElementDepth",
"EagerHeartbeat",
"ClearEFBCopies",
"Gamma",
"ResolutionScale",
"FoveationLevel",
"DynamicFoveation",
"FoveateEFB",
"UseVulkanMultiview",
"AndroidDirectToHMD",
"ARMode",
"ARModeDebug",
"ARBackgroundAlpha"
"Passthrough",
"PassthroughRemoveBlackBackground",
"PassthroughRemoveBlackEFBClears",
"PassthroughSceneOpacity",
"PassthroughCoverageMode"
)
fun getStoredKeys(gameId: String, revision: Int): Set<String> =
@@ -7,11 +7,11 @@ import org.dolphinemu.dolphinemu.features.input.model.controlleremu.EmulatedCont
object QuestVrSettings {
const val STEREO_MODE_OPENXR = 6
const val CONTROLLER_PRESET_GAMECUBE = 0
const val CONTROLLER_PRESET_WII_REMOTE = 1
private const val GC_PROFILE_NAME = "Quest Touch GameCube.ini"
private const val WIIMOTE_PROFILE_NAME = "OpenXR Wii Remote.ini"
const val GC_PROFILE_NAME = "Quest Touch GameCube.ini"
const val WIIMOTE_PROFILE_NAME = "OpenXR Wii Remote.ini"
const val HOTKEY_PROFILE_NAME = "Quest.ini"
private const val OPENXR_DEVICE = "OpenXR/0/OpenXR Controller"
private const val VR_SECTION = "VR"
private fun androidBooleanSetting(key: String, defaultValue: Boolean) =
@@ -35,53 +35,96 @@ object QuestVrSettings {
fun launchInVrSetting() = androidBooleanSetting("QuestLaunchInVr", true)
fun flatScreenSetting() = vrBooleanSetting("FlatScreen", false)
fun recenterOnLaunchSetting() = androidBooleanSetting("QuestRecenterOnLaunch", true)
fun leftHandedSetting() = androidBooleanSetting("QuestLeftHanded", false)
fun showMirrorSurfaceSetting() = androidBooleanSetting("QuestShowMirrorSurface", false)
fun controllerPresetSetting() =
androidIntSetting("QuestControllerPreset", CONTROLLER_PRESET_GAMECUBE)
// Superseded by ForcedVBIFrequency; kept only so an explicit choice can clear a stale value.
private fun autoVbiFromHmdSetting() = vrBooleanSetting("AutoVBIFromHMD", false)
fun passthroughSetting() = vrBooleanSetting("ARMode", false)
fun forcedVbiFrequencySetting(): AbstractIntSetting = ForcedVbiFrequencySetting
fun debugPassthroughSetting() = vrBooleanSetting("ARModeDebug", false)
fun eagerHeartbeatSetting() = vrBooleanSetting("EagerHeartbeat", false)
fun arBackgroundAlphaSetting() = vrFloatSetting("ARBackgroundAlpha", 0.0f)
fun referenceSpaceModeSetting() = vrIntSetting("ReferenceSpaceMode", 0)
fun autoImmediateXfbSetting() = vrBooleanSetting("AutoImmediateXFB", true)
fun autoVbiFromHmdSetting() = vrBooleanSetting("AutoVBIFromHMD", false)
fun trackingModeSetting() = vrIntSetting("TrackingMode", 0)
fun unitsPerMeterSetting(): AbstractFloatSetting = FloatSetting.GFX_VR_UNITS_PER_METER
fun enableLeanBackAngleSetting() = vrBooleanSetting("EnableLeanBackAngle", true)
fun leanBackAngleSetting() = vrFloatSetting("LeanBackAngle", 0.0f)
fun enableCameraForwardSetting() = vrBooleanSetting("EnableCameraForward", true)
fun cameraForwardSetting() = vrFloatSetting("CameraForward", 0.0f)
fun enableCameraHeightSetting() = vrBooleanSetting("EnableCameraHeight", true)
fun cameraHeightSetting() = vrFloatSetting("CameraHeight", 0.0f)
fun lockHeadPoseSetting() = vrBooleanSetting("LockHeadPosePerFrame", false)
fun enableCameraAnchorSetting() = vrBooleanSetting("EnableCameraAnchor", false)
fun opcodeReplaySetting() = vrIntSetting("OpcodeReplay", 0)
fun cameraAnchorSmoothingSetting() = vrFloatSetting("CameraAnchorSmoothing", 0.85f)
fun enableControllerAnchorSetting() = vrBooleanSetting("EnableControllerAnchor", false)
fun detectSkyboxSetting() = vrBooleanSetting("DetectSkybox", false)
fun passthroughSetting() = vrBooleanSetting("Passthrough", false)
fun passthroughRevealUnrenderedSetting() =
vrBooleanSetting("PassthroughRemoveBlackBackground", true)
fun passthroughRemoveBlackClearsSetting() =
vrBooleanSetting("PassthroughRemoveBlackEFBClears", true)
fun passthroughSceneOpacitySetting() = vrFloatSetting("PassthroughSceneOpacity", 1.0f)
fun passthroughCoverageModeSetting() = vrIntSetting("PassthroughCoverageMode", 0)
fun vrGammaSetting() = vrFloatSetting("Gamma", 1.0f)
fun autoLayerSpreadSetting() = vrBooleanSetting("AutoLayerSpread", true)
fun exactScreenDepthSetting() = vrBooleanSetting("ExactScreenDepth", true)
fun layerOffsetSetting() = vrFloatSetting("LayerOffset", 0.002f)
fun autoNativeEfbEffectsSetting() = vrBooleanSetting("AutoNativeEfbEffects", true)
fun elementDepthSetting() = vrFloatSetting("ElementDepth", 0.001f)
fun hudThicknessSetting() = vrFloatSetting("HudThickness", 0.0f)
fun removeBarsSetting() = vrBooleanSetting("RemoveCinematicBars", true)
fun frameSizeFromXfbSetting() = vrBooleanSetting("FrameSizeFromXFB", true)
fun panesOnScreenSetting() = vrBooleanSetting("SmallViewportsOnScreen", true)
fun detectRenderTargetsSetting() = vrBooleanSetting("DetectRenderTargets", false)
fun orthoScissorFixSetting() = vrBooleanSetting("OrthoScissorFix", true)
// The PC VRPane exposes one checkbox that drives both the Vulkan and the D3D palette key.
fun layeredPaletteConversionSetting(): AbstractBooleanSetting = LayeredPaletteConversionSetting
fun useVulkanMultiviewSetting() = vrBooleanSetting("UseVulkanMultiview", true)
fun androidDirectToHmdSetting() = vrBooleanSetting("AndroidDirectToHMD", true)
fun cpuLevel5HintSetting() = vrBooleanSetting("QuestCpuLevel5Hint", false)
// Defaults must match GraphicsSettings.cpp (Android values).
fun resolutionScaleSetting() = vrFloatSetting("ResolutionScale", 0.85f)
fun foveationLevelSetting() = vrIntSetting("FoveationLevel", 2)
fun dynamicFoveationSetting() = vrBooleanSetting("DynamicFoveation", true)
// Off by default: forces binned rendering, which hurts EFB-copy-heavy games.
fun foveateEfbSetting() = vrBooleanSetting("FoveateEFB", false)
fun virtualScreenSetting() = vrBooleanSetting("VirtualScreen", false)
fun screenDistanceSetting() = vrFloatSetting("ScreenDistance", 1.5f)
@@ -98,7 +141,60 @@ object QuestVrSettings {
fun loadCustomShadersSetting() = vrBooleanSetting("LoadCustomShaders", false)
fun openXrConfigSceneSetting() = vrBooleanSetting("EnableOpenXRConfigScene", true)
/**
* AutoVBIFromHMD is the legacy boolean that ForcedVBIFrequency replaced (SConfig::LoadSettings
* migrates it to 90 Hz on startup). While it is set it pins the effective rate to 90 Hz even
* when the frequency reads "Off", so clear it whenever an explicit choice is made — same as the
* PC VRPane does.
*/
private object ForcedVbiFrequencySetting : AbstractIntSetting {
private val backing = vrIntSetting("ForcedVBIFrequency", 0)
override val isOverridden: Boolean
get() = backing.isOverridden
override val isRuntimeEditable: Boolean
get() = backing.isRuntimeEditable
override fun delete(settings: Settings): Boolean = backing.delete(settings)
override val int: Int
get() = backing.int
override fun setInt(settings: Settings, newValue: Int) {
backing.setInt(settings, newValue)
autoVbiFromHmdSetting().setBoolean(settings, false)
}
}
/**
* The layered palette conversion path has a separate key per backend family; the PC VRPane
* keeps them in sync behind a single checkbox, so do the same here.
*/
private object LayeredPaletteConversionSetting : AbstractBooleanSetting {
private val vulkanKey = vrBooleanSetting("MetroidThermalVisorFix", true)
private val d3dKey = vrBooleanSetting("MetroidD3DThermalPaletteFix", true)
override val isOverridden: Boolean
get() = vulkanKey.isOverridden
override val isRuntimeEditable: Boolean
get() = vulkanKey.isRuntimeEditable
override fun delete(settings: Settings): Boolean {
val deletedD3d = d3dKey.delete(settings)
return vulkanKey.delete(settings) || deletedD3d
}
override val boolean: Boolean
get() = vulkanKey.boolean
override fun setBoolean(settings: Settings, newValue: Boolean) {
vulkanKey.setBoolean(settings, newValue)
d3dKey.setBoolean(settings, newValue)
}
}
private fun openXrRuntimeSetting() = vrBooleanSetting("EnableOpenXR", false)
@@ -107,15 +203,22 @@ object QuestVrSettings {
private fun backendMultithreadingReenabledSetting() =
androidBooleanSetting("QuestBackendMultithreadingReenabled", false)
private fun controllerProfilesAppliedSetting() =
androidBooleanSetting("QuestControllerProfilesApplied", false)
private fun controllerSetupAskedSetting() =
androidBooleanSetting("QuestControllerSetupAsked", false)
fun shouldShowMirrorSurface(): Boolean {
if (!BuildConfig.IS_QUEST) {
return true
}
return showMirrorSurfaceSetting().boolean || !isLaunchInVrEnabled()
// Flat-in-VR is still an immersive OpenXR session (no 2D Android surface), so key the
// mirror surface off whether we launch immersively, not off stereo vs. flat.
return showMirrorSurfaceSetting().boolean || !isOpenXrImmersiveEnabled()
}
// True when we launch an immersive OpenXR session at all (either stereo 3D or flat panel).
fun isOpenXrImmersiveEnabled(): Boolean {
return BuildConfig.IS_QUEST && openXrEnabledSetting().boolean
}
fun isLaunchInVrEnabled(): Boolean {
@@ -134,24 +237,145 @@ object QuestVrSettings {
IntSetting.GFX_EFB_SCALE.setInt(settings, 4)
BooleanSetting.GFX_WAIT_FOR_SHADERS_BEFORE_STARTING.setBoolean(settings, false)
BooleanSetting.MAIN_SHOW_INPUT_OVERLAY.setBoolean(settings, false)
lockHeadPoseSetting().setBoolean(settings, false)
autoLayerSpreadSetting().setBoolean(settings, true)
exactScreenDepthSetting().setBoolean(settings, true)
androidDirectToHmdSetting().setBoolean(settings, true)
removeBarsSetting().setBoolean(settings, true)
virtualScreenSetting().setBoolean(settings, false)
passthroughSetting().setBoolean(settings, false)
debugPassthroughSetting().setBoolean(settings, false)
BooleanSetting.GFX_HACK_IMMEDIATE_XFB.setBoolean(settings, true)
BooleanSetting.GFX_HACK_VI_SKIP.setBoolean(settings, false)
perfDefaultsAppliedSetting().setBoolean(settings, true)
backendMultithreadingReenabledSetting().setBoolean(settings, true)
}
fun applySelectedControllerPreset(settings: Settings) {
applyControllerPreset(settings, controllerPresetSetting().int)
/**
* Restores every setting on the OpenXR screen to its built-in default, mirroring the PC
* VRPane's "Reset VR Settings" button.
*
* Deletes the keys instead of writing values so the platform's compiled-in defaults apply —
* several of them differ on Android (e.g. ResolutionScale 0.85, FoveationLevel 2,
* AndroidDirectToHMD on). Non-VR graphics settings (backend, EFB scale) and controller
* mappings are deliberately left alone; they do not belong to this screen.
*/
fun resetOpenXrSettings(settings: Settings) {
val resettable: List<AbstractSetting> = listOf(
// Runtime
openXrEnabledSetting(),
launchInVrSetting(),
flatScreenSetting(),
recenterOnLaunchSetting(),
unitsPerMeterSetting(),
// Camera
enableLeanBackAngleSetting(),
leanBackAngleSetting(),
enableCameraForwardSetting(),
cameraForwardSetting(),
enableCameraHeightSetting(),
cameraHeightSetting(),
enableCameraAnchorSetting(),
cameraAnchorSmoothingSetting(),
enableControllerAnchorSetting(),
// Virtual screen
virtualScreenSetting(),
exactScreenDepthSetting(),
autoNativeEfbEffectsSetting(),
screenDistanceSetting(),
screenSizeSetting(),
hudThicknessSetting(),
headLockedCurvatureSetting(),
// Rendering
resolutionScaleSetting(),
foveationLevelSetting(),
dynamicFoveationSetting(),
foveateEfbSetting(),
clearEfbCopiesSetting(),
vrGammaSetting(),
// Framerate
forcedVbiFrequencySetting(),
autoVbiFromHmdSetting(),
eagerHeartbeatSetting(),
// VR hacks
useVulkanMultiviewSetting(),
dontClearScreenSetting(),
disableCpuCullSetting(),
removeBarsSetting(),
frameSizeFromXfbSetting(),
panesOnScreenSetting(),
detectRenderTargetsSetting(),
orthoScissorFixSetting(),
detectSkyboxSetting(),
layeredPaletteConversionSetting(),
// Passthrough
passthroughSetting(),
passthroughRevealUnrenderedSetting(),
passthroughRemoveBlackClearsSetting(),
passthroughSceneOpacitySetting(),
passthroughCoverageModeSetting(),
// Comfort and debug
leftHandedSetting(),
showMirrorSurfaceSetting(),
androidDirectToHmdSetting(),
cpuLevel5HintSetting(),
loadCustomShadersSetting(),
referenceSpaceModeSetting(),
trackingModeSetting()
)
resettable.forEach { it.delete(settings) }
}
fun prepareLaunchSettings(settings: Settings, launchSystemMenu: Boolean) {
fun shouldAskAboutControllerSetup(): Boolean {
return BuildConfig.IS_QUEST && !controllerSetupAskedSetting().boolean
}
fun recordControllerSetupChoice(settings: Settings, applyDefaults: Boolean) {
if (!BuildConfig.IS_QUEST) {
return
}
if (applyDefaults) {
applyDefaultControllerSetup(settings)
}
controllerSetupAskedSetting().setBoolean(settings, true)
}
/**
* Points [controller] at the stock Quest OpenXR profile named [profileName].
*
* Also used by the mapping screen's "Default" action: Dolphin's built-in defaults target a
* touchscreen or physical pad that does not exist on Quest, so the OpenXR profile is the only
* meaningful default there.
*
* @return false on non-Quest builds, so callers can fall back to Dolphin's own defaults.
*/
fun loadStockProfile(controller: EmulatedController, profileName: String): Boolean {
if (!BuildConfig.IS_QUEST) {
return false
}
controller.loadProfile(controller.getSysProfileDirectoryPath() + profileName)
controller.setDefaultDevice(OPENXR_DEVICE)
return true
}
/**
* Installs the stock Quest mappings without making the user choose between Wii and GameCube.
* The appropriate controller will be used automatically for each emulated console.
*/
fun applyDefaultControllerSetup(settings: Settings) {
if (!BuildConfig.IS_QUEST) {
return
}
loadStockProfile(EmulatedController.getGcPad(0), GC_PROFILE_NAME)
loadStockProfile(EmulatedController.getWiimote(0), WIIMOTE_PROFILE_NAME)
loadStockProfile(EmulatedController.getHotkeys(), HOTKEY_PROFILE_NAME)
// 6 is an emulated Standard Controller and 3 is an OpenXR Wii Remote.
IntSetting.MAIN_SI_DEVICE_0.setInt(settings, 6)
IntSetting.WIIMOTE_1_SOURCE.setInt(settings, 3)
}
fun prepareLaunchSettings(settings: Settings) {
if (!BuildConfig.IS_QUEST) {
return
}
@@ -162,61 +386,34 @@ object QuestVrSettings {
StringSetting.MAIN_GFX_BACKEND.setString(settings, "Vulkan")
val launchInVr = isLaunchInVrEnabled()
openXrRuntimeSetting().setBoolean(settings, launchInVr)
// The OpenXR immersive session runs whenever the runtime is enabled. "Launch games in VR"
// then chooses stereo 3D (StereoMode::OpenXR) vs. a flat mono panel in the VR scene.
val immersive = isOpenXrImmersiveEnabled()
val stereo = isLaunchInVrEnabled()
openXrRuntimeSetting().setBoolean(settings, immersive)
flatScreenSetting().setBoolean(settings, immersive && !stereo)
if (launchInVr) {
IntSetting.GFX_STEREO_MODE.setInt(settings, STEREO_MODE_OPENXR)
if (immersive) {
// Native side maps EnableOpenXR + FlatScreen to the stereo mode; keep GFX_STEREO_MODE
// set to OpenXR only for the stereo path so a stale value can't force stereo in flat.
IntSetting.GFX_STEREO_MODE.setInt(settings, if (stereo) STEREO_MODE_OPENXR else 0)
if (!backendMultithreadingReenabledSetting().boolean) {
BooleanSetting.GFX_BACKEND_MULTITHREADING.setBoolean(settings, true)
backendMultithreadingReenabledSetting().setBoolean(settings, true)
}
BooleanSetting.MAIN_SHOW_INPUT_OVERLAY.setBoolean(settings, false)
if (lockHeadPoseSetting().boolean) {
autoImmediateXfbSetting().setBoolean(settings, false)
BooleanSetting.GFX_HACK_IMMEDIATE_XFB.setBoolean(settings, false)
} else if (autoImmediateXfbSetting().boolean) {
BooleanSetting.GFX_HACK_IMMEDIATE_XFB.setBoolean(settings, true)
}
// Immediately Present XFB is left as the user set it (applyRecommendedDefaults
// turns it on): games that need it off now render correctly in VR, and the
// head-pose lock is applied automatically whenever it is off.
BooleanSetting.GFX_HACK_VI_SKIP.setBoolean(settings, false)
} else if (IntSetting.GFX_STEREO_MODE.int == STEREO_MODE_OPENXR) {
IntSetting.GFX_STEREO_MODE.setInt(settings, 0)
}
if (launchSystemMenu) {
applyControllerPreset(settings, CONTROLLER_PRESET_WII_REMOTE)
} else {
applySelectedControllerPreset(settings)
}
}
fun applyControllerPreset(settings: Settings, preset: Int) {
if (!BuildConfig.IS_QUEST) {
return
// flatScreen already set false above (immersive is false here).
if (IntSetting.GFX_STEREO_MODE.int == STEREO_MODE_OPENXR) {
IntSetting.GFX_STEREO_MODE.setInt(settings, 0)
}
}
if (!controllerProfilesAppliedSetting().boolean) {
EmulatedController.getGcPad(0).loadProfile(
EmulatedController.getGcPad(0).getSysProfileDirectoryPath() + GC_PROFILE_NAME
)
EmulatedController.getWiimote(0).loadProfile(
EmulatedController.getWiimote(0).getSysProfileDirectoryPath() + WIIMOTE_PROFILE_NAME
)
controllerProfilesAppliedSetting().setBoolean(settings, true)
}
when (preset) {
CONTROLLER_PRESET_WII_REMOTE -> applyWiiRemoteSource(settings)
else -> applyGameCubeSource(settings)
}
}
private fun applyGameCubeSource(settings: Settings) {
IntSetting.MAIN_SI_DEVICE_0.setInt(settings, 6)
IntSetting.WIIMOTE_1_SOURCE.setInt(settings, 0)
}
private fun applyWiiRemoteSource(settings: Settings) {
IntSetting.WIIMOTE_1_SOURCE.setInt(settings, 3)
// Controller profiles are configured explicitly by the first-launch prompt or settings UI.
// Do not overwrite a user's controller selection whenever a game starts.
}
}
@@ -26,10 +26,25 @@ enum class MenuTag {
HACKS("hacks"),
STATISTICS("statistics"),
ADVANCED_GRAPHICS("advanced_graphics"),
QUEST_VR_CAMERA("quest_vr_camera"),
QUEST_VR_VIRTUAL_SCREEN("quest_vr_virtual_screen"),
QUEST_VR_RENDERING("quest_vr_rendering"),
QUEST_VR_FRAMERATE("quest_vr_framerate"),
QUEST_VR_HACKS("quest_vr_hacks"),
QUEST_VR_PASSTHROUGH("quest_vr_passthrough"),
QUEST_VR_DEBUG("quest_vr_debug"),
QUEST_VR_CONFIG("quest_vr_config"),
QUEST_VR_CONFIG_CAMERA("quest_vr_config_camera"),
QUEST_VR_CONFIG_VIRTUAL_SCREEN("quest_vr_config_virtual_screen"),
QUEST_VR_CONFIG_RENDERING("quest_vr_config_rendering"),
QUEST_VR_CONFIG_FRAMERATE("quest_vr_config_framerate"),
QUEST_VR_CONFIG_HACKS("quest_vr_config_hacks"),
QUEST_VR_CONFIG_PASSTHROUGH("quest_vr_config_passthrough"),
QUEST_VR_CONFIG_DEBUG("quest_vr_config_debug"),
QUEST_HIDE_OBJECTS("quest_hide_objects"),
QUEST_SHADER_OVERRIDES("quest_shader_overrides"),
QUEST_ELEMENTS_GROUP_OVERRIDES("quest_elements_group_overrides"),
QUEST_TEXTURE_ELEMENT_OVERRIDES("quest_texture_element_overrides"),
GCPAD_TYPE("gc_pad_type"),
WIIMOTE("wiimote"),
WIIMOTE_EXTENSION("wiimote_extension"),
@@ -282,10 +282,25 @@ class SettingsFragment : Fragment(), SettingsFragmentView {
titles[MenuTag.HACKS] = R.string.hacks_submenu
titles[MenuTag.STATISTICS] = R.string.statistics_submenu
titles[MenuTag.ADVANCED_GRAPHICS] = R.string.advanced_graphics_submenu
titles[MenuTag.QUEST_VR_CAMERA] = R.string.quest_vr_camera
titles[MenuTag.QUEST_VR_VIRTUAL_SCREEN] = R.string.quest_vr_virtual_screen
titles[MenuTag.QUEST_VR_RENDERING] = R.string.quest_vr_rendering
titles[MenuTag.QUEST_VR_FRAMERATE] = R.string.quest_vr_framerate
titles[MenuTag.QUEST_VR_HACKS] = R.string.quest_vr_hacks
titles[MenuTag.QUEST_VR_PASSTHROUGH] = R.string.quest_vr_passthrough
titles[MenuTag.QUEST_VR_DEBUG] = R.string.quest_vr_debug
titles[MenuTag.QUEST_VR_CONFIG] = R.string.quest_vr_config
titles[MenuTag.QUEST_VR_CONFIG_CAMERA] = R.string.quest_vr_camera
titles[MenuTag.QUEST_VR_CONFIG_VIRTUAL_SCREEN] = R.string.quest_vr_virtual_screen
titles[MenuTag.QUEST_VR_CONFIG_RENDERING] = R.string.quest_vr_rendering
titles[MenuTag.QUEST_VR_CONFIG_FRAMERATE] = R.string.quest_vr_framerate
titles[MenuTag.QUEST_VR_CONFIG_HACKS] = R.string.quest_vr_hacks
titles[MenuTag.QUEST_VR_CONFIG_PASSTHROUGH] = R.string.quest_vr_passthrough
titles[MenuTag.QUEST_VR_CONFIG_DEBUG] = R.string.quest_vr_debug
titles[MenuTag.QUEST_HIDE_OBJECTS] = R.string.quest_hide_objects
titles[MenuTag.QUEST_SHADER_OVERRIDES] = R.string.quest_shader_overrides
titles[MenuTag.QUEST_ELEMENTS_GROUP_OVERRIDES] = R.string.quest_elements_group_overrides
titles[MenuTag.QUEST_TEXTURE_ELEMENT_OVERRIDES] = R.string.quest_texture_element_overrides
titles[MenuTag.CONFIG_LOG] = R.string.log_submenu
titles[MenuTag.GCPAD_TYPE] = R.string.gcpad_settings
titles[MenuTag.WIIMOTE] = R.string.wiimote_settings
@@ -16,6 +16,7 @@ import androidx.core.view.WindowInsetsCompat
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout.OnRefreshListener
import com.google.android.material.appbar.AppBarLayout
import com.google.android.material.tabs.TabLayout
import org.dolphinemu.dolphinemu.BuildConfig
import org.dolphinemu.dolphinemu.NativeLibrary
import org.dolphinemu.dolphinemu.R
import org.dolphinemu.dolphinemu.adapters.PlatformPagerAdapter
@@ -131,6 +132,7 @@ class MainActivity : AppCompatActivity(), MainView, OnRefreshListener, ThemeProv
override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.menu_game_grid, menu)
this.menu = menu
menu.findItem(R.id.menu_quest_controller_presets).isVisible = BuildConfig.IS_QUEST
return true
}
@@ -16,6 +16,7 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder
import org.dolphinemu.dolphinemu.BuildConfig
import org.dolphinemu.dolphinemu.R
import org.dolphinemu.dolphinemu.activities.EmulationActivity
import org.dolphinemu.dolphinemu.dialogs.QuestControllerSetupDialog
import org.dolphinemu.dolphinemu.features.settings.model.BooleanSetting
import org.dolphinemu.dolphinemu.features.settings.ui.MenuTag
import org.dolphinemu.dolphinemu.features.sysupdate.ui.SystemMenuNotInstalledDialogFragment
@@ -167,6 +168,13 @@ class MainPresenter(private val mainView: MainView, private val activity: Fragme
true
}
R.id.menu_quest_controller_presets -> {
AfterDirectoryInitializationRunner().runWithLifecycle(
activity
) { showQuestControllerSetupDialog(activity) }
true
}
R.id.menu_install_wad -> {
AfterDirectoryInitializationRunner().runWithLifecycle(
activity
@@ -196,6 +204,14 @@ class MainPresenter(private val mainView: MainView, private val activity: Fragme
else -> false
}
private fun showQuestControllerSetupDialog(activity: ComponentActivity) {
val fragmentManager = (activity as? FragmentActivity)?.supportFragmentManager ?: return
if (fragmentManager.findFragmentByTag(QuestControllerSetupDialog.TAG) == null) {
QuestControllerSetupDialog.newInstance(false)
.show(fragmentManager, QuestControllerSetupDialog.TAG)
}
}
fun onResume() {
if (dirToAdd != null) {
GameFileCache.addGameFolder(dirToAdd!!)
@@ -0,0 +1,39 @@
// SPDX-License-Identifier: GPL-2.0-or-later
package org.dolphinemu.dolphinemu.utils
import androidx.fragment.app.FragmentActivity
import org.dolphinemu.dolphinemu.dialogs.QuestControllerSetupDialog
import org.dolphinemu.dolphinemu.features.settings.model.QuestVrSettings
import org.dolphinemu.dolphinemu.features.settings.model.Settings
object FirstLaunchDialogs {
@JvmStatic
fun checkInit(activity: FragmentActivity) {
AfterDirectoryInitializationRunner().runWithLifecycle(activity) {
if (QuestVrSettings.shouldAskAboutControllerSetup()) {
val fragmentManager = activity.supportFragmentManager
if (fragmentManager.findFragmentByTag(QuestControllerSetupDialog.TAG) == null) {
QuestControllerSetupDialog.newInstance(true).show(
fragmentManager,
QuestControllerSetupDialog.TAG
)
}
} else {
Analytics.checkAnalyticsInit(activity)
}
}
}
fun onQuestControllerSetupAnswered(activity: FragmentActivity, applyDefaults: Boolean) {
Settings().use { settings ->
settings.loadSettings()
QuestVrSettings.recordControllerSetupChoice(settings, applyDefaults)
settings.saveSettings()
}
// The Quest dialog is dismissed after its button callback returns. Queue analytics for the
// next UI pass so the two dialogs never overlap one another.
activity.window.decorView.post { Analytics.checkAnalyticsInit(activity) }
}
}
@@ -28,8 +28,8 @@ public final class StartupHandler
public static void HandleInit(FragmentActivity parent)
{
// Ask the user if he wants to enable analytics if we haven't yet.
Analytics.checkAnalyticsInit(parent);
// Show first-launch questions one at a time. Quest controller setup is offered before analytics.
FirstLaunchDialogs.checkInit(parent);
// Set up and/or sync Android TV channels
if (TvUtil.isLeanback(parent))
@@ -26,6 +26,13 @@
android:title="@string/grid_menu_open_file"
app:showAsAction="ifRoom"/>
<!-- Shown only on Quest builds; MainActivity flips the visibility. -->
<item
android:id="@+id/menu_quest_controller_presets"
android:title="@string/grid_menu_quest_controller_presets"
android:visible="false"
app:showAsAction="never"/>
<item
android:id="@+id/menu_install_wad"
android:title="@string/grid_menu_install_wad"
@@ -339,24 +339,63 @@
<item>3</item>
</integer-array>
<string-array name="questControllerPresetEntries">
<item>@string/quest_controller_preset_gamecube</item>
<item>@string/quest_controller_preset_wiimote</item>
</string-array>
<integer-array name="questControllerPresetValues">
<item>0</item>
<item>1</item>
</integer-array>
<string-array name="questOpcodeReplayEntries">
<string-array name="questFoveationLevelEntries">
<item>@string/off</item>
<item>@string/quest_opcode_replay_60_to_90</item>
<item>@string/quest_opcode_replay_30_to_90</item>
<item>@string/quest_foveation_low</item>
<item>@string/quest_foveation_medium</item>
<item>@string/quest_foveation_high</item>
</string-array>
<integer-array name="questOpcodeReplayValues">
<integer-array name="questFoveationLevelValues">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
</integer-array>
<string-array name="questForcedVbiFrequencyEntries">
<item>@string/quest_forced_vbi_auto</item>
<item>@string/off</item>
<item>@string/quest_forced_vbi_72</item>
<item>@string/quest_forced_vbi_90</item>
<item>@string/quest_forced_vbi_120</item>
</string-array>
<integer-array name="questForcedVbiFrequencyValues">
<item>-1</item>
<item>0</item>
<item>72</item>
<item>90</item>
<item>120</item>
</integer-array>
<string-array name="questReferenceSpaceModeEntries">
<item>@string/quest_reference_space_local</item>
<item>@string/quest_reference_space_stage_height</item>
<item>@string/quest_reference_space_stage</item>
</string-array>
<integer-array name="questReferenceSpaceModeValues">
<item>0</item>
<item>1</item>
<item>2</item>
</integer-array>
<string-array name="questTrackingModeEntries">
<item>@string/quest_tracking_mode_6dof</item>
<item>@string/quest_tracking_mode_3dof</item>
<item>@string/none</item>
</string-array>
<integer-array name="questTrackingModeValues">
<item>0</item>
<item>1</item>
<item>2</item>
</integer-array>
<string-array name="questPassthroughCoverageModeEntries">
<item>@string/quest_passthrough_coverage_exact</item>
<item>@string/quest_passthrough_coverage_fast</item>
</string-array>
<integer-array name="questPassthroughCoverageModeValues">
<item>0</item>
<item>1</item>
</integer-array>
<!-- Aspect Ratio Preference -->
@@ -344,6 +344,8 @@
<string name="vsync_description">This setting is unnecessary on most Android devices, because Android always enables V-Sync. If unsure, leave this unchecked.</string>
<string name="backend_multithreading">Backend Multithreading</string>
<string name="backend_multithreading_description">Enables graphics backend multithreading (Vulkan only). May affect performance. If unsure, leave this checked.</string>
<string name="command_buffers_in_flight">Command Buffers in Flight</string>
<string name="command_buffers_in_flight_description">How many command buffers the Vulkan backend keeps in flight. Each time one is submitted, Dolphin reuses the oldest and must wait for the GPU to finish it, so a shallow ring stalls whenever the GPU completes work more slowly than Dolphin queues it. Raising this can recover a lot of performance in games that submit many times per frame, and in VR. Higher values cost a little memory and let the CPU run further ahead of the GPU, which adds latency if you are GPU-bound. Vulkan only. Takes effect on next launch.</string>
<string name="prefer_vs_for_point_line_expansion">Prefer VS for Point/Line Expansion</string>
<string name="prefer_vs_for_point_line_expansion_description">On backends that support both using the geometry shader and the vertex shader for expanding points and lines, selects the vertex shader for the job. May affect performance.</string>
<string name="cpu_cull">Cull Vertices on the CPU</string>
@@ -486,6 +488,7 @@
<string name="grid_menu_grid_options">Grid Options</string>
<string name="grid_menu_refresh">Refresh Library</string>
<string name="grid_menu_open_file">Open File</string>
<string name="grid_menu_quest_controller_presets">Apply Quest Controller Presets</string>
<string name="grid_menu_install_wad">Install WAD</string>
<string name="grid_menu_import_wii_save">Import Wii Save</string>
<string name="grid_menu_import_nand_backup">Import BootMii NAND Backup</string>
@@ -786,48 +789,80 @@ It can efficiently compress both junk data and encrypted Wii data.
<string name="stereoscopy_openxr">OpenXR</string>
<string name="openxr_submenu">OpenXR</string>
<string name="quest_vr_settings">Quest VR</string>
<string name="quest_vr_presets">Controller Presets</string>
<string name="quest_vr_runtime">Runtime</string>
<string name="quest_vr_virtual_screen">Virtual Screen</string>
<string name="quest_vr_groups">Settings Groups</string>
<string name="quest_vr_camera">Camera</string>
<string name="quest_vr_rendering">Rendering</string>
<string name="quest_vr_framerate">Framerate</string>
<string name="quest_vr_hacks">VR Hacks</string>
<string name="quest_vr_passthrough">Passthrough</string>
<string name="quest_vr_debug">Comfort and Debug</string>
<string name="quest_enable_openxr">Enable OpenXR on Quest</string>
<string name="quest_enable_openxr_description">Allows Quest launches to switch Dolphin into the OpenXR renderer.</string>
<string name="quest_launch_in_vr">Launch games in VR</string>
<string name="quest_launch_in_vr_description">Starts emulation in the headset instead of keeping games on the 2D Android surface.</string>
<string name="quest_launch_in_vr_description">On: renders games in stereoscopic 3D VR. Off: shows the game on a flat screen in the headset (requires Enable OpenXR).</string>
<string name="quest_recenter_on_launch">Recenter on launch</string>
<string name="quest_recenter_on_launch_description">Recenters the active OpenXR view as soon as emulation starts.</string>
<string name="quest_force_immediately_present_xfb">Force Immediately Present XFB</string>
<string name="quest_force_immediately_present_xfb_description">Keeps Immediately Present XFB enabled while OpenXR is active for lower latency head tracking.</string>
<string name="quest_force_vbi_from_hmd">Force VBI frequency to 90 Hz in VR</string>
<string name="quest_force_vbi_from_hmd_description">Overrides Dolphin\'s VBI frequency while OpenXR is active to better match a 90 Hz headset.</string>
<string name="quest_forced_vbi_frequency">Forced VBI Frequency</string>
<string name="quest_forced_vbi_frequency_description">Forces Dolphin\'s VBI frequency to a fixed rate while OpenXR is active, overriding the Advanced tab\'s VBI percentage. Auto samples the headset refresh rate once at session startup.</string>
<string name="quest_forced_vbi_auto">Auto</string>
<string name="quest_forced_vbi_72">72 Hz</string>
<string name="quest_forced_vbi_90">90 Hz</string>
<string name="quest_forced_vbi_120">120 Hz</string>
<string name="quest_eager_heartbeat">Eager Frame Heartbeat</string>
<string name="quest_eager_heartbeat_description">Resubmits the last frame every headset refresh so every slot is filled when the game renders slower than the display. Recommended on Quest, which has no runtime motion smoothing of its own. Can be toggled while a game is running.</string>
<string name="quest_reference_space_mode">Default VR Position</string>
<string name="quest_reference_space_mode_description">Chooses how the default VR position is set when OpenXR starts. LOCAL sets home from the initial headset position. STAGE uses the play-space origin. Falls back to LOCAL if STAGE is unavailable. Takes effect on next launch.</string>
<string name="quest_reference_space_local">LOCAL</string>
<string name="quest_reference_space_stage_height">STAGE + Height</string>
<string name="quest_reference_space_stage">STAGE</string>
<string name="quest_tracking_mode">Tracking Mode</string>
<string name="quest_tracking_mode_description">Chooses how headset tracking affects the VR camera. 6DoF uses full rotation and position. 3DoF uses rotation only. None disables both.</string>
<string name="quest_tracking_mode_6dof">6DoF</string>
<string name="quest_tracking_mode_3dof">3DoF</string>
<string name="quest_cpu_level_5_hint">Request Quest CPU level 5</string>
<string name="quest_cpu_level_5_hint_description">Requests sustained-high OpenXR performance while VR is active. Quest 3/3S may use CPU level 5 with the CPU/GPU trade hint, but the OS can still limit clocks.</string>
<string name="quest_units_per_meter">Units Per Meter</string>
<string name="quest_units_per_meter_description">Sets how many game world units correspond to one real-world meter. Higher values make the world feel smaller, while lower values make it feel larger.</string>
<string name="quest_enable_lean_back_angle">Enable Lean Back Angle</string>
<string name="quest_enable_lean_back_angle_description">When off, ignores the Lean Back Angle value below and applies no pitch offset.</string>
<string name="quest_lean_back_angle">Lean Back Angle</string>
<string name="quest_lean_back_angle_description">Applies a constant pitch offset to the VR camera to compensate for games that feel tilted.</string>
<string name="quest_enable_camera_forward">Enable Camera Forward</string>
<string name="quest_enable_camera_forward_description">When off, ignores the Camera Forward value below and applies no forward/backward offset.</string>
<string name="quest_camera_forward">Camera Forward</string>
<string name="quest_camera_forward_description">Applies a constant forward or backward offset to the VR camera.</string>
<string name="quest_enable_camera_height">Enable Camera Height</string>
<string name="quest_enable_camera_height_description">When off, ignores the Camera Height value below and applies no vertical offset.</string>
<string name="quest_camera_height">Camera Height</string>
<string name="quest_camera_height_description">Applies a constant vertical offset to the VR camera.</string>
<string name="quest_opcode_replay">Opcode Replay</string>
<string name="quest_opcode_replay_description">Submits synthetic OpenXR frames between real emulation frames to better match headset cadence.</string>
<string name="quest_opcode_replay_60_to_90">60 to 90</string>
<string name="quest_opcode_replay_30_to_90">30 to 90</string>
<string name="quest_enable_camera_anchor">Camera Anchor</string>
<string name="quest_enable_camera_anchor_description">Lets a "Camera Anchor" Elements Group Override move the VR camera to a game element\'s position, e.g. a character\'s head for first-person view. When no anchor override matches, the camera stays at the default position.</string>
<string name="quest_camera_anchor_smoothing">Camera Anchor Smoothing</string>
<string name="quest_camera_anchor_smoothing_description">How much the anchored camera resists the element\'s movement each frame. 0 follows the element rigidly and transmits every animation bob; higher values smooth the motion for comfort.</string>
<string name="quest_enable_controller_anchor">Controller Anchor</string>
<string name="quest_enable_controller_anchor_description">Lets "Controller Anchor" Elements Group Overrides reposition game elements onto a VR controller, e.g. a sword on the right hand. When no override matches, elements render where the game put them.</string>
<string name="quest_left_handed_wiimote">Left-handed Wii Remote</string>
<string name="quest_left_handed_wiimote_description">Uses the left Quest controller as the primary OpenXR Wii Remote hand.</string>
<string name="quest_show_mirror_surface">Show 2D mirror surface</string>
<string name="quest_show_mirror_surface_description">Keeps the Android surface visible while OpenXR is active for debugging and capture.</string>
<string name="quest_show_perf_hud">Show performance HUD</string>
<string name="quest_show_perf_hud_description">Displays Dolphin frame rate statistics in the headset mirror.</string>
<string name="quest_detect_skybox">Detect Skybox</string>
<string name="quest_detect_skybox_description">Treats objects drawn at the camera origin as skyboxes and locks them to head rotation only, so the sky renders at infinity instead of appearing too close. Disable if it incorrectly affects non-sky geometry.</string>
<string name="quest_passthrough">Enable passthrough</string>
<string name="quest_passthrough_description">Submits the OpenXR layer with transparent background so headset passthrough can show through empty regions.</string>
<string name="quest_passthrough_debug">Passthrough debug tint</string>
<string name="quest_passthrough_debug_description">Uses a solid debug clear color to make passthrough masking issues obvious.</string>
<string name="quest_ar_background_alpha">AR Background Alpha</string>
<string name="quest_ar_background_alpha_description">Controls the alpha used for the OpenXR background when passthrough composition is active.</string>
<string name="quest_lock_head_pose">Lock head pose per frame</string>
<string name="quest_lock_head_pose_description">Keeps pose updates aligned with emulation frame boundaries for more stable stereo output.</string>
<string name="quest_passthrough_description">Shows the headset camera feed wherever the game renders nothing, using a dedicated coverage buffer that leaves game rendering untouched (XR_FB_passthrough).</string>
<string name="quest_passthrough_reveal_unrendered">Reveal unrendered areas</string>
<string name="quest_passthrough_reveal_unrendered_description">Reveals EFB regions no game draw or clear touched. Disable to keep the scene opaque and use only Passthrough element overrides.</string>
<string name="quest_passthrough_remove_black_clears">Remove black EFB clears</string>
<string name="quest_passthrough_remove_black_clears_description">Treats near-black EFB color clears as unrendered so menus and skyless scenes reveal the camera feed. Colored clears stay opaque.</string>
<string name="quest_passthrough_scene_opacity">Scene opacity</string>
<string name="quest_passthrough_scene_opacity_description">Blends the whole rendered scene over the camera feed. 1.0 = fully opaque game, lower values fade everything toward the real world.</string>
<string name="quest_passthrough_coverage_mode">Coverage Mode</string>
<string name="quest_passthrough_coverage_mode_description">Exact preserves game blending and logic operations by using a coverage prepass when a draw cannot safely write the coverage buffer. Fast may disable dual-source blending where required.</string>
<string name="quest_passthrough_coverage_exact">Exact</string>
<string name="quest_passthrough_coverage_fast">Fast</string>
<string name="quest_vr_gamma">VR Gamma</string>
<string name="quest_vr_gamma_description">Adjusts gamma correction for the OpenXR eye output.</string>
<string name="quest_virtual_screen">Virtual Screen for 2D Content</string>
@@ -838,28 +873,46 @@ It can efficiently compress both junk data and encrypted Wii data.
<string name="quest_screen_size_description">Controls the size of the virtual screen used for 2D content.</string>
<string name="quest_head_locked_curvature">Head Locked Curvature</string>
<string name="quest_head_locked_curvature_description">Curves head-locked virtual screens so they wrap more around the viewer.</string>
<string name="quest_auto_layer_spread">Auto Layer Spread</string>
<string name="quest_auto_layer_spread_description">Automatically spreads 2D elements across depth layers to reduce Z-fighting.</string>
<string name="quest_layer_offset">Layer Offset</string>
<string name="quest_layer_offset_description">Controls the depth separation between consecutive 2D layers on the virtual screen.</string>
<string name="quest_element_depth">Element Depth</string>
<string name="quest_element_depth_description">Controls the depth range within individual 2D elements on the virtual screen.</string>
<string name="quest_controller_preset">Default controller preset</string>
<string name="quest_controller_preset_description">Selects which stock Quest controller mapping Dolphin reapplies before launch.</string>
<string name="quest_controller_preset_gamecube">GameCube pad</string>
<string name="quest_controller_preset_wiimote">Wii Remote</string>
<string name="quest_apply_controller_preset">Apply selected preset now</string>
<string name="quest_apply_controller_preset_description">Loads the selected Quest controller profile immediately.</string>
<string name="quest_controller_preset_applied">Quest controller preset applied.</string>
<string name="quest_apply_recommended_defaults">Apply recommended Quest defaults</string>
<string name="quest_apply_recommended_defaults_description">Forces Vulkan, conservative rendering defaults, and Quest-safe VR options.</string>
<string name="quest_recommended_defaults_applied">Quest defaults applied.</string>
<string name="quest_exact_screen_depth">Exact Screen Depth</string>
<string name="quest_exact_screen_depth_description">Writes the game\'s original depth values on the 2D Virtual Screen, eliminating Z-fighting between menu elements.</string>
<string name="quest_auto_native_efb_effects">Auto-Exclude EFB Effects</string>
<string name="quest_auto_native_efb_effects_description">Keeps full-screen EFB effects (bloom, motion blur, heat distortion) off the 2D Virtual Screen by rendering them natively over each eye. Disable if a game\'s genuine 2D element is misdetected and leaves the screen.</string>
<string name="quest_hud_thickness">Screen Depth</string>
<string name="quest_hud_thickness_description">Gives 2D HUD and menu layers real 3D depth by spreading their elements across this much world-space thickness instead of drawing them flat on a single plane. Set to 0 for a completely flat HUD.</string>
<string name="quest_controller_preset_applied">Quest controller presets applied.</string>
<string name="quest_controller_setup_title">Set up Quest controllers?</string>
<string name="quest_controller_setup_description">Would you like to apply the default Quest controller presets for Wii and GameCube?\n\nThis sets GameCube Controller 1, Wii Remote 1, and Hotkeys to use OpenXR. You can customize the VR controls later with the Configure in VR button, which opens an OpenXR session so Dolphin can register the controller inputs.</string>
<string name="quest_reset_openxr_settings">Reset OpenXR Settings</string>
<string name="quest_reset_openxr_settings_description">Restores every setting on this screen to its default value. Graphics backend, resolution, and controller mappings are left alone.</string>
<string name="quest_reset_openxr_settings_confirmation">Reset all OpenXR settings to their defaults?</string>
<string name="quest_openxr_settings_reset">OpenXR settings reset.</string>
<string name="quest_remove_cinematic_bars">Remove Cinematic Bars</string>
<string name="quest_remove_cinematic_bars_description">Expands perspective rendering to remove cinematic letterbox bars while in VR.</string>
<string name="quest_frame_size_from_xfb">Frame Size from XFB Copy</string>
<string name="quest_frame_size_from_xfb_description">Matches the composed scene to the EFB-to-XFB display copy without changing the game\'s EFB viewport. Preserves Metroid Prime Trilogy blur/visor effects and corrects Mario Golf\'s 480-line scene to 448-line display mismatch.</string>
<string name="quest_small_viewports_on_screen">Small 3D Viewports on Screen</string>
<string name="quest_small_viewports_on_screen_description">Draws 3D models rendered into small menu panes (e.g. the Mario Kart: Double Dash!! character select boxes) on the 2D virtual screen instead of head-tracking them, so they stop swaying and stretching when you move your head.</string>
<string name="quest_detect_render_targets">Detect Render-to-Texture Viewports</string>
<string name="quest_detect_render_targets_description">Excludes square render-to-texture passes (shadow and environment maps) from VR reprojection so their output textures don\'t bake in the head pose. Experimental.</string>
<string name="quest_ortho_scissor_fix">Ortho Scissor Fix</string>
<string name="quest_ortho_scissor_fix_description">Expands the scissor to the full active rendering area for orthographic VR draws, fixing 2D content reprojected onto the virtual screen that still uses game-side EFB scissor coordinates.</string>
<string name="quest_layered_palette_conversion">Layered Palette Conversion Path</string>
<string name="quest_layered_palette_conversion_description">Keeps Metroid Prime\'s thermal visor EFB copy stereo during palette conversion instead of flattening it to one eye. Only affects thermal-sized stereo EFB copies.</string>
<string name="quest_use_vulkan_multiview">Vulkan Multiview (Quest perf)</string>
<string name="quest_use_vulkan_multiview_description">Renders both eyes in a single pass via VK_KHR_multiview. Disable to fall back to the geometry-shader stereo path if the multiview path produces broken visuals.</string>
<string name="quest_resolution_scale">VR Resolution Scale</string>
<string name="quest_resolution_scale_description">Scales the OpenXR eye buffers relative to the headset\'s recommended resolution. Lower values recover GPU headroom with a small sharpness cost; 0.85 is the recommended Quest default. Takes effect on next launch.</string>
<string name="quest_foveation_level">Foveated Rendering</string>
<string name="quest_foveation_level_description">Renders the edges of each eye at reduced resolution to save GPU time (XR_FB_foveation). Higher levels save more but blur the periphery. Takes effect on next launch.</string>
<string name="quest_dynamic_foveation">Dynamic Foveation</string>
<string name="quest_dynamic_foveation_description">Lets the runtime lower the foveation level automatically when the GPU has headroom, keeping the image sharp in light scenes.</string>
<string name="quest_foveate_efb">Foveate Game Render (EFB)</string>
<string name="quest_foveate_efb_description">Applies foveation to the game\'s own render pass, not just the final eye buffers. Helps games with long uninterrupted render passes, but HURTS games that interrupt rendering with many EFB copies per frame (e.g. Mario Kart Wii\'s bloom) — it forces the GPU out of direct rendering mode. Leave off unless a specific game benefits. Takes effect on next launch.</string>
<string name="quest_foveation_low">Low</string>
<string name="quest_foveation_medium">Medium</string>
<string name="quest_foveation_high">High</string>
<string name="quest_android_direct_to_hmd">Android direct-to-HMD</string>
<string name="quest_android_direct_to_hmd_description">Skips the normal Android backbuffer present and submits the XFB directly to OpenXR. Faster in some scenes, but can freeze or black-screen games that stop producing XFB frames during transitions.</string>
<string name="quest_android_direct_to_hmd_description">Skips the normal Android backbuffer present and submits the XFB straight to the OpenXR swapchain, saving a full-screen copy and a present per frame. Leave on.</string>
<string name="quest_clear_efb_copies">Clear EFB Copies</string>
<string name="quest_clear_efb_copies_description">Clears large EFB copy textures to transparent at or above the selected native width. Set 0 to disable.</string>
<string name="quest_dont_clear_screen">Don\'t Clear Screen</string>
@@ -868,8 +921,6 @@ It can efficiently compress both junk data and encrypted Wii data.
<string name="quest_disable_cpu_culling_description">Disables Dolphin\'s CPU-side primitive culling while OpenXR is active.</string>
<string name="quest_load_custom_shaders">Load Custom Shaders</string>
<string name="quest_load_custom_shaders_description">Loads custom shader replacements from the game\'s shader override directory.</string>
<string name="quest_enable_openxr_config_scene">Enable OpenXR Config Scene</string>
<string name="quest_enable_openxr_config_scene_description">Starts a temporary OpenXR scene while configuring controller bindings outside emulation.</string>
<string name="quest_recenter_now">Recenter VR view now</string>
<string name="quest_recenter_now_description">Requests an OpenXR recenter while emulation is running.</string>
<string name="quest_vr_config">VR Config</string>
@@ -881,6 +932,8 @@ It can efficiently compress both junk data and encrypted Wii data.
<string name="quest_shader_overrides_description">Enable or disable stored Shader Overrides for this game.</string>
<string name="quest_elements_group_overrides">Elements Group Overrides</string>
<string name="quest_elements_group_overrides_description">Enable or disable stored Elements Group Overrides for this game.</string>
<string name="quest_texture_element_overrides">Texture Element Overrides</string>
<string name="quest_texture_element_overrides_description">Enable or disable stored Texture Element Overrides for this game.</string>
<string name="quest_no_stored_overrides">No stored overrides found for this game.</string>
<!-- Aspect Ratio Preference -->
@@ -919,6 +972,9 @@ It can efficiently compress both junk data and encrypted Wii data.
<string name="wiimote_disabled">None</string>
<string name="wiimote_emulated">Emulated Wii Remote</string>
<string name="wiimote_openxr">OpenXR Wii Remote</string>
<string name="openxr_controller_mapper">Configure in VR</string>
<string name="openxr_controller_mapper_description">Open an immersive controller binding wizard. Emulation must be stopped.</string>
<string name="openxr_controller_mapper_applied">OpenXR controller bindings applied.</string>
<string name="wiimote_real">Real Wii Remote (DolphinBar required)</string>
<!-- Hotkeys -->
@@ -20,6 +20,11 @@
<uses-feature
android:name="android.software.xr.api.openxr"
android:required="true" />
<!-- Required for XR_FB_passthrough: without this flag the OS keeps the app
passthrough-disabled and xrCreatePassthroughFB/passthrough layers do nothing. -->
<uses-feature
android:name="com.oculus.feature.PASSTHROUGH"
android:required="false" />
<application>
<uses-native-library
@@ -52,6 +57,23 @@
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".activities.OpenXRControllerMapperActivity"
android:theme="@style/Theme.Dolphin.EmulationVR"
android:taskAffinity="${applicationId}.openxr_mapper"
android:launchMode="singleTask"
android:resizeableActivity="false"
android:exported="true">
<property
android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE"
android:value="XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="com.oculus.intent.category.VR" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
+159 -7
View File
@@ -20,9 +20,9 @@
#include "Common/Assert.h"
#include "Common/CPUDetect.h"
#include "Common/Config/Config.h"
#include "Common/CommonPaths.h"
#include "Common/CommonTypes.h"
#include "Common/Config/Config.h"
#include "Common/Event.h"
#include "Common/FileUtil.h"
#include "Common/Flag.h"
@@ -43,8 +43,10 @@
#include "Core/Core.h"
#include "Core/DolphinAnalytics.h"
#include "Core/HW/DVD/DVDInterface.h"
#include "Core/HW/GCPad.h"
#include "Core/HW/Wiimote.h"
#include "Core/HW/WiimoteReal/WiimoteReal.h"
#include "Core/HotkeyManager.h"
#include "Core/Host.h"
#include "Core/PowerPC/JitInterface.h"
#include "Core/PowerPC/PowerPC.h"
@@ -57,7 +59,11 @@
#include "DiscIO/ScrubbedBlob.h"
#include "DiscIO/Volume.h"
#include "InputCommon/ControlReference/ControlReference.h"
#include "InputCommon/ControllerEmu/ControllerEmu.h"
#include "InputCommon/ControllerInterface/ControllerInterface.h"
#include "InputCommon/GCAdapter.h"
#include "InputCommon/InputConfig.h"
#include "UICommon/GameFile.h"
#include "UICommon/UICommon.h"
@@ -67,6 +73,9 @@
#include "VideoCommon/VideoBackendBase.h"
#ifdef ENABLE_VR
#include "VideoCommon/VR/OpenXRManager.h"
#if defined(HAS_VULKAN)
#include "VideoCommon/VR/OpenXRUtilitySession.h"
#endif
#endif
#include "jni/AndroidCommon/AndroidCommon.h"
@@ -97,6 +106,12 @@ bool s_need_nonblocking_alert_msg;
Common::Flag s_is_booting;
bool s_game_metadata_is_valid = false;
#if defined(ENABLE_VR) && defined(HAS_VULKAN)
std::mutex s_openxr_mapper_mutex;
std::unique_ptr<VR::OpenXRUtilitySession> s_openxr_mapper;
bool s_openxr_mapper_owns_android_app_info = false;
#endif
} // Anonymous namespace
void UpdatePointer()
@@ -273,8 +288,8 @@ JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_StopEmulatio
s_update_main_frame_event.Set();
}
JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_RequestOpenXRRecenter(
JNIEnv*, jclass)
JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_RequestOpenXRRecenter(JNIEnv*,
jclass)
{
#ifdef ENABLE_VR
HostThreadLock guard;
@@ -283,6 +298,143 @@ JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_RequestOpenX
#endif
}
JNIEXPORT jboolean JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_StartOpenXRControllerMapper(
JNIEnv* env, jclass, jobject activity, jint controller_port, jint target_type)
{
#if defined(ENABLE_VR) && defined(HAS_VULKAN)
std::lock_guard lock(s_openxr_mapper_mutex);
if (s_openxr_mapper)
return JNI_FALSE;
VR::OpenXRUtilitySessionTargetType target;
switch (target_type)
{
case 0:
target = VR::OpenXRUtilitySessionTargetType::WiiRemote;
break;
case 1:
target = VR::OpenXRUtilitySessionTargetType::GameCubeController;
break;
case 2:
target = VR::OpenXRUtilitySessionTargetType::Hotkeys;
break;
default:
return JNI_FALSE;
}
s_openxr_mapper = std::make_unique<VR::OpenXRUtilitySession>();
const VR::OpenXRUtilitySessionTarget mapper_target{target, controller_port};
if (controller_port < 0 || controller_port >= 4 ||
Core::GetState(Core::System::GetInstance()) != Core::State::Uninitialized || VR::g_openxr)
{
return static_cast<jboolean>(s_openxr_mapper->Start(mapper_target));
}
JavaVM* vm = nullptr;
env->GetJavaVM(&vm);
VR::OpenXRManager::SetAndroidAppInfo(vm, env, activity);
s_openxr_mapper_owns_android_app_info = true;
return static_cast<jboolean>(s_openxr_mapper->Start(mapper_target));
#else
return JNI_FALSE;
#endif
}
JNIEXPORT jint JNICALL
Java_org_dolphinemu_dolphinemu_NativeLibrary_GetOpenXRControllerMapperState(JNIEnv*, jclass)
{
#if defined(ENABLE_VR) && defined(HAS_VULKAN)
std::lock_guard lock(s_openxr_mapper_mutex);
return s_openxr_mapper ? static_cast<jint>(s_openxr_mapper->GetState()) : 0;
#else
return 7;
#endif
}
JNIEXPORT jstring JNICALL
Java_org_dolphinemu_dolphinemu_NativeLibrary_GetOpenXRControllerMapperFailure(JNIEnv* env, jclass)
{
#if defined(ENABLE_VR) && defined(HAS_VULKAN)
std::lock_guard lock(s_openxr_mapper_mutex);
return ToJString(env, s_openxr_mapper ? s_openxr_mapper->GetFailureMessage() :
"The OpenXR controller mapper is not running.");
#else
return ToJString(env, "This build does not include OpenXR support.");
#endif
}
JNIEXPORT jboolean JNICALL
Java_org_dolphinemu_dolphinemu_NativeLibrary_ApplyOpenXRControllerMapper(JNIEnv*, jclass)
{
#if defined(ENABLE_VR) && defined(HAS_VULKAN)
std::lock_guard lock(s_openxr_mapper_mutex);
if (!s_openxr_mapper ||
s_openxr_mapper->GetState() != VR::OpenXRUtilitySessionState::ApplyPending)
{
return JNI_FALSE;
}
VR::OpenXRPendingBindings pending = s_openxr_mapper->TakePendingBindings();
InputConfig* config = nullptr;
switch (pending.target.type)
{
case VR::OpenXRUtilitySessionTargetType::WiiRemote:
config = Wiimote::GetConfig();
break;
case VR::OpenXRUtilitySessionTargetType::GameCubeController:
config = Pad::GetConfig();
break;
case VR::OpenXRUtilitySessionTargetType::Hotkeys:
config = HotkeyManagerEmu::GetConfig();
break;
default:
return JNI_FALSE;
}
auto* controller = config && pending.target.port >= 0 &&
pending.target.port < config->GetControllerCount() ?
config->GetController(pending.target.port) :
nullptr;
if (!controller)
return JNI_FALSE;
{
const auto controller_lock = controller->GetStateLock();
ciface::Core::DeviceQualifier device;
device.FromString(pending.default_device);
controller->SetDefaultDevice(device);
for (auto& binding : pending.bindings)
{
if (binding.reference)
binding.reference->SetExpression(std::move(binding.expression));
}
controller->UpdateReferences(g_controller_interface);
config->SaveConfig();
}
s_openxr_mapper->MarkApplied();
return JNI_TRUE;
#else
return JNI_FALSE;
#endif
}
JNIEXPORT void JNICALL
Java_org_dolphinemu_dolphinemu_NativeLibrary_StopOpenXRControllerMapper(JNIEnv* env, jclass)
{
#if defined(ENABLE_VR) && defined(HAS_VULKAN)
std::lock_guard lock(s_openxr_mapper_mutex);
if (s_openxr_mapper)
{
s_openxr_mapper->Stop();
s_openxr_mapper.reset();
}
if (s_openxr_mapper_owns_android_app_info)
{
VR::OpenXRManager::ClearAndroidAppInfo(env);
s_openxr_mapper_owns_android_app_info = false;
}
#endif
}
JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_SetIsBooting(JNIEnv*, jclass)
{
s_is_booting.Set();
@@ -609,9 +761,8 @@ static float GetRenderSurfaceScale(JNIEnv* env)
static jobject GetEmulationActivity(JNIEnv* env)
{
jclass native_library_class = env->FindClass(NATIVE_LIBRARY_CLASS);
jmethodID get_emulation_activity =
env->GetStaticMethodID(native_library_class, GET_EMULATION_ACTIVITY_METHOD,
GET_EMULATION_ACTIVITY_SIG);
jmethodID get_emulation_activity = env->GetStaticMethodID(
native_library_class, GET_EMULATION_ACTIVITY_METHOD, GET_EMULATION_ACTIVITY_SIG);
jobject activity = env->CallStaticObjectMethod(native_library_class, get_emulation_activity);
env->DeleteLocalRef(native_library_class);
return activity;
@@ -671,7 +822,8 @@ static void Run(JNIEnv* env, std::unique_ptr<BootParameters>&& boot, bool riivol
// Start the hotkey dispatcher once boot has settled. Reads HotkeyManagerEmu and dispatches
// bound actions (pause, save state, VR adjustments, etc.) on a low-priority background
// thread. Stopped below before Core::Shutdown so it never reads a torn-down ControllerInterface.
// thread. Stopped below before Core::Shutdown so it never reads a torn-down
// ControllerInterface.
s_hotkey_dispatcher.Start([] { s_update_main_frame_event.Set(); });
}
+14
View File
@@ -21,11 +21,25 @@ public:
OpenGLES
};
// Identifies the platform implementation behind this context, so consumers that
// need native handles (e.g. OpenXR graphics bindings) can downcast safely.
enum class NativeContextType
{
Unknown,
WGL,
GLX,
EGL,
AGL,
BGL
};
virtual ~GLContext();
Mode GetMode() const { return m_opengl_mode; }
bool IsGLES() const { return m_opengl_mode == Mode::OpenGLES; }
virtual NativeContextType GetNativeContextType() const { return NativeContextType::Unknown; }
u32 GetBackBufferWidth() const { return m_backbuffer_width; }
u32 GetBackBufferHeight() const { return m_backbuffer_height; }
+9 -7
View File
@@ -175,7 +175,7 @@ bool GLContextEGL::Initialize(const WindowSystemInfo& wsi, bool stereo, bool cor
EGL_BLUE_SIZE,
8,
EGL_SURFACE_TYPE,
IsHeadless() ? 0 : EGL_WINDOW_BIT,
IsHeadless() ? EGL_PBUFFER_BIT : EGL_WINDOW_BIT,
EGL_NONE};
std::vector<EGLint> ctx_attribs;
@@ -310,10 +310,14 @@ bool GLContextEGL::CreateWindowSurface()
m_backbuffer_width = static_cast<int>(surface_width);
m_backbuffer_height = static_cast<int>(surface_height);
}
else if (!m_supports_surfaceless)
else
{
// Always use a pbuffer for headless contexts, even when surfaceless contexts are
// supported: Meta's GLES OpenXR runtime requires the app's context to be current
// on a real (non-window) surface — with EGL_NO_SURFACE the session never receives
// any state events. This mirrors the "tiny surface" from Meta's GLES samples.
EGLint attrib_list[] = {
EGL_NONE,
EGL_WIDTH, 1280, EGL_HEIGHT, 720, EGL_NONE,
};
m_egl_surface = eglCreatePbufferSurface(m_egl_display, m_config, attrib_list);
if (!m_egl_surface)
@@ -321,10 +325,8 @@ bool GLContextEGL::CreateWindowSurface()
INFO_LOG_FMT(VIDEO, "Error: eglCreatePbufferSurface failed");
return false;
}
}
else
{
m_egl_surface = EGL_NO_SURFACE;
m_backbuffer_width = 1280;
m_backbuffer_height = 720;
}
return true;
}
+5
View File
@@ -17,6 +17,11 @@ public:
bool IsHeadless() const override;
NativeContextType GetNativeContextType() const override { return NativeContextType::EGL; }
EGLDisplay GetEGLDisplay() const { return m_egl_display; }
EGLConfig GetEGLConfig() const { return m_config; }
EGLContext GetEGLContext() const { return m_egl_context; }
std::unique_ptr<GLContext> CreateSharedContext() override;
bool MakeCurrent() override;
+6
View File
@@ -19,6 +19,12 @@ public:
bool IsHeadless() const override;
NativeContextType GetNativeContextType() const override { return NativeContextType::GLX; }
Display* GetDisplay() const { return m_display; }
GLXFBConfig GetFBConfig() const { return m_fbconfig; }
GLXDrawable GetDrawable() const { return m_drawable; }
GLXContext GetContext() const { return m_context; }
std::unique_ptr<GLContext> CreateSharedContext() override;
bool MakeCurrent() override;
+4
View File
@@ -14,6 +14,10 @@ public:
bool IsHeadless() const override;
NativeContextType GetNativeContextType() const override { return NativeContextType::WGL; }
HDC GetDCHandle() const { return m_dc; }
HGLRC GetRCHandle() const { return m_rc; }
std::unique_ptr<GLContext> CreateSharedContext() override;
bool MakeCurrent() override;
+97
View File
@@ -11,6 +11,15 @@
#include <unistd.h>
#endif
#if defined(ANDROID)
#include <sched.h>
#include <algorithm>
#include <cstdio>
#include <mutex>
#include <utility>
#include <vector>
#endif
#ifdef __APPLE__
#include <mach/mach.h>
#elif defined BSD4_4 || defined __FreeBSD__ || defined __OpenBSD__
@@ -187,6 +196,94 @@ void SetCurrentThreadName(const char* name)
#endif
}
#endif // !WIN32
#if defined(ANDROID)
namespace
{
// Indices of the device's fastest CPU cores (all cores sharing the top cpufreq tier),
// in ascending order. Detected once. On Quest 3 this is {2,3,4,5}; cpu0/1 are the
// slower cores. The app runs as top-app so it may use all of them.
std::vector<int> s_performance_cores;
std::once_flag s_performance_cores_once;
void DetectPerformanceCores()
{
std::vector<std::pair<int, long>> cores; // (cpu index, max frequency)
long top_freq = 0;
for (int cpu = 0; cpu < 64; ++cpu)
{
char path[128];
std::snprintf(path, sizeof(path), "/sys/devices/system/cpu/cpu%d/cpufreq/cpuinfo_max_freq",
cpu);
FILE* file = std::fopen(path, "r");
if (!file)
break; // CPU nodes are contiguous; the first missing one marks the end.
long freq = 0;
if (std::fscanf(file, "%ld", &freq) == 1 && freq > 0)
{
cores.emplace_back(cpu, freq);
top_freq = std::max(top_freq, freq);
}
std::fclose(file);
}
for (const auto& [index, freq] : cores)
{
if (freq == top_freq)
s_performance_cores.push_back(index);
}
}
} // namespace
int PinCurrentThreadToPerformanceCore(ThreadCoreRole role)
{
std::call_once(s_performance_cores_once, DetectPerformanceCores);
if (s_performance_cores.empty())
return -1;
// Hand out distinct cores from the fast tier, top-down (highest core index is usually
// the turbo/prime core). EmuCPU gets the fastest, then EmuVideo, then the VR helpers.
// If there are fewer fast cores than roles, later roles share (wrap).
int slot = 0;
switch (role)
{
case ThreadCoreRole::EmuCPU:
slot = 0;
break;
case ThreadCoreRole::EmuVideo:
slot = 1;
break;
case ThreadCoreRole::VRPacing:
case ThreadCoreRole::VRSubmit:
// Meta's runtime confines RendererWorker-registered threads to a cpuset (on Quest 3,
// {3,4,5}); a pin outside it silently fails. Both light VR workers therefore share the
// 3rd fast core — inside that set, and off the EmuCPU/EmuVideo cores (top two).
slot = 2;
break;
}
const int count = static_cast<int>(s_performance_cores.size());
const int core = s_performance_cores[count - 1 - (slot % count)];
cpu_set_t set;
CPU_ZERO(&set);
CPU_SET(core, &set);
if (sched_setaffinity(0, sizeof(set), &set) != 0)
return -1;
return core;
}
#else
int PinCurrentThreadToPerformanceCore(ThreadCoreRole /*role*/)
{
return -1;
}
#endif // ANDROID
#ifndef _WIN32
std::tuple<void*, size_t> GetCurrentThreadStack()
{
void* stack_addr;
+16
View File
@@ -26,6 +26,22 @@ int CurrentThreadId();
void SetThreadAffinity(std::thread::native_handle_type thread, u32 mask);
void SetCurrentThreadAffinity(u32 mask);
// The hottest emulator threads, for big.LITTLE performance-core pinning.
enum class ThreadCoreRole
{
EmuCPU, // PowerPC JIT ("CPU thread") — serial, latency-critical: dedicated fast core
EmuVideo, // FIFO/GPU-submit ("Video thread"): its own fast core, no contention with EmuCPU
VRPacing, // OpenXR frame-pacing thread
VRSubmit, // Vulkan async command-submit worker
};
// Android only: pin the calling thread to one of the device's performance (highest
// max-frequency) cores, chosen per role so these threads land on distinct fast cores
// and don't migrate across the big.LITTLE boundary. Cores are classified from
// cpufreq at runtime (correct on any Quest). Returns the pinned CPU index, or -1 if
// unavailable (non-Android, topology unreadable, or the syscall failed).
int PinCurrentThreadToPerformanceCore(ThreadCoreRole role);
void SleepCurrentThread(int ms);
void SwitchCurrentThread(); // On Linux, this is equal to sleep 1ms
+185
View File
@@ -0,0 +1,185 @@
// Copyright 2026 Dolphin Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#ifdef ENABLE_VR
#include <array>
#include <cstdint>
#include <mutex>
#include <string>
namespace Common::VR
{
struct OpenXRPoseState
{
bool valid = false;
std::array<float, 3> position{};
std::array<float, 4> orientation{0.0f, 0.0f, 0.0f, 1.0f};
};
struct OpenXRVelocityState
{
bool linear_valid = false;
bool angular_valid = false;
std::array<float, 3> linear{};
std::array<float, 3> angular{};
};
// Where the controller's aim ray intersects the VR virtual screen (the ortho 2D screen in
// immersive mode, or the flat panel quad in flat-screen mode). Computed by OpenXRManager on
// the frame thread with the exact same transform chain the renderer uses to place the screen,
// so u/v are an absolute "what the user is aiming at" — the Wii IR pointer maps to it 1:1.
struct OpenXRScreenHit
{
bool valid = false; // Aim ray hits the screen plane in front of the controller
float u = 0.0f; // -1..+1 across the screen width, +right (may exceed ±1 off-screen)
float v = 0.0f; // -1..+1 across the screen height, +up
float distance_m = 0.0f; // Controller-to-screen distance along the aim ray, in meters
};
struct OpenXRControllerState
{
bool connected = false;
bool primary_button = false;
bool secondary_button = false;
bool menu_button = false;
bool trigger_button = false;
bool squeeze_button = false;
bool thumbstick_button = false;
float trigger_value = 0.0f;
float squeeze_value = 0.0f;
float squeeze_force = 0.0f;
float thumbstick_x = 0.0f;
float thumbstick_y = 0.0f;
OpenXRPoseState aim_pose;
OpenXRPoseState grip_pose;
OpenXRVelocityState grip_velocity;
OpenXRScreenHit screen_hit;
};
struct OpenXRInputSnapshot
{
std::array<OpenXRControllerState, 2> controllers{};
OpenXRPoseState head_pose; // HMD head orientation for IR pointer reference
bool runtime_active = false;
uint64_t generation = 0;
std::array<std::string, 2> interaction_profiles; // Active profile path per hand
bool session_focused = false;
// XrTime (nanoseconds) the poses/velocities were sampled at. Consumers differentiating
// velocities should use deltas of this instead of wall-clock time. 0 when unavailable.
int64_t sample_time_ns = 0;
};
struct OpenXRHapticsState
{
std::array<float, 2> amplitude{};
};
class OpenXRInputState final
{
public:
static OpenXRInputSnapshot GetSnapshot()
{
std::lock_guard lk(s_state_mutex);
return s_state;
}
static void SetControllers(const std::array<OpenXRControllerState, 2>& controllers,
bool runtime_active,
const OpenXRPoseState& head_pose = {})
{
std::lock_guard lk(s_state_mutex);
s_state.controllers = controllers;
s_state.head_pose = head_pose;
s_state.runtime_active = runtime_active;
++s_state.generation;
}
static void SetControllers(const std::array<OpenXRControllerState, 2>& controllers,
bool runtime_active,
const OpenXRPoseState& head_pose,
const std::array<std::string, 2>& profiles,
bool focused,
int64_t sample_time_ns = 0)
{
std::lock_guard lk(s_state_mutex);
s_state.controllers = controllers;
s_state.head_pose = head_pose;
s_state.runtime_active = runtime_active;
s_state.interaction_profiles = profiles;
s_state.session_focused = focused;
s_state.sample_time_ns = sample_time_ns;
++s_state.generation;
}
static std::string GetDiagnosticString()
{
std::lock_guard lk(s_state_mutex);
std::string result;
result += s_state.session_focused ? "Session: FOCUSED\n" : "Session: NOT FOCUSED\n";
for (int i = 0; i < 2; ++i)
{
const char* hand = i == 0 ? "Left" : "Right";
const auto& profile = s_state.interaction_profiles[i];
result += std::string(hand) + " Profile: " +
(profile.empty() ? "<none>" : profile) + "\n";
result += std::string(hand) + ": " +
(s_state.controllers[i].connected ? "Connected" : "Not connected") + "\n";
}
return result;
}
static void Reset()
{
std::lock_guard lk(s_state_mutex);
s_state = {};
s_haptics = {};
++s_state.generation;
}
static OpenXRHapticsState GetHaptics()
{
std::lock_guard lk(s_state_mutex);
return s_haptics;
}
static void SetRumble(float amplitude)
{
SetRumble(amplitude, amplitude);
}
static void SetRumble(float left_amplitude, float right_amplitude)
{
std::lock_guard lk(s_state_mutex);
s_haptics.amplitude[0] = Clamp01(left_amplitude);
s_haptics.amplitude[1] = Clamp01(right_amplitude);
}
static void SetRumbleForHand(std::size_t hand_index, float amplitude)
{
if (hand_index >= s_haptics.amplitude.size())
return;
std::lock_guard lk(s_state_mutex);
s_haptics.amplitude[hand_index] = Clamp01(amplitude);
}
private:
static float Clamp01(float value)
{
if (value < 0.0f)
return 0.0f;
if (value > 1.0f)
return 1.0f;
return value;
}
static inline std::mutex s_state_mutex;
static inline OpenXRInputSnapshot s_state{};
static inline OpenXRHapticsState s_haptics{};
};
} // namespace Common::VR
#endif // ENABLE_VR
+57 -15
View File
@@ -99,6 +99,8 @@ const Info<bool> GFX_BACKEND_MULTITHREADING{{System::GFX, "Settings", "BackendMu
true};
const Info<int> GFX_COMMAND_BUFFER_EXECUTE_INTERVAL{
{System::GFX, "Settings", "CommandBufferExecuteInterval"}, 100};
const Info<int> GFX_COMMAND_BUFFERS_IN_FLIGHT{
{System::GFX, "Settings", "CommandBuffersInFlight"}, 16};
const Info<bool> GFX_SHADER_CACHE{{System::GFX, "Settings", "ShaderCache"}, true};
const Info<bool> GFX_WAIT_FOR_SHADERS_BEFORE_STARTING{
@@ -186,24 +188,28 @@ const Info<float> GFX_STEREO_DEPTH_PERCENTAGE{{System::GFX, "Stereoscopy", "Ster
// Graphics.VR
const Info<bool> GFX_VR_ENABLE_OPENXR{{System::GFX, "VR", "EnableOpenXR"}, true};
const Info<bool> GFX_VR_AUTO_IMMEDIATE_XFB{{System::GFX, "VR", "AutoImmediateXFB"}, true};
// When OpenXR is enabled, render the game as a flat mono panel in the VR scene instead of
// per-eye stereoscopic 3D (the "Launch games in VR" off / cinema path).
const Info<bool> GFX_VR_FLAT_SCREEN{{System::GFX, "VR", "FlatScreen"}, false};
const Info<float> GFX_VR_UNITS_PER_METER{{System::GFX, "VR", "UnitsPerMeter"}, 1.0f};
const Info<bool> GFX_VR_ENABLE_LEAN_BACK_ANGLE{{System::GFX, "VR", "EnableLeanBackAngle"}, true};
const Info<float> GFX_VR_LEAN_BACK_ANGLE{{System::GFX, "VR", "LeanBackAngle"}, 0.0f};
const Info<bool> GFX_VR_ENABLE_CAMERA_FORWARD{{System::GFX, "VR", "EnableCameraForward"}, true};
const Info<float> GFX_VR_CAMERA_FORWARD{{System::GFX, "VR", "CameraForward"}, 0.0f};
const Info<bool> GFX_VR_ENABLE_CAMERA_HEIGHT{{System::GFX, "VR", "EnableCameraHeight"}, true};
const Info<float> GFX_VR_CAMERA_HEIGHT{{System::GFX, "VR", "CameraHeight"}, 0.0f};
const Info<bool> GFX_VR_ENABLE_CAMERA_ANCHOR{{System::GFX, "VR", "EnableCameraAnchor"}, false};
const Info<float> GFX_VR_CAMERA_ANCHOR_SMOOTHING{{System::GFX, "VR", "CameraAnchorSmoothing"},
0.85f};
const Info<bool> GFX_VR_ENABLE_CONTROLLER_ANCHOR{{System::GFX, "VR", "EnableControllerAnchor"},
false};
const Info<bool> GFX_VR_VIRTUAL_SCREEN{{System::GFX, "VR", "VirtualScreen"}, true};
const Info<float> GFX_VR_SCREEN_DISTANCE{{System::GFX, "VR", "ScreenDistance"}, 1.5f};
const Info<float> GFX_VR_SCREEN_SIZE{{System::GFX, "VR", "ScreenSize"}, 1.5f};
const Info<float> GFX_VR_HEAD_LOCKED_CURVATURE{{System::GFX, "VR", "HeadLockedCurvature"}, 0.0f};
const Info<bool> GFX_VR_DONT_CLEAR_SCREEN{{System::GFX, "VR", "DontClearScreen"}, false};
const Info<bool> GFX_VR_LOAD_CUSTOM_SHADERS{{System::GFX, "VR", "LoadCustomShaders"}, false};
const Info<bool> GFX_VR_ENABLE_OPENXR_CONFIG_SCENE{{System::GFX, "VR", "EnableOpenXRConfigScene"},
true};
const Info<bool> GFX_VR_DISABLE_CPU_CULL{{System::GFX, "VR", "DisableCPUCull"}, false};
const Info<OpenXROpcodeReplayMode> GFX_VR_OPCODE_REPLAY{
{System::GFX, "VR", "OpcodeReplay"}, OpenXROpcodeReplayMode::Off};
const Info<OpenXRMirrorView> GFX_VR_MIRROR_VIEW{{System::GFX, "VR", "MirrorView"},
OpenXRMirrorView::BothEyes};
const Info<OpenXRReferenceSpaceMode> GFX_VR_REFERENCE_SPACE_MODE{
@@ -212,9 +218,15 @@ const Info<OpenXRTrackingMode> GFX_VR_TRACKING_MODE{{System::GFX, "VR", "Trackin
OpenXRTrackingMode::Full6DoF};
const Info<bool> GFX_VR_USE_OPENXR_PLAY_SPACE_CENTER{
{System::GFX, "VR", "UseOpenXRPlaySpaceCenter"}, false};
const Info<int> GFX_VR_OPCODE_REPLAY_TARGET_REFRESH_RATE{
{System::GFX, "VR", "OpcodeReplayTargetRefreshRate"},
GFX_VR_OPCODE_REPLAY_TARGET_REFRESH_RATE_AUTO};
const Info<bool> GFX_VR_USE_XR_PACING_THREAD{{System::GFX, "VR", "UseXRPacingThread"}, true};
#if defined(__ANDROID__)
constexpr bool DEFAULT_VR_PIN_EMULATION_CORES = true;
#else
constexpr bool DEFAULT_VR_PIN_EMULATION_CORES = false;
#endif
const Info<bool> GFX_VR_PIN_EMULATION_CORES{{System::GFX, "VR", "PinEmulationCores"},
DEFAULT_VR_PIN_EMULATION_CORES};
const Info<bool> GFX_VR_EAGER_HEARTBEAT{{System::GFX, "VR", "EagerHeartbeat"}, false};
#if defined(__ANDROID__) && defined(ENABLE_VR)
constexpr bool DEFAULT_VR_ANDROID_DIRECT_TO_HMD = true;
constexpr bool DEFAULT_IMMEDIATE_XFB = true;
@@ -225,21 +237,29 @@ constexpr bool DEFAULT_IMMEDIATE_XFB = false;
const Info<int> GFX_VR_FORCED_VBI_FREQUENCY{{System::GFX, "VR", "ForcedVBIFrequency"}, 0};
const Info<bool> GFX_VR_AUTO_VBI_FROM_HMD{{System::GFX, "VR", "AutoVBIFromHMD"}, false};
const Info<bool> GFX_VR_AUTO_LAYER_SPREAD{{System::GFX, "VR", "AutoLayerSpread"}, false};
const Info<float> GFX_VR_LAYER_OFFSET{{System::GFX, "VR", "LayerOffset"}, 0.002f};
const Info<float> GFX_VR_ELEMENT_DEPTH{{System::GFX, "VR", "ElementDepth"}, 0.001f};
const Info<bool> GFX_VR_EXACT_SCREEN_DEPTH{{System::GFX, "VR", "ExactScreenDepth"}, true};
const Info<bool> GFX_VR_AUTO_NATIVE_EFB_EFFECTS{{System::GFX, "VR", "AutoNativeEfbEffects"},
true};
const Info<float> GFX_VR_HUD_THICKNESS{{System::GFX, "VR", "HudThickness"}, 0.0f};
const Info<bool> GFX_VR_REMOVE_BARS{{System::GFX, "VR", "RemoveCinematicBars"}, true};
const Info<bool> GFX_VR_FRAME_SIZE_FROM_XFB{{System::GFX, "VR", "FrameSizeFromXFB"}, true};
const Info<bool> GFX_VR_PANES_ON_SCREEN{{System::GFX, "VR", "SmallViewportsOnScreen"}, true};
const Info<bool> GFX_VR_DETECT_RENDER_TARGETS{{System::GFX, "VR", "DetectRenderTargets"}, false};
const Info<bool> GFX_VR_ORTHO_SCISSOR_FIX{{System::GFX, "VR", "OrthoScissorFix"}, true};
const Info<bool> GFX_VR_DETECT_SKYBOX{{System::GFX, "VR", "DetectSkybox"}, false};
const Info<bool> GFX_VR_METROID_THERMAL_VISOR_FIX{
{System::GFX, "VR", "MetroidThermalVisorFix"}, true};
const Info<bool> GFX_VR_METROID_D3D_THERMAL_PALETTE_FIX{
{System::GFX, "VR", "MetroidD3DThermalPaletteFix"}, true};
const Info<bool> GFX_VR_LOCK_HEAD_POSE{{System::GFX, "VR", "LockHeadPosePerFrame"}, false};
const Info<bool> GFX_VR_AR_MODE{{System::GFX, "VR", "ARMode"}, false};
const Info<bool> GFX_VR_AR_MODE_DEBUG{{System::GFX, "VR", "ARModeDebug"}, false};
const Info<float> GFX_VR_AR_BACKGROUND_ALPHA{{System::GFX, "VR", "ARBackgroundAlpha"}, 0.0f};
const Info<bool> GFX_VR_PASSTHROUGH{{System::GFX, "VR", "Passthrough"}, false};
const Info<bool> GFX_VR_PASSTHROUGH_REMOVE_BLACK_BG{
{System::GFX, "VR", "PassthroughRemoveBlackBackground"}, true};
const Info<bool> GFX_VR_PASSTHROUGH_REMOVE_BLACK_CLEARS{
{System::GFX, "VR", "PassthroughRemoveBlackEFBClears"}, true};
const Info<float> GFX_VR_PASSTHROUGH_SCENE_OPACITY{
{System::GFX, "VR", "PassthroughSceneOpacity"}, 1.0f};
const Info<VRPassthroughCoverageMode> GFX_VR_PASSTHROUGH_COVERAGE_MODE{
{System::GFX, "VR", "PassthroughCoverageMode"}, VRPassthroughCoverageMode::Fast};
const Info<float> GFX_VR_GAMMA{{System::GFX, "VR", "Gamma"}, 1.0f};
const Info<int> GFX_VR_CLEAR_EFB_COPIES{{System::GFX, "VR", "ClearEFBCopies"}, 0};
const Info<bool> GFX_VR_USE_VULKAN_MULTIVIEW{{System::GFX, "VR", "UseVulkanMultiview"}, true};
@@ -247,6 +267,28 @@ const Info<bool> GFX_VR_ANDROID_DIRECT_TO_HMD{{System::GFX, "VR", "AndroidDirect
DEFAULT_VR_ANDROID_DIRECT_TO_HMD};
const Info<bool> GFX_VR_QUEST_CPU_LEVEL_5_HINT{{System::GFX, "VR", "QuestCpuLevel5Hint"},
false};
#if defined(__ANDROID__) && defined(ENABLE_VR)
// Standalone headsets ask for more resolution than their mobile GPUs can fill at Dolphin
// workloads (Quest 3 recommends 2064x2208/eye); 0.85x cuts swapchain fill/composite cost
// by ~28% with little visible sharpness loss.
constexpr float DEFAULT_VR_RESOLUTION_SCALE = 0.85f;
constexpr int DEFAULT_VR_FOVEATION_LEVEL = 2; // Medium fixed foveated rendering
#else
constexpr float DEFAULT_VR_RESOLUTION_SCALE = 1.0f;
constexpr int DEFAULT_VR_FOVEATION_LEVEL = 0; // Off; few PC runtimes expose XR_FB_foveation
#endif
const Info<float> GFX_VR_RESOLUTION_SCALE{{System::GFX, "VR", "ResolutionScale"},
DEFAULT_VR_RESOLUTION_SCALE};
const Info<int> GFX_VR_FOVEATION_LEVEL{{System::GFX, "VR", "FoveationLevel"},
DEFAULT_VR_FOVEATION_LEVEL};
const Info<bool> GFX_VR_FOVEATION_DYNAMIC{{System::GFX, "VR", "DynamicFoveation"}, true};
// Foveate the EFB (game render) pass too, not just the eye swapchains. Off by default:
// attaching a fragment density map forces Adreno out of direct rendering into binned
// mode, so games that interrupt the EFB pass with many EFB copies per frame (e.g. Mario
// Kart Wii's bloom chain, ~20 splits/frame) pay a full GMEM load/store per interruption
// — measured as a net GPU-time LOSS despite the fragment savings. Only worth enabling
// per-game where the EFB pass runs long and uninterrupted.
const Info<bool> GFX_VR_EFB_FOVEATION{{System::GFX, "VR", "FoveateEFB"}, false};
// Graphics.Hacks
const Info<bool> GFX_HACK_EFB_ACCESS_ENABLE{{System::GFX, "Hacks", "EFBAccessEnable"}, false};
+53 -42
View File
@@ -19,10 +19,10 @@ enum class ColorCorrectionRegion : int;
enum class TriState : int;
enum class FrameDumpResolutionType : int;
enum class VertexLoaderType : int;
enum class OpenXROpcodeReplayMode : int;
enum class OpenXRMirrorView : int;
enum class OpenXRReferenceSpaceMode : int;
enum class OpenXRTrackingMode : int;
enum class VRPassthroughCoverageMode : int;
namespace Config
{
@@ -96,6 +96,11 @@ extern const Info<bool> GFX_BORDERLESS_FULLSCREEN;
extern const Info<bool> GFX_ENABLE_VALIDATION_LAYER;
extern const Info<bool> GFX_BACKEND_MULTITHREADING;
extern const Info<int> GFX_COMMAND_BUFFER_EXECUTE_INTERVAL;
// Depth of the backend's command list/buffer ring (D3D12 command lists, Vulkan command
// buffers). Read once at device init, so a change applies on the next emulation start.
extern const Info<int> GFX_COMMAND_BUFFERS_IN_FLIGHT;
constexpr int GFX_COMMAND_BUFFERS_IN_FLIGHT_MIN = 2;
constexpr int GFX_COMMAND_BUFFERS_IN_FLIGHT_MAX = 32;
extern const Info<bool> GFX_SHADER_CACHE;
extern const Info<bool> GFX_WAIT_FOR_SHADERS_BEFORE_STARTING;
extern const Info<ShaderCompilationMode> GFX_SHADER_COMPILATION_MODE;
@@ -166,16 +171,20 @@ static constexpr float GFX_STEREO_CONVERGENCE_MAXIMUM = 200;
// Graphics.VR
extern const Info<bool> GFX_VR_ENABLE_OPENXR;
extern const Info<bool> GFX_VR_AUTO_IMMEDIATE_XFB;
extern const Info<bool> GFX_VR_FLAT_SCREEN;
extern const Info<float> GFX_VR_UNITS_PER_METER;
extern const Info<bool> GFX_VR_ENABLE_LEAN_BACK_ANGLE;
extern const Info<float> GFX_VR_LEAN_BACK_ANGLE;
extern const Info<bool> GFX_VR_ENABLE_CAMERA_FORWARD;
extern const Info<float> GFX_VR_CAMERA_FORWARD;
extern const Info<bool> GFX_VR_ENABLE_CAMERA_HEIGHT;
extern const Info<float> GFX_VR_CAMERA_HEIGHT;
extern const Info<bool> GFX_VR_ENABLE_CAMERA_ANCHOR;
extern const Info<float> GFX_VR_CAMERA_ANCHOR_SMOOTHING;
extern const Info<bool> GFX_VR_ENABLE_CONTROLLER_ANCHOR;
static constexpr float GFX_VR_UNITS_PER_METER_MIN = 0.1f;
static constexpr float GFX_VR_UNITS_PER_METER_MAX = 500.0f;
static constexpr float GFX_VR_UNITS_PER_METER_MAX = 2000.0f;
static constexpr float GFX_VR_UNITS_PER_METER_STEP = 0.1f;
static constexpr float GFX_VR_LEAN_BACK_ANGLE_MIN = -45.0f;
static constexpr float GFX_VR_LEAN_BACK_ANGLE_MAX = 45.0f;
@@ -186,6 +195,9 @@ static constexpr float GFX_VR_CAMERA_FORWARD_STEP = 0.1f;
static constexpr float GFX_VR_CAMERA_HEIGHT_MIN = -20.0f;
static constexpr float GFX_VR_CAMERA_HEIGHT_MAX = 20.0f;
static constexpr float GFX_VR_CAMERA_HEIGHT_STEP = 0.1f;
static constexpr float GFX_VR_CAMERA_ANCHOR_SMOOTHING_MIN = 0.0f;
static constexpr float GFX_VR_CAMERA_ANCHOR_SMOOTHING_MAX = 0.95f;
static constexpr float GFX_VR_CAMERA_ANCHOR_SMOOTHING_STEP = 0.05f;
extern const Info<bool> GFX_VR_VIRTUAL_SCREEN;
extern const Info<float> GFX_VR_SCREEN_DISTANCE;
@@ -193,32 +205,48 @@ extern const Info<float> GFX_VR_SCREEN_SIZE;
extern const Info<float> GFX_VR_HEAD_LOCKED_CURVATURE;
extern const Info<bool> GFX_VR_DONT_CLEAR_SCREEN;
extern const Info<bool> GFX_VR_LOAD_CUSTOM_SHADERS;
extern const Info<bool> GFX_VR_ENABLE_OPENXR_CONFIG_SCENE;
extern const Info<bool> GFX_VR_DISABLE_CPU_CULL;
extern const Info<OpenXROpcodeReplayMode> GFX_VR_OPCODE_REPLAY;
extern const Info<OpenXRMirrorView> GFX_VR_MIRROR_VIEW;
extern const Info<OpenXRReferenceSpaceMode> GFX_VR_REFERENCE_SPACE_MODE;
extern const Info<OpenXRTrackingMode> GFX_VR_TRACKING_MODE;
extern const Info<bool> GFX_VR_USE_OPENXR_PLAY_SPACE_CENTER;
extern const Info<int> GFX_VR_OPCODE_REPLAY_TARGET_REFRESH_RATE;
extern const Info<int> GFX_VR_FORCED_VBI_FREQUENCY;
// Dedicated XR frame-pacing thread: owns xrWaitFrame/xrBeginFrame/xrEndFrame and
// re-submits the last frame at HMD cadence when the game runs slower (replaces the
// legacy Opcode Replay). INI-only escape hatch; disable to fall back to the inline
// synchronous frame flow.
extern const Info<bool> GFX_VR_USE_XR_PACING_THREAD;
// Android big.LITTLE: pin the CPU (JIT) and Video threads to dedicated performance cores
// so they never migrate onto a slow core or contend with each other. INI-only escape
// hatch; default on for Android/Quest.
extern const Info<bool> GFX_VR_PIN_EMULATION_CORES;
// Pacing thread heartbeat mode. Eager (default on standalone): re-submit the last frame
// at HMD cadence to fill every compositor slot — best where the runtime has no motion
// smoothing (Quest standalone). Lazy (default on PC): pace to the game's cadence so the
// runtime's SSW/ASW motion smoothing engages; heartbeat only as a keep-alive.
extern const Info<bool> GFX_VR_EAGER_HEARTBEAT;
extern const Info<bool> GFX_VR_AUTO_VBI_FROM_HMD;
extern const Info<bool> GFX_VR_AUTO_LAYER_SPREAD;
extern const Info<float> GFX_VR_LAYER_OFFSET;
extern const Info<float> GFX_VR_ELEMENT_DEPTH;
extern const Info<bool> GFX_VR_EXACT_SCREEN_DEPTH;
// Auto-detect ortho draws sampling EFB copies (bloom, motion blur, post-processing) and render
// them natively over each eye instead of capturing them onto the 2D Virtual Screen.
extern const Info<bool> GFX_VR_AUTO_NATIVE_EFB_EFFECTS;
extern const Info<float> GFX_VR_HUD_THICKNESS;
extern const Info<bool> GFX_VR_REMOVE_BARS;
extern const Info<bool> GFX_VR_FRAME_SIZE_FROM_XFB;
extern const Info<bool> GFX_VR_PANES_ON_SCREEN;
extern const Info<bool> GFX_VR_DETECT_RENDER_TARGETS;
extern const Info<bool> GFX_VR_ORTHO_SCISSOR_FIX;
extern const Info<bool> GFX_VR_DETECT_SKYBOX;
extern const Info<bool> GFX_VR_METROID_THERMAL_VISOR_FIX;
extern const Info<bool> GFX_VR_METROID_D3D_THERMAL_PALETTE_FIX;
extern const Info<bool> GFX_VR_LOCK_HEAD_POSE;
extern const Info<bool> GFX_VR_AR_MODE;
extern const Info<bool> GFX_VR_AR_MODE_DEBUG;
extern const Info<float> GFX_VR_AR_BACKGROUND_ALPHA;
static constexpr float GFX_VR_AR_BACKGROUND_ALPHA_MIN = 0.0f;
static constexpr float GFX_VR_AR_BACKGROUND_ALPHA_MAX = 1.0f;
static constexpr float GFX_VR_AR_BACKGROUND_ALPHA_STEP = 0.05f;
extern const Info<bool> GFX_VR_PASSTHROUGH;
extern const Info<bool> GFX_VR_PASSTHROUGH_REMOVE_BLACK_BG;
extern const Info<bool> GFX_VR_PASSTHROUGH_REMOVE_BLACK_CLEARS;
extern const Info<float> GFX_VR_PASSTHROUGH_SCENE_OPACITY;
extern const Info<VRPassthroughCoverageMode> GFX_VR_PASSTHROUGH_COVERAGE_MODE;
static constexpr float GFX_VR_PASSTHROUGH_SCENE_OPACITY_MIN = 0.0f;
static constexpr float GFX_VR_PASSTHROUGH_SCENE_OPACITY_MAX = 1.0f;
static constexpr float GFX_VR_PASSTHROUGH_SCENE_OPACITY_STEP = 0.05f;
extern const Info<float> GFX_VR_GAMMA;
extern const Info<int> GFX_VR_CLEAR_EFB_COPIES;
static constexpr int GFX_VR_CLEAR_EFB_MIN = 0;
@@ -227,6 +255,15 @@ static constexpr int GFX_VR_CLEAR_EFB_STEP = 10;
extern const Info<bool> GFX_VR_USE_VULKAN_MULTIVIEW;
extern const Info<bool> GFX_VR_ANDROID_DIRECT_TO_HMD;
extern const Info<bool> GFX_VR_QUEST_CPU_LEVEL_5_HINT;
extern const Info<float> GFX_VR_RESOLUTION_SCALE;
extern const Info<int> GFX_VR_FOVEATION_LEVEL;
extern const Info<bool> GFX_VR_FOVEATION_DYNAMIC;
extern const Info<bool> GFX_VR_EFB_FOVEATION;
static constexpr float GFX_VR_RESOLUTION_SCALE_MIN = 0.5f;
static constexpr float GFX_VR_RESOLUTION_SCALE_MAX = 2.0f;
static constexpr float GFX_VR_RESOLUTION_SCALE_STEP = 0.05f;
static constexpr int GFX_VR_FOVEATION_LEVEL_OFF = 0;
static constexpr int GFX_VR_FOVEATION_LEVEL_MAX = 3;
static constexpr float GFX_VR_SCREEN_DISTANCE_MIN = 0.5f;
static constexpr float GFX_VR_SCREEN_DISTANCE_MAX = 10.0f;
@@ -242,16 +279,6 @@ static constexpr int GFX_VR_FORCED_VBI_FREQUENCY_OFF = 0;
static constexpr int GFX_VR_FORCED_VBI_FREQUENCY_72 = 72;
static constexpr int GFX_VR_FORCED_VBI_FREQUENCY_90 = 90;
static constexpr int GFX_VR_FORCED_VBI_FREQUENCY_120 = 120;
static constexpr int GFX_VR_OPCODE_REPLAY_TARGET_REFRESH_RATE_AUTO = -1;
static constexpr int GFX_VR_OPCODE_REPLAY_TARGET_REFRESH_RATE_72 = 72;
static constexpr int GFX_VR_OPCODE_REPLAY_TARGET_REFRESH_RATE_90 = 90;
static constexpr int GFX_VR_OPCODE_REPLAY_TARGET_REFRESH_RATE_120 = 120;
static constexpr float GFX_VR_LAYER_OFFSET_MIN = 0.0001f;
static constexpr float GFX_VR_LAYER_OFFSET_MAX = 0.01f;
static constexpr float GFX_VR_LAYER_OFFSET_STEP = 0.0001f;
static constexpr float GFX_VR_ELEMENT_DEPTH_MIN = 0.0f;
static constexpr float GFX_VR_ELEMENT_DEPTH_MAX = 10.0f;
static constexpr float GFX_VR_ELEMENT_DEPTH_STEP = 0.0001f;
static constexpr float GFX_VR_HUD_THICKNESS_MIN = 0.0f;
static constexpr float GFX_VR_HUD_THICKNESS_MAX = 1.0f;
static constexpr float GFX_VR_HUD_THICKNESS_STEP = 0.02f;
@@ -273,22 +300,6 @@ inline int NormalizeVRForcedVBIFrequency(int frequency)
}
}
inline int NormalizeVROpcodeReplayTargetRefreshRate(int refresh_rate)
{
switch (refresh_rate)
{
case GFX_VR_OPCODE_REPLAY_TARGET_REFRESH_RATE_AUTO:
case 0: // Legacy value from the previous OutputRefreshRate Auto option.
return GFX_VR_OPCODE_REPLAY_TARGET_REFRESH_RATE_AUTO;
case GFX_VR_OPCODE_REPLAY_TARGET_REFRESH_RATE_72:
case GFX_VR_OPCODE_REPLAY_TARGET_REFRESH_RATE_90:
case GFX_VR_OPCODE_REPLAY_TARGET_REFRESH_RATE_120:
return refresh_rate;
default:
return GFX_VR_OPCODE_REPLAY_TARGET_REFRESH_RATE_90;
}
}
inline int ChooseClosestVRForcedVBIFrequency(float refresh_rate_hz)
{
if (refresh_rate_hz <= 0.0f)
+1 -7
View File
@@ -55,13 +55,7 @@ const Info<bool> MAIN_RUSH_FRAME_PRESENTATION{{System::Main, "Core", "RushFrameP
false};
const Info<bool> MAIN_SMOOTH_EARLY_PRESENTATION{{System::Main, "Core", "SmoothEarlyPresentation"},
false};
#if defined(ANDROID)
// Currently enabled by default on Android because the performance boost is really needed.
constexpr bool DEFAULT_CPU_THREAD = true;
#else
constexpr bool DEFAULT_CPU_THREAD = false;
#endif
const Info<bool> MAIN_CPU_THREAD{{System::Main, "Core", "CPUThread"}, DEFAULT_CPU_THREAD};
const Info<bool> MAIN_CPU_THREAD{{System::Main, "Core", "CPUThread"}, true};
const Info<bool> MAIN_LOAD_GAME_INTO_MEMORY{{System::Main, "Core", "LoadGameIntoMemory"}, false};
const Info<bool> MAIN_SYNC_ON_SKIP_IDLE{{System::Main, "Core", "SyncOnSkipIdle"}, true};
const Info<std::string> MAIN_DEFAULT_ISO{{System::Main, "Core", "DefaultISO"}, ""};
+83 -30
View File
@@ -157,10 +157,17 @@ static void ClearAppliedVRSetting(const char* key, const Config::Info<T>& info)
static void ClearAppliedVRSettings()
{
ClearAppliedVRSetting("EnableOpenXR", Config::GFX_VR_ENABLE_OPENXR);
ClearAppliedVRSetting("FlatScreen", Config::GFX_VR_FLAT_SCREEN);
ClearAppliedVRSetting("UnitsPerMeter", Config::GFX_VR_UNITS_PER_METER);
ClearAppliedVRSetting("EnableLeanBackAngle", Config::GFX_VR_ENABLE_LEAN_BACK_ANGLE);
ClearAppliedVRSetting("LeanBackAngle", Config::GFX_VR_LEAN_BACK_ANGLE);
ClearAppliedVRSetting("EnableCameraForward", Config::GFX_VR_ENABLE_CAMERA_FORWARD);
ClearAppliedVRSetting("CameraForward", Config::GFX_VR_CAMERA_FORWARD);
ClearAppliedVRSetting("EnableCameraHeight", Config::GFX_VR_ENABLE_CAMERA_HEIGHT);
ClearAppliedVRSetting("CameraHeight", Config::GFX_VR_CAMERA_HEIGHT);
ClearAppliedVRSetting("EnableCameraAnchor", Config::GFX_VR_ENABLE_CAMERA_ANCHOR);
ClearAppliedVRSetting("CameraAnchorSmoothing", Config::GFX_VR_CAMERA_ANCHOR_SMOOTHING);
ClearAppliedVRSetting("EnableControllerAnchor", Config::GFX_VR_ENABLE_CONTROLLER_ANCHOR);
ClearAppliedVRSetting("VirtualScreen", Config::GFX_VR_VIRTUAL_SCREEN);
ClearAppliedVRSetting("ScreenDistance", Config::GFX_VR_SCREEN_DISTANCE);
ClearAppliedVRSetting("ScreenSize", Config::GFX_VR_SCREEN_SIZE);
@@ -168,27 +175,41 @@ static void ClearAppliedVRSettings()
ClearAppliedVRSetting("DontClearScreen", Config::GFX_VR_DONT_CLEAR_SCREEN);
ClearAppliedVRSetting("LoadCustomShaders", Config::GFX_VR_LOAD_CUSTOM_SHADERS);
ClearAppliedVRSetting("DisableCPUCull", Config::GFX_VR_DISABLE_CPU_CULL);
ClearAppliedVRSetting("OpcodeReplay", Config::GFX_VR_OPCODE_REPLAY);
ClearAppliedVRSetting("MirrorView", Config::GFX_VR_MIRROR_VIEW);
ClearAppliedVRSetting("ReferenceSpaceMode", Config::GFX_VR_REFERENCE_SPACE_MODE);
ClearAppliedVRSetting("TrackingMode", Config::GFX_VR_TRACKING_MODE);
ClearAppliedVRSetting("OpcodeReplayTargetRefreshRate",
Config::GFX_VR_OPCODE_REPLAY_TARGET_REFRESH_RATE);
ClearAppliedVRSetting("OutputRefreshRate", Config::GFX_VR_OPCODE_REPLAY_TARGET_REFRESH_RATE);
ClearAppliedVRSetting("UseOpenXRPlaySpaceCenter", Config::GFX_VR_USE_OPENXR_PLAY_SPACE_CENTER);
ClearAppliedVRSetting("LockHeadPosePerFrame", Config::GFX_VR_LOCK_HEAD_POSE);
ClearAppliedVRSetting("EagerHeartbeat", Config::GFX_VR_EAGER_HEARTBEAT);
ClearAppliedVRSetting("ForcedVBIFrequency", Config::GFX_VR_FORCED_VBI_FREQUENCY);
ClearAppliedVRSetting("AutoVBIFromHMD", Config::GFX_VR_AUTO_VBI_FROM_HMD);
ClearAppliedVRSetting("AutoLayerSpread", Config::GFX_VR_AUTO_LAYER_SPREAD);
ClearAppliedVRSetting("LayerOffset", Config::GFX_VR_LAYER_OFFSET);
ClearAppliedVRSetting("ElementDepth", Config::GFX_VR_ELEMENT_DEPTH);
ClearAppliedVRSetting("ExactScreenDepth", Config::GFX_VR_EXACT_SCREEN_DEPTH);
ClearAppliedVRSetting("AutoNativeEfbEffects", Config::GFX_VR_AUTO_NATIVE_EFB_EFFECTS);
ClearAppliedVRSetting("HudThickness", Config::GFX_VR_HUD_THICKNESS);
ClearAppliedVRSetting("RemoveCinematicBars", Config::GFX_VR_REMOVE_BARS);
ClearAppliedVRSetting("FrameSizeFromXFB", Config::GFX_VR_FRAME_SIZE_FROM_XFB);
ClearAppliedVRSetting("SmallViewportsOnScreen", Config::GFX_VR_PANES_ON_SCREEN);
ClearAppliedVRSetting("DetectRenderTargets", Config::GFX_VR_DETECT_RENDER_TARGETS);
ClearAppliedVRSetting("OrthoScissorFix", Config::GFX_VR_ORTHO_SCISSOR_FIX);
ClearAppliedVRSetting("DetectSkybox", Config::GFX_VR_DETECT_SKYBOX);
ClearAppliedVRSetting("MetroidThermalVisorFix", Config::GFX_VR_METROID_THERMAL_VISOR_FIX);
ClearAppliedVRSetting("MetroidD3DThermalPaletteFix",
Config::GFX_VR_METROID_D3D_THERMAL_PALETTE_FIX);
ClearAppliedVRSetting("ClearEFBCopies", Config::GFX_VR_CLEAR_EFB_COPIES);
ClearAppliedVRSetting("Gamma", Config::GFX_VR_GAMMA);
ClearAppliedVRSetting("UseVulkanMultiview", Config::GFX_VR_USE_VULKAN_MULTIVIEW);
ClearAppliedVRSetting("AndroidDirectToHMD", Config::GFX_VR_ANDROID_DIRECT_TO_HMD);
ClearAppliedVRSetting("ARMode", Config::GFX_VR_AR_MODE);
ClearAppliedVRSetting("ARModeDebug", Config::GFX_VR_AR_MODE_DEBUG);
ClearAppliedVRSetting("ARBackgroundAlpha", Config::GFX_VR_AR_BACKGROUND_ALPHA);
ClearAppliedVRSetting("ResolutionScale", Config::GFX_VR_RESOLUTION_SCALE);
ClearAppliedVRSetting("FoveationLevel", Config::GFX_VR_FOVEATION_LEVEL);
ClearAppliedVRSetting("DynamicFoveation", Config::GFX_VR_FOVEATION_DYNAMIC);
ClearAppliedVRSetting("FoveateEFB", Config::GFX_VR_EFB_FOVEATION);
ClearAppliedVRSetting("Passthrough", Config::GFX_VR_PASSTHROUGH);
ClearAppliedVRSetting("ARMode", Config::GFX_VR_PASSTHROUGH);
ClearAppliedVRSetting("PassthroughRemoveBlackBackground",
Config::GFX_VR_PASSTHROUGH_REMOVE_BLACK_BG);
ClearAppliedVRSetting("PassthroughRemoveBlackEFBClears",
Config::GFX_VR_PASSTHROUGH_REMOVE_BLACK_CLEARS);
ClearAppliedVRSetting("PassthroughSceneOpacity", Config::GFX_VR_PASSTHROUGH_SCENE_OPACITY);
ClearAppliedVRSetting("PassthroughCoverageMode", Config::GFX_VR_PASSTHROUGH_COVERAGE_MODE);
}
template <typename T>
@@ -215,10 +236,17 @@ static void ApplyGameVRConfigOverrides(std::string_view game_id, std::optional<u
const VRSettingMap values = LoadVRSettingsFromINI(game_id, revision);
ApplyVRSetting(values, "EnableOpenXR", Config::GFX_VR_ENABLE_OPENXR);
ApplyVRSetting(values, "FlatScreen", Config::GFX_VR_FLAT_SCREEN);
ApplyVRSetting(values, "UnitsPerMeter", Config::GFX_VR_UNITS_PER_METER);
ApplyVRSetting(values, "EnableLeanBackAngle", Config::GFX_VR_ENABLE_LEAN_BACK_ANGLE);
ApplyVRSetting(values, "LeanBackAngle", Config::GFX_VR_LEAN_BACK_ANGLE);
ApplyVRSetting(values, "EnableCameraForward", Config::GFX_VR_ENABLE_CAMERA_FORWARD);
ApplyVRSetting(values, "CameraForward", Config::GFX_VR_CAMERA_FORWARD);
ApplyVRSetting(values, "EnableCameraHeight", Config::GFX_VR_ENABLE_CAMERA_HEIGHT);
ApplyVRSetting(values, "CameraHeight", Config::GFX_VR_CAMERA_HEIGHT);
ApplyVRSetting(values, "EnableCameraAnchor", Config::GFX_VR_ENABLE_CAMERA_ANCHOR);
ApplyVRSetting(values, "CameraAnchorSmoothing", Config::GFX_VR_CAMERA_ANCHOR_SMOOTHING);
ApplyVRSetting(values, "EnableControllerAnchor", Config::GFX_VR_ENABLE_CONTROLLER_ANCHOR);
ApplyVRSetting(values, "VirtualScreen", Config::GFX_VR_VIRTUAL_SCREEN);
ApplyVRSetting(values, "ScreenDistance", Config::GFX_VR_SCREEN_DISTANCE);
ApplyVRSetting(values, "ScreenSize", Config::GFX_VR_SCREEN_SIZE);
@@ -226,32 +254,58 @@ static void ApplyGameVRConfigOverrides(std::string_view game_id, std::optional<u
ApplyVRSetting(values, "DontClearScreen", Config::GFX_VR_DONT_CLEAR_SCREEN);
ApplyVRSetting(values, "LoadCustomShaders", Config::GFX_VR_LOAD_CUSTOM_SHADERS);
ApplyVRSetting(values, "DisableCPUCull", Config::GFX_VR_DISABLE_CPU_CULL);
ApplyVRSetting(values, "OpcodeReplay", Config::GFX_VR_OPCODE_REPLAY);
ApplyVRSetting(values, "MirrorView", Config::GFX_VR_MIRROR_VIEW);
ApplyVRSetting(values, "ReferenceSpaceMode", Config::GFX_VR_REFERENCE_SPACE_MODE);
ApplyVRSetting(values, "TrackingMode", Config::GFX_VR_TRACKING_MODE);
const bool has_opcode_replay_target =
values.find("OpcodeReplayTargetRefreshRate") != values.end();
ApplyVRSetting(values, "OpcodeReplayTargetRefreshRate",
Config::GFX_VR_OPCODE_REPLAY_TARGET_REFRESH_RATE);
if (!has_opcode_replay_target)
ApplyVRSetting(values, "OutputRefreshRate", Config::GFX_VR_OPCODE_REPLAY_TARGET_REFRESH_RATE);
ApplyVRSetting(values, "UseOpenXRPlaySpaceCenter", Config::GFX_VR_USE_OPENXR_PLAY_SPACE_CENTER);
ApplyVRSetting(values, "LockHeadPosePerFrame", Config::GFX_VR_LOCK_HEAD_POSE);
ApplyVRSetting(values, "EagerHeartbeat", Config::GFX_VR_EAGER_HEARTBEAT);
const bool has_forced_vbi_frequency = values.find("ForcedVBIFrequency") != values.end();
ApplyVRSetting(values, "ForcedVBIFrequency", Config::GFX_VR_FORCED_VBI_FREQUENCY);
if (!has_forced_vbi_frequency)
ApplyVRSetting(values, "AutoVBIFromHMD", Config::GFX_VR_AUTO_VBI_FROM_HMD);
ApplyVRSetting(values, "AutoLayerSpread", Config::GFX_VR_AUTO_LAYER_SPREAD);
ApplyVRSetting(values, "LayerOffset", Config::GFX_VR_LAYER_OFFSET);
ApplyVRSetting(values, "ElementDepth", Config::GFX_VR_ELEMENT_DEPTH);
ApplyVRSetting(values, "ExactScreenDepth", Config::GFX_VR_EXACT_SCREEN_DEPTH);
ApplyVRSetting(values, "AutoNativeEfbEffects", Config::GFX_VR_AUTO_NATIVE_EFB_EFFECTS);
ApplyVRSetting(values, "HudThickness", Config::GFX_VR_HUD_THICKNESS);
ApplyVRSetting(values, "RemoveCinematicBars", Config::GFX_VR_REMOVE_BARS);
ApplyVRSetting(values, "FrameSizeFromXFB", Config::GFX_VR_FRAME_SIZE_FROM_XFB);
ApplyVRSetting(values, "SmallViewportsOnScreen", Config::GFX_VR_PANES_ON_SCREEN);
ApplyVRSetting(values, "DetectRenderTargets", Config::GFX_VR_DETECT_RENDER_TARGETS);
ApplyVRSetting(values, "OrthoScissorFix", Config::GFX_VR_ORTHO_SCISSOR_FIX);
ApplyVRSetting(values, "DetectSkybox", Config::GFX_VR_DETECT_SKYBOX);
const bool has_d3d_thermal_palette_fix =
values.find("MetroidD3DThermalPaletteFix") != values.end();
ApplyVRSetting(values, "MetroidThermalVisorFix", Config::GFX_VR_METROID_THERMAL_VISOR_FIX);
ApplyVRSetting(values, "MetroidD3DThermalPaletteFix",
Config::GFX_VR_METROID_D3D_THERMAL_PALETTE_FIX);
if (!has_d3d_thermal_palette_fix)
{
const auto thermal_fix = values.find("MetroidThermalVisorFix");
bool enabled = false;
if (thermal_fix != values.end() && TryParse(thermal_fix->second, &enabled))
{
Config::SetCurrent(Config::GFX_VR_METROID_D3D_THERMAL_PALETTE_FIX, enabled);
s_applied_vr_settings.insert("MetroidD3DThermalPaletteFix");
}
}
ApplyVRSetting(values, "ClearEFBCopies", Config::GFX_VR_CLEAR_EFB_COPIES);
ApplyVRSetting(values, "Gamma", Config::GFX_VR_GAMMA);
ApplyVRSetting(values, "UseVulkanMultiview", Config::GFX_VR_USE_VULKAN_MULTIVIEW);
ApplyVRSetting(values, "AndroidDirectToHMD", Config::GFX_VR_ANDROID_DIRECT_TO_HMD);
ApplyVRSetting(values, "ARMode", Config::GFX_VR_AR_MODE);
ApplyVRSetting(values, "ARModeDebug", Config::GFX_VR_AR_MODE_DEBUG);
ApplyVRSetting(values, "ARBackgroundAlpha", Config::GFX_VR_AR_BACKGROUND_ALPHA);
ApplyVRSetting(values, "ResolutionScale", Config::GFX_VR_RESOLUTION_SCALE);
ApplyVRSetting(values, "FoveationLevel", Config::GFX_VR_FOVEATION_LEVEL);
ApplyVRSetting(values, "DynamicFoveation", Config::GFX_VR_FOVEATION_DYNAMIC);
ApplyVRSetting(values, "FoveateEFB", Config::GFX_VR_EFB_FOVEATION);
const bool has_passthrough = values.find("Passthrough") != values.end();
ApplyVRSetting(values, "Passthrough", Config::GFX_VR_PASSTHROUGH);
// Legacy key from before the XR_FB_passthrough rework.
if (!has_passthrough)
ApplyVRSetting(values, "ARMode", Config::GFX_VR_PASSTHROUGH);
ApplyVRSetting(values, "PassthroughRemoveBlackBackground",
Config::GFX_VR_PASSTHROUGH_REMOVE_BLACK_BG);
ApplyVRSetting(values, "PassthroughRemoveBlackEFBClears",
Config::GFX_VR_PASSTHROUGH_REMOVE_BLACK_CLEARS);
ApplyVRSetting(values, "PassthroughSceneOpacity", Config::GFX_VR_PASSTHROUGH_SCENE_OPACITY);
ApplyVRSetting(values, "PassthroughCoverageMode", Config::GFX_VR_PASSTHROUGH_COVERAGE_MODE);
}
} // namespace
@@ -300,12 +354,10 @@ void SConfig::LoadSettings()
}
// Migrate the legacy boolean VR VBI override to the new explicit frequency setting.
if (Config::Get(Config::GFX_VR_FORCED_VBI_FREQUENCY) ==
Config::GFX_VR_FORCED_VBI_FREQUENCY_OFF &&
if (Config::Get(Config::GFX_VR_FORCED_VBI_FREQUENCY) == Config::GFX_VR_FORCED_VBI_FREQUENCY_OFF &&
Config::Get(Config::GFX_VR_AUTO_VBI_FROM_HMD))
{
Config::SetBase(Config::GFX_VR_FORCED_VBI_FREQUENCY,
Config::GFX_VR_FORCED_VBI_FREQUENCY_90);
Config::SetBase(Config::GFX_VR_FORCED_VBI_FREQUENCY, Config::GFX_VR_FORCED_VBI_FREQUENCY_90);
Config::SetBase(Config::GFX_VR_AUTO_VBI_FROM_HMD, false);
}
}
@@ -477,7 +529,8 @@ void SConfig::SetRunningGameMetadata(const std::string& game_id, const std::stri
void SConfig::ReloadGameVRConfigOverrides()
{
std::lock_guard<std::recursive_mutex> lock(m_metadata_lock);
ApplyGameVRConfigOverrides(m_game_id, m_revision == 0 ? std::nullopt : std::make_optional(m_revision));
ApplyGameVRConfigOverrides(m_game_id,
m_revision == 0 ? std::nullopt : std::make_optional(m_revision));
}
void SConfig::OnESTitleChanged()
+26
View File
@@ -41,6 +41,8 @@
#include "Core/Boot/Boot.h"
#include "Core/BootManager.h"
#include "Core/CPUThreadConfigCallback.h"
#include "Common/Config/Config.h"
#include "Core/Config/GraphicsSettings.h"
#include "Core/Config/MainSettings.h"
#include "Core/ConfigManager.h"
#include "Core/CoreTiming.h"
@@ -128,6 +130,24 @@ static void RegisterCurrentThreadWithOpenXR(VR::OpenXRManager::AndroidThreadType
}
#endif
// Android big.LITTLE: pin the calling emulator thread to a dedicated performance core.
// No-op off Android or when PinEmulationCores is disabled. Logs the chosen core.
static void PinEmulationThreadToPerformanceCore(Common::ThreadCoreRole role, const char* label)
{
#if defined(ANDROID)
if (!Config::Get(Config::GFX_VR_PIN_EMULATION_CORES))
return;
const int core = Common::PinCurrentThreadToPerformanceCore(role);
if (core >= 0)
INFO_LOG_FMT(CORE, "Pinned {} to performance core cpu{}.", label, core);
else
WARN_LOG_FMT(CORE, "Could not pin {} to a performance core.", label);
#else
(void)role;
(void)label;
#endif
}
static void Callback_FramePresented(const PresentInfo& present_info);
struct HostJob
@@ -346,6 +366,10 @@ static void CpuThread(Core::System& system, const std::optional<std::string>& sa
VR::OpenXRManager::AndroidThreadType::RendererMain,
system.IsDualCoreMode() ? "CPU thread" : "CPU-GPU thread");
#endif
// The PPC JIT is the serial, latency-critical path. In single-core it also runs the
// GPU work, so it stays the top-priority pin either way.
PinEmulationThreadToPerformanceCore(Common::ThreadCoreRole::EmuCPU,
system.IsDualCoreMode() ? "CPU thread" : "CPU-GPU thread");
// This needs to be delayed until after the video backend is ready.
DolphinAnalytics::Instance().ReportGameStart();
@@ -507,6 +531,8 @@ static void FifoPlayerThread(Core::System& system, const std::optional<std::stri
"Video thread");
}
#endif
// Dedicated fast core for FIFO/GPU submit, distinct from the CPU thread's.
PinEmulationThreadToPerformanceCore(Common::ThreadCoreRole::EmuVideo, "Video thread");
init_from_thread.set_value(is_init);
if (!is_init)
+90 -161
View File
@@ -67,7 +67,7 @@ struct OpenXRVelocityHistory
bool has_velocity_sample = false;
Common::Vec3 previous_position{};
Common::Vec3 previous_velocity{};
std::chrono::steady_clock::time_point previous_time{};
s64 previous_time_ns = 0;
};
struct OpenXRWiimoteState
@@ -77,55 +77,33 @@ struct OpenXRWiimoteState
Common::Vec3 angular_velocity{};
float ir_x = std::numeric_limits<float>::quiet_NaN();
float ir_y = 0.0f;
float ir_z = 0.0f; // Forward/backward distance offset (-1 to +1)
// Raw aim orientation for reference-based IR computation in ApplyOpenXRIRCenter
Common::Quaternion aim_orientation{1.0f, 0.0f, 0.0f, 0.0f};
Common::Vec3 aim_position{}; // Aim pose world position for Z computation
bool has_aim = false;
float ir_z = 0.0f; // Forward/backward distance offset from NEUTRAL_DISTANCE, in meters
};
struct OpenXRIRCenter
// How far past the screen edge (in screen half-extents) the pointer stays tracked before
// the emulated IR camera "loses" it, matching real hardware: the wiimote camera FOV
// (42°x31.5°) extends well past the cursor's Total Yaw/Pitch range (25°/20°), so real
// dots survive to roughly these excursions.
constexpr float OPENXR_IR_HIDE_MARGIN_U = 1.9f;
constexpr float OPENXR_IR_HIDE_MARGIN_V = 1.5f;
// An off-screen excursion must persist this many input snapshots (~100ms at 72-90Hz)
// before the pointer is hidden. Runtime pose spikes during fast controller motion produce
// brief excursions; without the debounce every spike dropped IR tracking entirely.
constexpr int OPENXR_IR_HIDE_DELAY_SNAPSHOTS = 9;
// Nanosecond timestamp used for velocity differentiation: the XR pose sample time when
// available (jitter-free), wall clock otherwise.
s64 OpenXRSampleTimeNs(const Common::VR::OpenXRInputSnapshot& snapshot)
{
bool initialized = false;
// Reference orientation from the HMD — "where the user is looking" becomes cursor center.
// Controller aim deviation from this direction maps to cursor position.
Common::Quaternion reference_orientation;
Common::Vec3 reference_position{}; // Controller reference position for forward/backward
};
struct OpenXRCursorRanges
{
float yaw_half_range = float(MathUtil::PI * 25.0 / 180.0 / 2.0);
float pitch_half_range = float(MathUtil::PI * 20.0 / 180.0 / 2.0);
};
OpenXRCursorRanges GetOpenXRCursorRanges(unsigned int wiimote_index)
{
OpenXRCursorRanges ranges;
if (wiimote_index >= MAX_WIIMOTES)
return ranges;
auto* config = ::Wiimote::GetConfig();
if (!config)
return ranges;
auto* wiimote = static_cast<WiimoteEmu::Wiimote*>(config->GetController(wiimote_index));
if (!wiimote)
return ranges;
auto* ir_group = static_cast<ControllerEmu::Cursor*>(
wiimote->GetWiimoteGroup(WiimoteEmu::WiimoteGroup::Point));
if (!ir_group)
return ranges;
ranges.yaw_half_range = std::max(static_cast<float>(ir_group->GetTotalYaw() / 2), 0.001f);
ranges.pitch_half_range = std::max(static_cast<float>(ir_group->GetTotalPitch() / 2), 0.001f);
return ranges;
if (snapshot.sample_time_ns != 0)
return snapshot.sample_time_ns;
return std::chrono::duration_cast<std::chrono::nanoseconds>(
std::chrono::steady_clock::now().time_since_epoch())
.count();
}
OpenXRWiimoteState BuildOpenXRState(const Common::VR::OpenXRControllerState& controller,
OpenXRVelocityHistory* velocity_history)
OpenXRVelocityHistory* velocity_history, s64 sample_time_ns)
{
OpenXRWiimoteState out;
@@ -147,13 +125,10 @@ OpenXRWiimoteState BuildOpenXRState(const Common::VR::OpenXRControllerState& con
const auto get_matrix = [&world_to_local](int row, int col) { return world_to_local.data[row * 3 + col]; };
Common::Vec3 relative_acceleration{};
const auto now = std::chrono::steady_clock::now();
const float dt =
velocity_history->has_pose_sample
? std::chrono::duration_cast<std::chrono::duration<float>>(now -
velocity_history->previous_time)
.count()
: 0.0f;
velocity_history->has_pose_sample ?
float(sample_time_ns - velocity_history->previous_time_ns) * 1e-9f :
0.0f;
Common::Vec3 current_position{};
std::optional<Common::Vec3> pose_velocity;
@@ -187,7 +162,7 @@ OpenXRWiimoteState BuildOpenXRState(const Common::VR::OpenXRControllerState& con
if (has_grip_pose)
{
velocity_history->previous_position = current_position;
velocity_history->previous_time = now;
velocity_history->previous_time_ns = sample_time_ns;
velocity_history->has_pose_sample = true;
}
else
@@ -220,103 +195,50 @@ OpenXRWiimoteState BuildOpenXRState(const Common::VR::OpenXRControllerState& con
{
const Common::Vec3 world_angular_velocity = ToVec3(controller.grip_velocity.angular);
const Common::Vec3 local_angular_velocity = world_to_local * world_angular_velocity;
out.angular_velocity =
Common::Vec3(local_angular_velocity.x, local_angular_velocity.z, local_angular_velocity.y);
// Aim-local (X=right, Y=up, Z=back) to Dolphin's gyro convention
// (+x = pitch down, +y = roll left, +z = yaw left), a proper rotation:
// pitch up is +x in aim-local but -x for the wiimote.
out.angular_velocity = Common::Vec3(-local_angular_velocity.x, local_angular_velocity.z,
local_angular_velocity.y);
}
// Store raw aim orientation and position — IR angles and distance are computed
// in ApplyOpenXRIRCenter relative to the captured reference, making the mapping
// headset-independent.
if (has_aim_pose)
// IR pointer: absolute mapping from the aim ray's intersection with the virtual screen,
// computed by OpenXRManager with the renderer's own screen placement. Aiming at a point
// on the 2D screen puts the Wii pointer at that point — no reference capture, no
// recentering. Raw values are stored here; the off-screen hide decision (margins +
// debounce) lives in the override function, which keeps state across snapshots.
const Common::VR::OpenXRScreenHit& hit = controller.screen_hit;
if (hit.valid)
{
out.aim_orientation = ToQuaternion(controller.aim_pose.orientation).Normalized();
out.aim_position = ToVec3(controller.aim_pose.position);
out.has_aim = true;
}
else
{
out.aim_orientation = reference_orientation;
out.has_aim = false;
out.ir_x = hit.u;
out.ir_y = hit.v;
// Emulated sensor-bar distance: EmulatePoint uses NEUTRAL_DISTANCE(2m) + ir_z.
// Feed the real controller-to-screen distance so leaning in/out changes the
// virtual IR dot spacing physically. The band here only rejects nonsense (screen
// behind the player, huge rooms) — EmulatePoint applies the Point group's Distance
// Sensitivity around the resting distance and clamps to the emulated remote's range,
// so this offset must keep headroom on both sides for that gain to have anywhere to go.
out.ir_z = std::clamp(hit.distance_m, 0.1f, 8.0f) - 2.0f;
}
// IR x/y/z left as NaN/0/0 — will be filled by ApplyOpenXRIRCenter
return out;
}
std::array<OpenXRIRCenter, MAX_BBMOTES> s_openxr_ir_centers{};
void ApplyOpenXRIRCenter(unsigned int wiimote_index, OpenXRWiimoteState* state,
const Common::VR::OpenXRPoseState& head_pose)
{
if (wiimote_index >= MAX_BBMOTES || !state->has_aim)
return;
auto& center = s_openxr_ir_centers[wiimote_index];
// On first valid frame or after recenter, capture the HMD forward direction as reference.
// The cursor center corresponds to where the user is looking, and controller aim
// deviation from that direction moves the cursor.
if (!center.initialized)
{
if (head_pose.valid)
center.reference_orientation = ToQuaternion(head_pose.orientation).Normalized();
else
center.reference_orientation = state->aim_orientation;
center.reference_position = state->aim_position;
center.initialized = true;
}
// Compute the relative rotation: how much the controller aim deviates from the
// HMD forward direction. conjugate(reference) * current_aim
const Common::Quaternion relative =
center.reference_orientation.Conjugate() * state->aim_orientation;
// Transform the forward vector (-Z) by the relative rotation to get the
// local-frame pointing direction
const Common::Vec3 local_forward = relative * Common::Vec3{0.0f, 0.0f, -1.0f};
// Extract yaw and pitch from the local forward vector
// In OpenXR space: X=right, Y=up, Z=back (right-handed)
// local_forward.x = left/right deviation (yaw)
// local_forward.y = up/down deviation (pitch)
// local_forward.z = forward component (should be near -1 when pointing straight)
const float forward_len =
std::sqrt(local_forward.x * local_forward.x + local_forward.z * local_forward.z);
const float yaw = std::atan2(local_forward.x, -local_forward.z);
const float pitch = std::atan2(local_forward.y, std::max(forward_len, 0.001f));
// Get per-wiimote cursor ranges for normalization
const OpenXRCursorRanges ranges = GetOpenXRCursorRanges(wiimote_index);
// Normalize to [-1, 1] range based on configured total yaw/pitch
// Positive yaw = pointing right = positive ir_x (moves cursor right)
// Positive pitch = pointing up = positive ir_y (moves cursor up)
state->ir_x = yaw / std::max(ranges.yaw_half_range, 0.001f);
state->ir_y = pitch / std::max(ranges.pitch_half_range, 0.001f);
// Compute forward/backward distance (ir_z) from position delta projected onto
// the reference aim direction. This changes the spacing between the two virtual
// IR sensor bar dots — closer = dots farther apart, farther = dots closer together.
// Scale: 0.3m of forward movement = ir_z of -1 (moves 1m closer to sensor bar).
// Matches the old Hydra behavior (300mm per unit for Z axis).
constexpr float Z_METERS_PER_UNIT = 0.3f;
const Common::Vec3 ref_forward =
center.reference_orientation * Common::Vec3{0.0f, 0.0f, -1.0f};
const Common::Vec3 pos_delta = state->aim_position - center.reference_position;
const float forward_displacement = pos_delta.Dot(ref_forward);
state->ir_z = std::clamp(-forward_displacement / Z_METERS_PER_UNIT, -1.0f, 1.0f);
}
ControllerEmu::InputOverrideFunction CreateOpenXRInputOverrideFunction(unsigned int wiimote_index,
bool prefer_left_hand)
{
OpenXRWiimoteState cached_state;
OpenXRVelocityHistory left_velocity_history;
OpenXRVelocityHistory right_velocity_history;
int offscreen_snapshots = 0;
float held_ir_x = std::numeric_limits<float>::quiet_NaN();
float held_ir_y = 0.0f;
float held_ir_z = 0.0f;
return [wiimote_index, prefer_left_hand, cached_state, left_velocity_history,
right_velocity_history](std::string_view group_name, std::string_view control_name,
ControlState) mutable -> std::optional<ControlState> {
right_velocity_history, offscreen_snapshots, held_ir_x, held_ir_y,
held_ir_z](std::string_view group_name, std::string_view control_name,
ControlState) mutable -> std::optional<ControlState> {
if (s_wiimote_sources[wiimote_index].load() != WiimoteSource::OpenXR)
return std::nullopt;
@@ -332,21 +254,43 @@ ControllerEmu::InputOverrideFunction CreateOpenXRInputOverrideFunction(unsigned
const auto right_valid = right.grip_pose.valid || right.aim_pose.valid;
const auto left_valid = left.grip_pose.valid || left.aim_pose.valid;
const s64 sample_time_ns = OpenXRSampleTimeNs(snapshot);
if (!prefer_left_hand && right_valid)
{
cached_state =
BuildOpenXRState(right, &right_velocity_history);
ApplyOpenXRIRCenter(wiimote_index, &cached_state, snapshot.head_pose);
}
cached_state = BuildOpenXRState(right, &right_velocity_history, sample_time_ns);
else if (left_valid)
cached_state = BuildOpenXRState(left, &left_velocity_history, sample_time_ns);
else
cached_state = {};
// Off-screen debounce: a real wiimote's camera keeps tracking well past the screen
// edge, and a runtime pose spike during fast motion must not drop the pointer.
// Brief excursions keep reporting (the cursor pins at the screen edge, invalid-hit
// blips hold the last good position); only a sustained one hides the pointer like
// a real wiimote losing the sensor bar.
const bool on_screen = !std::isnan(cached_state.ir_x) &&
std::abs(cached_state.ir_x) <= OPENXR_IR_HIDE_MARGIN_U &&
std::abs(cached_state.ir_y) <= OPENXR_IR_HIDE_MARGIN_V;
if (on_screen)
{
cached_state =
BuildOpenXRState(left, &left_velocity_history);
ApplyOpenXRIRCenter(wiimote_index, &cached_state, snapshot.head_pose);
offscreen_snapshots = 0;
held_ir_x = cached_state.ir_x;
held_ir_y = cached_state.ir_y;
held_ir_z = cached_state.ir_z;
}
else if (++offscreen_snapshots < OPENXR_IR_HIDE_DELAY_SNAPSHOTS)
{
if (std::isnan(cached_state.ir_x))
{
cached_state.ir_x = held_ir_x;
cached_state.ir_y = held_ir_y;
cached_state.ir_z = held_ir_z;
}
}
else
{
cached_state = {};
cached_state.ir_x = std::numeric_limits<float>::quiet_NaN();
cached_state.ir_y = 0.0f;
cached_state.ir_z = 0.0f;
}
cached_state.generation = snapshot.generation;
@@ -372,16 +316,13 @@ ControllerEmu::InputOverrideFunction CreateOpenXRInputOverrideFunction(unsigned
}
else if (group_name == WiimoteEmu::Wiimote::IR_GROUP)
{
// Handle recenter signal from EmulatePoint — reset the reference orientation
// so the current aim direction becomes the new center.
// The pointer mapping is absolute (aim ray vs. virtual screen) — there is no
// reference to reset, so EmulatePoint's "Recenter" signal is a no-op.
if (control_name == "Recenter")
{
if (wiimote_index < MAX_BBMOTES)
s_openxr_ir_centers[wiimote_index].initialized = false;
return std::nullopt;
}
// NaN = pointer not on screen; the cursor hides like a real wiimote losing the bar.
if (control_name == ControllerEmu::ReshapableInput::X_INPUT_OVERRIDE)
return std::isnan(cached_state.ir_x) ? 0.0 : cached_state.ir_x;
return static_cast<double>(cached_state.ir_x);
if (control_name == ControllerEmu::ReshapableInput::Y_INPUT_OVERRIDE)
return static_cast<double>(cached_state.ir_y);
if (control_name == ControllerEmu::ReshapableInput::Z_INPUT_OVERRIDE)
@@ -424,7 +365,6 @@ void UpdateOpenXRInputOverride(unsigned int index, WiimoteSource source)
const bool prefer_left_hand =
Config::Get(Config::Info<bool>{{Config::System::Main, "Android", "QuestLeftHanded"},
false});
s_openxr_ir_centers[index] = {};
wiimote->SetInputOverrideFunction(
CreateOpenXRInputOverrideFunction(index, prefer_left_hand));
apply_to_attachments(CreateOpenXRInputOverrideFunction(index, !prefer_left_hand));
@@ -432,7 +372,6 @@ void UpdateOpenXRInputOverride(unsigned int index, WiimoteSource source)
}
else if (s_openxr_overrides_enabled[index])
{
s_openxr_ir_centers[index] = {};
wiimote->ClearInputOverrideFunction();
apply_to_attachments({});
s_openxr_overrides_enabled[index] = false;
@@ -557,9 +496,7 @@ std::optional<OpenXRWiiRemoteState> GetOpenXRHandState(bool left_hand)
OpenXRVelocityHistory throwaway_velocity_history;
OpenXRWiimoteState state =
BuildOpenXRState(controller, &throwaway_velocity_history);
// This path doesn't have a wiimote index, use 0 for reference-based IR
ApplyOpenXRIRCenter(0, &state, snapshot.head_pose);
BuildOpenXRState(controller, &throwaway_velocity_history, OpenXRSampleTimeNs(snapshot));
OpenXRWiiRemoteState out;
out.acceleration = {state.acceleration.x, state.acceleration.y, state.acceleration.z};
@@ -718,12 +655,4 @@ void DoState(PointerWrap& p)
}
}
void RecenterOpenXRPointer(unsigned int wiimote_index)
{
#ifdef ENABLE_VR
if (wiimote_index < MAX_BBMOTES)
s_openxr_ir_centers[wiimote_index].initialized = false;
#endif
}
} // namespace Wiimote
Loaded 100 of 280 files, more files were not shown because too many files have changed in this diff. Show more