Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
23a498f7d2 | ||
|
|
c4b005b540 | ||
|
|
3e2093b537 | ||
|
|
d36e773823 | ||
|
|
c61ca1ed0e | ||
|
|
30eeb5902b | ||
|
|
219ec35a3f | ||
|
|
5a03bcef36 | ||
|
|
c5e1c03dc3 | ||
|
|
9a839ab7a3 | ||
|
|
bf9e55b5fb | ||
|
|
54bd17d507 | ||
|
|
9f775df19d | ||
|
|
954bd71aac | ||
|
|
31fcefd3d2 | ||
|
|
b9592c3f69 | ||
|
|
06592e5f52 | ||
|
|
e911bec8b3 | ||
|
|
3de35df672 | ||
|
|
43461d6249 | ||
|
|
a365201647 | ||
|
|
8d0fbdc969 | ||
|
|
b6eb5a946a | ||
|
|
ace44a8a1b | ||
|
|
bd164a9cd0 | ||
|
|
a066e59df2 | ||
|
|
5aa7ae4e86 | ||
|
|
04113519b6 | ||
|
|
da596b84ed | ||
|
|
2bedfe31bd | ||
|
|
c5c5984c85 | ||
|
|
4c1c690c72 | ||
|
|
f933865451 | ||
|
|
2103012a9a | ||
|
|
dc45c33318 | ||
|
|
df936c2976 | ||
|
|
148957b981 | ||
|
|
6442017d78 | ||
|
|
5878ccbad3 | ||
|
|
2c42a38b1a | ||
|
|
fcd70c99ff | ||
|
|
6e1d5199d3 | ||
|
|
d1511f187b | ||
|
|
99a86bdda7 | ||
|
|
1625a9618b | ||
|
|
b13701af2a | ||
|
|
5ee1008ed5 | ||
|
|
49ad800936 | ||
|
|
c80961c437 | ||
|
|
1b0eb14e15 | ||
|
|
108e0728bb | ||
|
|
adaeeaf3d4 | ||
|
|
2929ead841 | ||
|
|
19ba9b05fa | ||
|
|
8ecef6ef1e | ||
|
|
339a7ed52d | ||
|
|
220a99b7a3 | ||
|
|
49febf2cbe | ||
|
|
95b569b681 | ||
|
|
677aa34050 | ||
|
|
4a70fd2fbe | ||
|
|
1c16f73855 | ||
|
|
2ed53222b4 | ||
|
|
780b79b8d7 | ||
|
|
a2dad38be5 |
No files matched your search
@@ -43,3 +43,11 @@ CMakeLists.txt.user
|
||||
/.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
|
||||
@@ -93,6 +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(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)
|
||||
@@ -653,6 +654,29 @@ if(ENABLE_VULKAN)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(DOLPHIN_OPENXR_SUPPORTED_PLATFORM OFF)
|
||||
if(WIN32 OR ANDROID OR (UNIX AND NOT APPLE AND NOT ANDROID))
|
||||
set(DOLPHIN_OPENXR_SUPPORTED_PLATFORM ON)
|
||||
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)
|
||||
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.")
|
||||
endif()
|
||||
|
||||
if(ENABLE_VR)
|
||||
add_definitions(-DENABLE_VR)
|
||||
# Build only the OpenXR loader from the Khronos SDK; skip tests, conformance, and samples.
|
||||
set(BUILD_TESTS OFF CACHE BOOL "" FORCE)
|
||||
set(BUILD_CONFORMANCE_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()
|
||||
|
||||
if(NOT (WIN32 AND _M_ARM_64))
|
||||
# OpenGL is available on all platforms except windows-arm64
|
||||
add_definitions(-DHAS_OPENGL)
|
||||
|
||||
@@ -0,0 +1,257 @@
|
||||
[Graphics.VR]
|
||||
UnitsPerMeter = 50.00
|
||||
VirtualScreen = False
|
||||
[ElementsGroupOverride_Enable]
|
||||
$Links Room
|
||||
$HUD
|
||||
$HUD Hearts
|
||||
$HUD Rupees
|
||||
$HUD A Button
|
||||
[ElementsGroupOverride]
|
||||
$Links Room
|
||||
format=element_only_v5
|
||||
handling=skip
|
||||
selected_match_mode=include
|
||||
sig_perspective=1
|
||||
sig_persp_hfov=7
|
||||
sig_persp_vfov=6
|
||||
sig_persp_near=1
|
||||
sig_persp_far=200
|
||||
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=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
|
||||
selected_match_0_vs_family=000000002b3a6cc8
|
||||
selected_match_0_ps_family=a18f84adfc97a006
|
||||
selected_match_0_gs_family=000000007b617113
|
||||
|
||||
$HUD
|
||||
format=element_only_v5
|
||||
handling=screen
|
||||
selected_match_mode=exclude
|
||||
sig_perspective=1
|
||||
sig_persp_hfov=7
|
||||
sig_persp_vfov=6
|
||||
sig_persp_near=1
|
||||
sig_persp_far=580
|
||||
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=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=00240808
|
||||
sig_ztest=0
|
||||
sig_zupdate=0
|
||||
sig_zfunc=3
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=1
|
||||
selected_match_0_vs_family=000000002b3a6cc8
|
||||
selected_match_0_ps_family=b764624a1e0f616d
|
||||
selected_match_0_gs_family=000000007b617113
|
||||
selected_match_0_texture=23ede90952dd36ba
|
||||
selected_match_0_texture=e8c66917316dc5c9
|
||||
|
||||
$HUD Hearts
|
||||
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=-16
|
||||
sig_ortho_right=16
|
||||
sig_ortho_top=12
|
||||
sig_ortho_bottom=-12
|
||||
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
|
||||
|
||||
$HUD Rupees
|
||||
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=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=00240808
|
||||
sig_ztest=0
|
||||
sig_zupdate=1
|
||||
sig_zfunc=3
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=1
|
||||
|
||||
$HUD A Button
|
||||
format=element_only_v5
|
||||
handling=screen
|
||||
sig_perspective=1
|
||||
sig_persp_hfov=6
|
||||
sig_persp_vfov=6
|
||||
sig_persp_near=1
|
||||
sig_persp_far=6
|
||||
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=759
|
||||
sig_vp_y=405
|
||||
sig_vp_w=45
|
||||
sig_vp_h=45
|
||||
sig_sc_l=714
|
||||
sig_sc_t=360
|
||||
sig_sc_r=803
|
||||
sig_sc_b=449
|
||||
sig_alpha=003f0000
|
||||
sig_ztest=0
|
||||
sig_zupdate=0
|
||||
sig_zfunc=3
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=1
|
||||
|
||||
$Cinematic Bars
|
||||
format=element_only_v5
|
||||
handling=skip
|
||||
selected_match_mode=exclude
|
||||
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=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
|
||||
selected_match_0_vs_family=000000002b3a6cc8
|
||||
selected_match_0_ps_family=363402bb73543a71
|
||||
selected_match_0_gs_family=000000007b617113
|
||||
selected_match_1_vs_family=00000000c161bcae
|
||||
selected_match_1_ps_family=2b150fd7aa6db824
|
||||
selected_match_1_gs_family=000000002b78268c
|
||||
selected_match_1_texture=163a23cb1a409882
|
||||
selected_match_1_texture=b4678a9489894b4a
|
||||
selected_match_2_vs_family=000000002b3a6cc8
|
||||
selected_match_2_ps_family=9b3c96cefbfc107b
|
||||
selected_match_2_gs_family=000000007b617113
|
||||
selected_match_2_texture=163a23cb1a409882
|
||||
selected_match_2_texture=9d6bd48078fea672
|
||||
[ShaderOverride_Enable]
|
||||
[ShaderOverride]
|
||||
$HUD
|
||||
Hash=000000001d369b69
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
|
||||
$HUD Rupees
|
||||
Hash=000000003b812110
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
|
||||
$HUD Life and Text
|
||||
Hash=000000006d383ab2
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
|
||||
$HUD Hearts
|
||||
Hash=00000000ff3d987d
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
[Graphics.VR]
|
||||
UnitsPerMeter = 1.5
|
||||
HudThickness = 0.5
|
||||
|
||||
[ElementsGroupOverride_Enable]
|
||||
$Metroid Profile HUD and Visor
|
||||
$Metroid Profile Screen Effects
|
||||
$Metroid Profile Hidden Layers
|
||||
[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
|
||||
|
||||
$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
|
||||
|
||||
$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
|
||||
@@ -0,0 +1,43 @@
|
||||
[ElementsGroupOverride_Enable]
|
||||
$Metroid Profile HUD and Visor
|
||||
$Metroid Profile Screen Effects
|
||||
$Metroid Profile Hidden Layers
|
||||
[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
|
||||
@@ -0,0 +1,147 @@
|
||||
[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
|
||||
[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
|
||||
@@ -0,0 +1,46 @@
|
||||
[ShaderOverride_Enable]
|
||||
[ShaderOverride]
|
||||
[Graphics.VR]
|
||||
UnitsPerMeter = 50.00
|
||||
[ElementsGroupOverride_Enable]
|
||||
[ElementsGroupOverride]
|
||||
$Element Draw 24
|
||||
format=element_only_v5
|
||||
handling=screen
|
||||
sig_perspective=1
|
||||
sig_persp_hfov=6
|
||||
sig_persp_vfov=5
|
||||
sig_persp_near=1
|
||||
sig_persp_far=3
|
||||
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=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
|
||||
[HideObjectCodes_Enabled]
|
||||
$Black screen
|
||||
[HideObjectCodes]
|
||||
$Black screen
|
||||
Type=128bits
|
||||
Upper=0x0000000000000000
|
||||
Lower=0x3F7FFFFF00000000
|
||||
|
||||
@@ -0,0 +1,296 @@
|
||||
[ShaderOverride_Enable]
|
||||
[ShaderOverride]
|
||||
$Main Menu
|
||||
Hash=0000000068cb2ebf
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
texture_mode=include
|
||||
texture=063f2a687eb68e93
|
||||
texture=0c32aef0edbbd237
|
||||
texture=104e2cc1d1caebc7
|
||||
texture=114b9e8cf9115a86
|
||||
texture=1ea3a4c99fd2e49f
|
||||
texture=21cee000e4cc3ea5
|
||||
texture=24fd950092fad05e
|
||||
texture=38246c0ae052c615
|
||||
texture=392eda3e9f8e1da3
|
||||
texture=3fa594adeb9e323d
|
||||
texture=44b07d2cbe0762ec
|
||||
texture=4d384d847cfd2c19
|
||||
texture=51a089a5a28755d9
|
||||
texture=57e710dbfe3ef98e
|
||||
texture=611106025e7f6727
|
||||
texture=6c200101e7c48d31
|
||||
texture=70ff2f5fe8b3f815
|
||||
texture=77c917d62ae78035
|
||||
texture=8314c912961b4491
|
||||
texture=845406f7109c91f3
|
||||
texture=84c46c83dcd5d10b
|
||||
texture=891e8c4d17e2e17b
|
||||
texture=8a8c91bd2a0659d4
|
||||
texture=9468da6db0040e97
|
||||
texture=94ec4ca8a34f8681
|
||||
texture=9679331111cb1e77
|
||||
texture=9d9c004a32d673e9
|
||||
texture=a35acf80abd10385
|
||||
texture=a6247abeef06226c
|
||||
texture=bf45ea718f1a2aa5
|
||||
texture=ca436eff990d6f24
|
||||
texture=ccc53802c6e4f9ef
|
||||
texture=cd6ac7b0e66bbae7
|
||||
texture=d247a8f74946318f
|
||||
texture=d4c7f1be643140c9
|
||||
texture=dbf9d1d1dcbb57a5
|
||||
texture=e224ab6cfbffd889
|
||||
texture=e53c7d47f671e969
|
||||
texture=e6e805cb8f26f46b
|
||||
texture=efbcd448a80edd95
|
||||
texture=f7af09f9f0285a52
|
||||
texture=f7dca127bb53c5e9
|
||||
texture=ff10223616c08787
|
||||
texture=ffbd87995d0eacbc
|
||||
|
||||
$Main Menu 2
|
||||
Hash=00000000edaeb20d
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
texture_mode=include
|
||||
texture=0991eaeb8d0fe7d6
|
||||
texture=157b1d43706b5f6e
|
||||
texture=1f7733a7ba57f325
|
||||
texture=7ba79057b46b1989
|
||||
texture=891e8c4d17e2e17b
|
||||
texture=c882063f8763e3d6
|
||||
texture=e4d4b0e4d93fc124
|
||||
|
||||
$HUD
|
||||
Hash=000000004066a17e
|
||||
Type=VS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
texture_mode=include
|
||||
texture=0375c6fc8642dbfc
|
||||
texture=091555bc4ec6eaf4
|
||||
texture=0bfc6a26f0c9dcb8
|
||||
texture=16583905badc593d
|
||||
texture=198b0513b9249bf0
|
||||
texture=21603b6df442db5a
|
||||
texture=24e5504ff3b22e0e
|
||||
texture=38d272479e6a4813
|
||||
texture=4bf5d081e7deace5
|
||||
texture=508cfb6217c17172
|
||||
texture=50bea34926ecb4b2
|
||||
texture=536fc734fc6aa285
|
||||
texture=5dfc4f1ae0dcc253
|
||||
texture=5f4d3f73a3bca830
|
||||
texture=608d2f0042a0c46c
|
||||
texture=6866a7fbcf3273f1
|
||||
texture=96d1ba6e8ff22ea8
|
||||
texture=a02dc613df3921ff
|
||||
texture=a5ff2bb17574ec16
|
||||
texture=ab819905e2ea908b
|
||||
texture=b1e8dea9fbfbbd4d
|
||||
texture=b6e75a4e32967d5c
|
||||
texture=c677f6a517adec0b
|
||||
texture=c77cd9f853cad937
|
||||
texture=cc8300fcc020ef69
|
||||
texture=d56b5d3f030960a4
|
||||
texture=d8e83a904ac21990
|
||||
texture=f47f20dbcc7a3480
|
||||
texture=fef48910c2651a58
|
||||
texture=ff10223616c08787
|
||||
|
||||
$HUD Time
|
||||
Hash=00000000198dabb4
|
||||
Type=VS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
texture_mode=include
|
||||
texture=3815923aa6a00410
|
||||
|
||||
$Unnamed Shader 1
|
||||
Hash=0000000006ece1c8
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
[Graphics.VR]
|
||||
UnitsPerMeter = 50.00
|
||||
[ElementsGroupOverride_Enable]
|
||||
[ElementsGroupOverride]
|
||||
$Element Draw 2
|
||||
format=element_only_v5
|
||||
handling=screen
|
||||
sig_perspective=1
|
||||
sig_persp_hfov=5
|
||||
sig_persp_vfov=5
|
||||
sig_persp_near=1
|
||||
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_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
|
||||
|
||||
$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=64
|
||||
sig_ortho_top=0
|
||||
sig_ortho_bottom=48
|
||||
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=1
|
||||
sig_zupdate=1
|
||||
sig_zfunc=7
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=1
|
||||
|
||||
$Black Screen
|
||||
format=element_only_v5
|
||||
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=0
|
||||
sig_ortho_right=64
|
||||
sig_ortho_top=0
|
||||
sig_ortho_bottom=48
|
||||
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=1
|
||||
sig_zupdate=1
|
||||
sig_zfunc=7
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=1
|
||||
selected_match_0_vs_family=00000000ac20fd6c
|
||||
selected_match_0_ps_family=182b4f6db39e05aa
|
||||
selected_match_0_gs_family=000000007b617113
|
||||
selected_match_0_texture=ea19780ef5c43df9
|
||||
|
||||
$Special Stage White Screen
|
||||
format=element_only_v5
|
||||
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=0
|
||||
sig_ortho_right=64
|
||||
sig_ortho_top=0
|
||||
sig_ortho_bottom=48
|
||||
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=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
|
||||
selected_match_0_vs_family=00000000ac20fd6c
|
||||
selected_match_0_ps_family=182b4f6db39e05aa
|
||||
selected_match_0_gs_family=000000007b617113
|
||||
selected_match_0_texture=3815923aa6a00410
|
||||
|
||||
$Character shadows
|
||||
format=element_only_v5
|
||||
handling=fullscreen
|
||||
sig_perspective=1
|
||||
sig_persp_hfov=4
|
||||
sig_persp_vfov=4
|
||||
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_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
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
[ShaderOverride_Enable]
|
||||
[ShaderOverride]
|
||||
$blacksquare
|
||||
Hash=00000000a8d2ed4e
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=skip
|
||||
|
||||
$Startup
|
||||
Hash=00000000edaeb20d
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
|
||||
$Logo
|
||||
Hash=0000000068cb2ebf
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
|
||||
$FMV
|
||||
Hash=0000000083897d7a
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
|
||||
$Selectbox
|
||||
Hash=0000000083897d7a
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
|
||||
$HUD Team_formation
|
||||
Hash=000000004066a17e
|
||||
Type=VS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
texture_mode=include
|
||||
texture=091555bc4ec6eaf4
|
||||
texture=198b0513b9249bf0
|
||||
texture=38d272479e6a4813
|
||||
texture=3eeccda25c7a61bf
|
||||
texture=5dfc4f1ae0dcc253
|
||||
texture=608d2f0042a0c46c
|
||||
texture=96d1ba6e8ff22ea8
|
||||
texture=c677f6a517adec0b
|
||||
texture=cc8300fcc020ef69
|
||||
texture=d8e83a904ac21990
|
||||
texture=fef48910c2651a58
|
||||
|
||||
$Blackscreen
|
||||
Hash=00000000ac20fd6c
|
||||
Type=VS
|
||||
match_mode=exact_hash
|
||||
handling=skip
|
||||
|
||||
$Subs
|
||||
Hash=0000000006ece1c8
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=skip
|
||||
|
||||
$Effectground
|
||||
Hash=000000002febc826
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=skip
|
||||
|
||||
$Text
|
||||
Hash=00000000198dabb4
|
||||
Type=VS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
|
||||
$HUD team
|
||||
Hash=00000000aa8e5494
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
element_start=2
|
||||
element_end=60
|
||||
|
||||
$HUD time score
|
||||
Hash=0000000083897d7a
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
element_start=2
|
||||
element_end=10
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
[ShaderOverride_Enable]
|
||||
[ShaderOverride]
|
||||
$FMV
|
||||
Hash=00000000bcbf5145
|
||||
Type=PS
|
||||
handling=screen
|
||||
|
||||
$Text
|
||||
Hash=000000007905c727
|
||||
Type=PS
|
||||
handling=screen
|
||||
|
||||
$Character_indicator
|
||||
Hash=0000000029d6fcdb
|
||||
Type=PS
|
||||
handling=screen
|
||||
|
||||
$Timer_also
|
||||
Hash=00000000fb6ceffb
|
||||
Type=PS
|
||||
handling=screen
|
||||
|
||||
$Credits_hud
|
||||
Hash=000000007d095f4c
|
||||
Type=PS
|
||||
handling=screen
|
||||
|
||||
$Crosshair
|
||||
Hash=00000000fc0d4ed9
|
||||
Type=PS
|
||||
handling=screen
|
||||
|
||||
$Congratulation_picture
|
||||
Hash=000000002b158db5
|
||||
Type=PS
|
||||
handling=screen
|
||||
|
||||
@@ -0,0 +1,84 @@
|
||||
[Graphics.VR]
|
||||
UnitsPerMeter = 1.00
|
||||
[HideObjectCodes_Enabled]
|
||||
$Black Bar Bottom
|
||||
$Black Bar top
|
||||
[HideObjectCodes]
|
||||
$Black Bar Bottom
|
||||
Type=128bits
|
||||
Upper=0x0000000000000000
|
||||
Lower=0x00000000000000FF
|
||||
|
||||
$Black Bar top
|
||||
Type=128bits
|
||||
Upper=0x000000003F440001
|
||||
Lower=0x00000000000000FF
|
||||
[ElementsGroupOverride_Enable]
|
||||
$Minimap Road
|
||||
[ElementsGroupOverride]
|
||||
$Minimap Road
|
||||
format=element_only_v5
|
||||
handling=skip
|
||||
sig_perspective=1
|
||||
sig_persp_hfov=9
|
||||
sig_persp_vfov=9
|
||||
sig_persp_near=1
|
||||
sig_persp_far=800
|
||||
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=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
|
||||
|
||||
$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=-50
|
||||
sig_ortho_right=50
|
||||
sig_ortho_top=38
|
||||
sig_ortho_bottom=-38
|
||||
sig_use_projection=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=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
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
[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
|
||||
handling=screen
|
||||
sig_perspective=0
|
||||
sig_persp_hfov=0
|
||||
sig_persp_vfov=0
|
||||
sig_persp_near=0
|
||||
sig_persp_far=0
|
||||
sig_ortho_left=-32
|
||||
sig_ortho_right=32
|
||||
sig_ortho_top=24
|
||||
sig_ortho_bottom=-24
|
||||
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=00640000
|
||||
sig_ztest=0
|
||||
sig_zupdate=1
|
||||
sig_zfunc=7
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=0
|
||||
[Graphics.VR]
|
||||
UnitsPerMeter = 50.00
|
||||
VirtualScreen = False
|
||||
@@ -0,0 +1,178 @@
|
||||
[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
|
||||
@@ -0,0 +1,55 @@
|
||||
[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
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
[Graphics.VR]
|
||||
UnitsPerMeter = 1.5
|
||||
HudThickness = 0.5
|
||||
|
||||
[ElementsGroupOverride_Enable]
|
||||
$Metroid Profile HUD and Visor
|
||||
$Metroid Profile Screen Effects
|
||||
$Metroid Profile Hidden Layers
|
||||
[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
|
||||
|
||||
$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
|
||||
|
||||
$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
|
||||
@@ -0,0 +1,52 @@
|
||||
[Graphics.VR]
|
||||
UnitsPerMeter = 1.5
|
||||
HudThickness = 0.5
|
||||
|
||||
[ElementsGroupOverride_Enable]
|
||||
$Metroid Profile HUD and Visor
|
||||
$Metroid Profile Screen Effects
|
||||
$Metroid Profile Hidden Layers
|
||||
[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
|
||||
|
||||
$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
|
||||
|
||||
$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
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
[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
|
||||
[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=64
|
||||
sig_ortho_top=0
|
||||
sig_ortho_bottom=48
|
||||
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=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=1
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=1
|
||||
|
||||
$Circle and Shadow
|
||||
format=element_only_v5
|
||||
handling=skip
|
||||
texture_mode=exclude
|
||||
texture=2f9ac52528781aae
|
||||
texture=52e684c21fff85aa
|
||||
texture=5a83422a94989792
|
||||
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_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
|
||||
[ShaderOverride_Enable]
|
||||
[ShaderOverride]
|
||||
$HUD
|
||||
Hash=0000000056886e42
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
|
||||
$Bonus Stage Floor
|
||||
Hash=000000002baf3bf9
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=skip
|
||||
[Graphics.VR]
|
||||
UnitsPerMeter = 1.00
|
||||
VirtualScreen = True
|
||||
@@ -0,0 +1,465 @@
|
||||
[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
|
||||
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=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
|
||||
[ElementsGroupOverride_Enable]
|
||||
$FMV
|
||||
$Level Select
|
||||
[ElementsGroupOverride]
|
||||
$EFB
|
||||
format=element_only_v5
|
||||
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_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=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_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=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_v5
|
||||
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_v5
|
||||
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_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=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
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
[ShaderOverride_Enable]
|
||||
[ShaderOverride]
|
||||
$Save hud
|
||||
+Hash=000000001fa28974
|
||||
+Type=PS
|
||||
+handling=screen
|
||||
|
||||
$Savescreen text
|
||||
+Hash=000000004b5ec958
|
||||
+Type=PS
|
||||
+handling=screen
|
||||
|
||||
$Unnamed Shader
|
||||
+Hash=000000002b3a6cc8
|
||||
+Type=VS
|
||||
+handling=screen
|
||||
|
||||
$Unnamed Shader
|
||||
+Hash=0000000031c70e24
|
||||
+Type=VS
|
||||
+handling=screen
|
||||
|
||||
$Fludd Water Tank
|
||||
+Hash=000000003a9e6320
|
||||
+Type=VS
|
||||
+handling=screen
|
||||
|
||||
$EFB
|
||||
+Hash=00000000c071a3a6
|
||||
+Type=VS
|
||||
+handling=skip
|
||||
|
||||
$Fludd Water Tank background
|
||||
+Hash=00000000fe3d91e4
|
||||
+Type=VS
|
||||
+handling=screen
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
[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
|
||||
[Graphics.VR]
|
||||
UnitsPerMeter = 4.00
|
||||
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
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
[ElementsGroupOverride_Enable]
|
||||
$HUD
|
||||
$Menu
|
||||
[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=-32
|
||||
sig_ortho_right=32
|
||||
sig_ortho_top=24
|
||||
sig_ortho_bottom=-24
|
||||
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=00640000
|
||||
sig_ztest=0
|
||||
sig_zupdate=1
|
||||
sig_zfunc=7
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=0
|
||||
|
||||
$Menu
|
||||
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=-32
|
||||
sig_ortho_right=32
|
||||
sig_ortho_top=24
|
||||
sig_ortho_bottom=-24
|
||||
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=00640000
|
||||
sig_ztest=0
|
||||
sig_zupdate=1
|
||||
sig_zfunc=7
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=1
|
||||
[Graphics.VR]
|
||||
UnitsPerMeter = 50.00
|
||||
VirtualScreen = False
|
||||
@@ -0,0 +1,46 @@
|
||||
[ShaderOverride_Enable]
|
||||
[ShaderOverride]
|
||||
$Motion Blur
|
||||
Hash=0000000032dabdfb
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=skip
|
||||
[ElementsGroupOverride_Enable]
|
||||
$Motion Blur
|
||||
[ElementsGroupOverride]
|
||||
$Motion Blur
|
||||
format=element_only_v5
|
||||
handling=skip
|
||||
comments= Looks like a drunk filter
|
||||
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_top=0
|
||||
sig_ortho_bottom=48
|
||||
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=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
|
||||
[Graphics.VR]
|
||||
UnitsPerMeter = 100.00
|
||||
@@ -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
|
||||
|
||||
@@ -0,0 +1,134 @@
|
||||
[ShaderOverride_Enable]
|
||||
[ShaderOverride]
|
||||
[ElementsGroupOverride_Enable]
|
||||
[ElementsGroupOverride]
|
||||
$HUD
|
||||
format=element_only_v5
|
||||
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=64
|
||||
sig_ortho_top=0
|
||||
sig_ortho_bottom=48
|
||||
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=1
|
||||
sig_zupdate=0
|
||||
sig_zfunc=7
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=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_vs_family=00000000198dabb4
|
||||
selected_match_1_ps_family=a89c4ca6fc8e5876
|
||||
selected_match_1_gs_family=000000002b78268c
|
||||
selected_match_1_texture=1b15674d61c05ba0
|
||||
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_vs_family=000000002b3a6cc8
|
||||
selected_match_3_ps_family=0d577e9bbc49f1ab
|
||||
selected_match_3_gs_family=000000007b617113
|
||||
selected_match_3_texture=8f45dd68096d4665
|
||||
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_vs_family=000000002b3a6cc8
|
||||
selected_match_5_ps_family=0d577e9bbc49f1ab
|
||||
selected_match_5_gs_family=000000007b617113
|
||||
selected_match_5_texture=cc9e9b4f27f7130b
|
||||
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_vs_family=00000000198dabb4
|
||||
selected_match_7_ps_family=a89c4ca6fc8e5876
|
||||
selected_match_7_gs_family=000000002b78268c
|
||||
selected_match_7_texture=fb31bc5c96de28fd
|
||||
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_vs_family=00000000198dabb4
|
||||
selected_match_9_ps_family=a89c4ca6fc8e5876
|
||||
selected_match_9_gs_family=000000002b78268c
|
||||
selected_match_9_texture=1b214a192871a592
|
||||
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_vs_family=00000000198dabb4
|
||||
selected_match_11_ps_family=a89c4ca6fc8e5876
|
||||
selected_match_11_gs_family=000000002b78268c
|
||||
selected_match_11_texture=924376c246b3c129
|
||||
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_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
|
||||
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=0
|
||||
sig_ortho_right=64
|
||||
sig_ortho_top=0
|
||||
sig_ortho_bottom=48
|
||||
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=1
|
||||
sig_zupdate=0
|
||||
sig_zfunc=7
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=1
|
||||
selected_match_0_vs_family=00000000198dabb4
|
||||
selected_match_0_ps_family=a89c4ca6fc8e5876
|
||||
selected_match_0_gs_family=000000002b78268c
|
||||
selected_match_0_texture=5983dda9f15715a4
|
||||
[Graphics.VR]
|
||||
UnitsPerMeter = 30.00
|
||||
VirtualScreen = False
|
||||
@@ -0,0 +1,271 @@
|
||||
[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
|
||||
Type=128bits
|
||||
Upper=0x0000000000000000
|
||||
Lower=0x00000000FFFFFFFF
|
||||
|
||||
$Black Square
|
||||
Type=128bits
|
||||
Upper=0x0000000000000000
|
||||
Lower=0x000000000C0C0CFF
|
||||
Type=128bits
|
||||
Upper=0x0000000000000000
|
||||
Lower=0x00000000303030FF
|
||||
Type=128bits
|
||||
Upper=0x0000000000000000
|
||||
Lower=0x3F7FFFFF00000000
|
||||
|
||||
$Subtitles
|
||||
Type=88bits
|
||||
Upper=0x0000000000000000
|
||||
Lower=0x00000000003F8147
|
||||
|
||||
$Spring Motion Blur
|
||||
Type=128bits
|
||||
Upper=0xC17FFFF0C13FFFF4
|
||||
Lower=0x00000000FFFFFF64
|
||||
Type=128bits
|
||||
Upper=0xC1200000C0F00000
|
||||
Lower=0x00000000FFFFFF6E
|
||||
Type=128bits
|
||||
Upper=0xC1700000C1340000
|
||||
Lower=0x00000000FFFFFF65
|
||||
Type=128bits
|
||||
Upper=0xC03FFFE0C00FFFE8
|
||||
Lower=0x00000000FFFFFF7A
|
||||
Type=128bits
|
||||
Upper=0xC0FFFFF0C0BFFFF4
|
||||
Lower=0x00000000FFFFFF72
|
||||
Type=128bits
|
||||
Upper=0xC0BFFFE0C08FFFE8
|
||||
Lower=0x00000000FFFFFF75
|
||||
Type=128bits
|
||||
Upper=0xC0A00000C0700000
|
||||
Lower=0x00000000FFFFFF77
|
||||
Type=128bits
|
||||
Upper=0xC12FFFF0C103FFF4
|
||||
Lower=0x00000000FFFFFF6C
|
||||
Type=128bits
|
||||
Upper=0xC14FFFF8C11BFFFA
|
||||
Lower=0x00000000FFFFFF69
|
||||
Type=128bits
|
||||
Upper=0xC0000020BFC00030
|
||||
Lower=0x00000000FFFFFF7C
|
||||
Type=128bits
|
||||
Upper=0xC0DFFFC0C0A7FFD0
|
||||
Lower=0x00000000FFFFFF73
|
||||
Type=128bits
|
||||
Upper=0xC15FFFE8C127FFEE
|
||||
Lower=0x00000000FFFFFF67
|
||||
Type=128bits
|
||||
Upper=0xC1100010C0D80018
|
||||
Lower=0x00000000FFFFFF70
|
||||
Type=128bits
|
||||
Upper=0xBF7FFF00BF3FFF40
|
||||
Lower=0x00000000FFFFFF7E
|
||||
Type=128bits
|
||||
Upper=0xC0800020C0400030
|
||||
Lower=0x00000000FFFFFF79
|
||||
Type=128bits
|
||||
Upper=0xC13FFFE0C10FFFE8
|
||||
Lower=0x00000000FFFFFF6B
|
||||
|
||||
$Overlay
|
||||
Type=128bits
|
||||
Upper=0x0000000000000000
|
||||
Lower=0x00000000FFFFBEFF
|
||||
|
||||
$Red Overlay When Firing Canon
|
||||
Type=120bits
|
||||
Upper=0x0080000000800000
|
||||
Lower=0x0000000000FFFFFF
|
||||
|
||||
$Red Overlay 2
|
||||
Type=128bits
|
||||
Upper=0xBF999940BF6665E0
|
||||
Lower=0x00000000FFFFFF81
|
||||
|
||||
$Chaos Control EFB
|
||||
Type=128bits
|
||||
Upper=0xC17FFFF0C13FFFF4
|
||||
Lower=0x00000000FFFFFF80
|
||||
|
||||
$Left Grey Backround
|
||||
Type=48bits
|
||||
Upper=0x0000000000000000
|
||||
Lower=0x0000424000004228
|
||||
|
||||
$Effects
|
||||
Type=128bits
|
||||
Upper=0x0000000000000000
|
||||
Lower=0x3F7FFFFF00000000
|
||||
Type=128bits
|
||||
Upper=0x0000000000000000
|
||||
Lower=0x000000000C0C0CFF
|
||||
Type=128bits
|
||||
Upper=0x0000000000000000
|
||||
Lower=0x00000000FFFFFFFF
|
||||
Type=128bits
|
||||
Upper=0x3F00000000000000
|
||||
Lower=0x00000000FFFFFFFF
|
||||
Type=128bits
|
||||
Upper=0x000000003F000000
|
||||
Lower=0x00000000FFFFFFFF
|
||||
Type=128bits
|
||||
Upper=0x0000000000000000
|
||||
Lower=0x00000000303030FF
|
||||
Type=128bits
|
||||
Upper=0x3FC0000000000000
|
||||
Lower=0x00000000FFFFFFFF
|
||||
Type=128bits
|
||||
Upper=0x000000003FC00000
|
||||
Lower=0x00000000FFFFFFFF
|
||||
|
||||
@@ -0,0 +1,144 @@
|
||||
[ElementsGroupOverride_Enable]
|
||||
$fmv
|
||||
$Minimap
|
||||
$EFB Motion Blur
|
||||
[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=003f0000
|
||||
sig_ztest=1
|
||||
sig_zupdate=0
|
||||
sig_zfunc=3
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=1
|
||||
|
||||
$Minimap
|
||||
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=003f0000
|
||||
sig_ztest=0
|
||||
sig_zupdate=0
|
||||
sig_zfunc=3
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=1
|
||||
|
||||
$EFB Motion Blur
|
||||
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=0
|
||||
sig_zupdate=0
|
||||
sig_zfunc=3
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=1
|
||||
[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
|
||||
|
||||
$Texture Override 2
|
||||
handling=screen
|
||||
texture=8755670da0334bf9
|
||||
|
||||
$Texture Override
|
||||
handling=screen
|
||||
texture=3d7bec0c17271267
|
||||
texture=472f09edac31b620
|
||||
texture=62d42ba32fc47c0c
|
||||
texture=deee39b18006b496
|
||||
|
||||
$Map
|
||||
handling=screen
|
||||
texture=13708b609f1294d5
|
||||
texture=28b9f90d5150572b
|
||||
texture=35f9d709f72ae949
|
||||
|
||||
$Hilight effect locker
|
||||
handling=screen
|
||||
texture=df723848c5663568
|
||||
|
||||
$Annoying Circle of dots
|
||||
handling=skip
|
||||
texture=af146b1164b509e4
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
[Graphics.VR]
|
||||
UnitsPerMeter = 5.00
|
||||
[ShaderOverride_Enable]
|
||||
[ShaderOverride]
|
||||
$Gameplay HUD
|
||||
Hash=000000005637b01c
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
texture_mode=include
|
||||
texture=0983bfe6700594c5
|
||||
texture=1e5f84c21bf37faa
|
||||
texture=308e7f177a885df4
|
||||
texture=31f5ea35d1356d5c
|
||||
texture=341341e836a7a99d
|
||||
texture=342c728c828b61b9
|
||||
texture=5c566093ce99f141
|
||||
texture=6d6e94f436b9cb71
|
||||
texture=8f0127e7c3ab61dc
|
||||
texture=aea52e4de9864891
|
||||
texture=b39c48eb8da91d38
|
||||
texture=c42eb24599f65b9c
|
||||
texture=c5fb5447c441f08b
|
||||
texture=cc87d09cd650a286
|
||||
texture=cce65f7376ca91d0
|
||||
texture=d1f6229e094d0f14
|
||||
texture=d6bd9abb5c7737af
|
||||
texture=e5b9ec91b3478273
|
||||
|
||||
$HUD Cave
|
||||
Hash=00000000cd48bf1c
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
texture_mode=include
|
||||
texture=1e5f84c21bf37faa
|
||||
texture=727a2265f28df396
|
||||
|
||||
$Save Prompt
|
||||
Hash=00000000d32908a1
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=skip
|
||||
texture_mode=include
|
||||
texture=c5fb5447c441f08b
|
||||
[ElementsGroupOverride_Enable]
|
||||
$HUD
|
||||
[ElementsGroupOverride]
|
||||
$HUD
|
||||
format=element_only_v5
|
||||
handling=screen
|
||||
credits=iChris4
|
||||
sig_perspective=0
|
||||
sig_persp_hfov=0
|
||||
sig_persp_vfov=0
|
||||
sig_persp_near=0
|
||||
sig_persp_far=0
|
||||
sig_ortho_left=-42
|
||||
sig_ortho_right=42
|
||||
sig_ortho_top=22
|
||||
sig_ortho_bottom=-22
|
||||
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=598
|
||||
sig_vp_y=566
|
||||
sig_vp_w=256
|
||||
sig_vp_h=224
|
||||
sig_sc_l=342
|
||||
sig_sc_t=342
|
||||
sig_sc_r=853
|
||||
sig_sc_b=789
|
||||
sig_alpha=003f0000
|
||||
sig_ztest=1
|
||||
sig_zupdate=0
|
||||
sig_zfunc=7
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=1
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
[ShaderOverride_Enable]
|
||||
[ShaderOverride]
|
||||
$FMV
|
||||
+Hash=00000000884db77c
|
||||
+Type=VS
|
||||
+handling=screen
|
||||
|
||||
@@ -0,0 +1,108 @@
|
||||
[Graphics.VR]
|
||||
UnitsPerMeter = 25.00
|
||||
[ElementsGroupOverride_Enable]
|
||||
$HUD
|
||||
$Water fix
|
||||
[ElementsGroupOverride]
|
||||
$HUD
|
||||
format=element_only_v5
|
||||
handling=screen
|
||||
credits=iChris4
|
||||
sig_perspective=1
|
||||
sig_persp_hfov=8
|
||||
sig_persp_vfov=5
|
||||
sig_persp_near=1
|
||||
sig_persp_far=1
|
||||
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=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=0
|
||||
sig_zfunc=7
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=1
|
||||
|
||||
$Intro fmv
|
||||
format=element_only_v5
|
||||
handling=screen
|
||||
comments=On character select go over the characters 3D models
|
||||
credits=iChris4
|
||||
sig_perspective=1
|
||||
sig_persp_hfov=8
|
||||
sig_persp_vfov=5
|
||||
sig_persp_near=1
|
||||
sig_persp_far=300
|
||||
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=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=0
|
||||
sig_zfunc=1
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=1
|
||||
|
||||
$Water fix
|
||||
format=element_only_v5
|
||||
handling=skip
|
||||
sig_perspective=1
|
||||
sig_persp_hfov=8
|
||||
sig_persp_vfov=5
|
||||
sig_persp_near=1
|
||||
sig_persp_far=1
|
||||
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=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=004400c0
|
||||
sig_ztest=1
|
||||
sig_zupdate=0
|
||||
sig_zfunc=1
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=1
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
[ShaderOverride_Enable]
|
||||
[ShaderOverride]
|
||||
$HUD
|
||||
+Hash=00000000f8293e92
|
||||
+Type=PS
|
||||
+handling=screen
|
||||
+texture=132324180bf8cad6
|
||||
+texture=2a0d328cfd094992
|
||||
|
||||
$Menu 1
|
||||
+Hash=00000000299301b7
|
||||
+Type=PS
|
||||
+handling=screen
|
||||
+texture=0406bb54a29b5554
|
||||
+texture=10085c02593ad084
|
||||
+texture=170483b9e13ca5ed
|
||||
+texture=22eca14f1c383f6a
|
||||
+texture=2f8ac244b6ada3f7
|
||||
+texture=4ddbae84febca1cd
|
||||
+texture=549fadeb773fc748
|
||||
+texture=585837ce16d8abc6
|
||||
+texture=84ef0ddcb9f4d033
|
||||
+texture=8ef9802115e76654
|
||||
+texture=dbceee7b7280c62b
|
||||
+texture=de6042ccf50e3041
|
||||
|
||||
$Menu 2
|
||||
+Hash=000000005d0e31c3
|
||||
+Type=PS
|
||||
+handling=screen
|
||||
+texture=10085c02593ad084
|
||||
+texture=170483b9e13ca5ed
|
||||
+texture=2f8ac244b6ada3f7
|
||||
+texture=84ef0ddcb9f4d033
|
||||
+texture=9f64e67215e966f8
|
||||
+texture=dbceee7b7280c62b
|
||||
|
||||
$Menu FMV
|
||||
+Hash=0000000007c171b5
|
||||
+Type=PS
|
||||
+handling=screen
|
||||
|
||||
$HUD 2
|
||||
+Hash=00000000f8293e92
|
||||
+Type=PS
|
||||
+handling=screen
|
||||
+texture=15cefd8013a17803
|
||||
+texture=1ce1ef1fff724353
|
||||
+texture=2a0d328cfd094992
|
||||
+texture=2b99856774414c6a
|
||||
+texture=46f9f97b69e89d02
|
||||
+texture=776c3b5ebc095c8d
|
||||
+texture=82fc44f524a72542
|
||||
+texture=8aeb141d511d073e
|
||||
+texture=b0ae86fb282cc69a
|
||||
+texture=fda92a39e2b401bf
|
||||
|
||||
@@ -0,0 +1,258 @@
|
||||
[Graphics.VR]
|
||||
UnitsPerMeter = 20.00
|
||||
VirtualScreen = False
|
||||
[ElementsGroupOverride_Enable]
|
||||
[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=003f0000
|
||||
sig_ztest=0
|
||||
sig_zupdate=0
|
||||
sig_zfunc=3
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=0
|
||||
|
||||
$Minimap
|
||||
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=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
|
||||
|
||||
$Map
|
||||
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=420
|
||||
sig_sc_t=397
|
||||
sig_sc_r=876
|
||||
sig_sc_b=737
|
||||
sig_alpha=003f0000
|
||||
sig_ztest=0
|
||||
sig_zupdate=0
|
||||
sig_zfunc=3
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=0
|
||||
|
||||
$Fire
|
||||
format=element_only_v5
|
||||
handling=skip
|
||||
selected_match_mode=include
|
||||
sig_perspective=1
|
||||
sig_persp_hfov=7
|
||||
sig_persp_vfov=6
|
||||
sig_persp_near=1
|
||||
sig_persp_far=16
|
||||
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=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=1
|
||||
sig_zupdate=0
|
||||
sig_zfunc=3
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=0
|
||||
selected_match_0_vs_family=0000000034e70a67
|
||||
selected_match_0_ps_family=2015c255e2cdd174
|
||||
selected_match_0_gs_family=000000008b4a89b2
|
||||
selected_match_0_texture=26caee7ab948fd57
|
||||
selected_match_0_texture=88745501dca5b270
|
||||
selected_match_0_texture=aaace0b19cdd7c75
|
||||
selected_match_0_texture=cd14e78173cefee6
|
||||
|
||||
$Water
|
||||
format=element_only_v5
|
||||
handling=skip
|
||||
selected_match_mode=include
|
||||
sig_perspective=1
|
||||
sig_persp_hfov=7
|
||||
sig_persp_vfov=6
|
||||
sig_persp_near=1
|
||||
sig_persp_far=16
|
||||
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=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=007f0000
|
||||
sig_ztest=1
|
||||
sig_zupdate=0
|
||||
sig_zfunc=3
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=0
|
||||
selected_match_0_vs_family=00000000c14a044a
|
||||
selected_match_0_ps_family=a74bad1a3a315b90
|
||||
selected_match_0_gs_family=00000000db53de2d
|
||||
selected_match_0_texture=aaace0b19cdd7c75
|
||||
selected_match_0_texture=eee6eee62a32be15
|
||||
selected_match_0_texture=f5843fa4febedfc0
|
||||
|
||||
$Water Village
|
||||
format=element_only_v5
|
||||
handling=skip
|
||||
selected_match_mode=include
|
||||
sig_perspective=1
|
||||
sig_persp_hfov=7
|
||||
sig_persp_vfov=5
|
||||
sig_persp_near=1
|
||||
sig_persp_far=16
|
||||
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=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=007f0000
|
||||
sig_ztest=1
|
||||
sig_zupdate=0
|
||||
sig_zfunc=3
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=0
|
||||
selected_match_0_vs_family=000000004376b019
|
||||
selected_match_0_ps_family=7ac6df022a989cf1
|
||||
selected_match_0_gs_family=00000000db53de2d
|
||||
selected_match_0_texture=763e6c635b650555
|
||||
selected_match_0_texture=aaace0b19cdd7c75
|
||||
selected_match_0_texture=fa5f18b3d0bc3f19
|
||||
|
||||
$Water Effect behind link
|
||||
format=element_only_v5
|
||||
handling=skip
|
||||
sig_perspective=1
|
||||
sig_persp_hfov=7
|
||||
sig_persp_vfov=6
|
||||
sig_persp_near=1
|
||||
sig_persp_far=16
|
||||
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=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=1
|
||||
sig_zupdate=0
|
||||
sig_zfunc=3
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=0
|
||||
|
||||
@@ -0,0 +1,233 @@
|
||||
[Graphics.VR]
|
||||
UnitsPerMeter = 200.00
|
||||
[ElementsGroupOverride_Enable]
|
||||
$Save Select
|
||||
$HUD
|
||||
$Minimap 01
|
||||
$Minimap Arrow
|
||||
$Minimap bac
|
||||
$Minimap
|
||||
[ElementsGroupOverride]
|
||||
$Save Select
|
||||
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=-900
|
||||
sig_ortho_right=65
|
||||
sig_ortho_top=-2
|
||||
sig_ortho_bottom=50
|
||||
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=820
|
||||
sig_alpha=003f0000
|
||||
sig_ztest=0
|
||||
sig_zupdate=0
|
||||
sig_zfunc=3
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=1
|
||||
|
||||
$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=-900
|
||||
sig_ortho_right=65
|
||||
sig_ortho_top=-2
|
||||
sig_ortho_bottom=50
|
||||
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=820
|
||||
sig_alpha=003f0000
|
||||
sig_ztest=0
|
||||
sig_zupdate=0
|
||||
sig_zfunc=3
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=0
|
||||
|
||||
$Minimap 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=-900
|
||||
sig_ortho_right=65
|
||||
sig_ortho_top=-2
|
||||
sig_ortho_bottom=50
|
||||
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=820
|
||||
sig_alpha=003c0000
|
||||
sig_ztest=0
|
||||
sig_zupdate=0
|
||||
sig_zfunc=3
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=0
|
||||
|
||||
$Minimap Arrow
|
||||
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=-900
|
||||
sig_ortho_right=65
|
||||
sig_ortho_top=-2
|
||||
sig_ortho_bottom=50
|
||||
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=384
|
||||
sig_sc_t=670
|
||||
sig_sc_r=499
|
||||
sig_sc_b=778
|
||||
sig_alpha=00640000
|
||||
sig_ztest=0
|
||||
sig_zupdate=0
|
||||
sig_zfunc=3
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=0
|
||||
|
||||
$Minimap bac
|
||||
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=-900
|
||||
sig_ortho_right=65
|
||||
sig_ortho_top=-2
|
||||
sig_ortho_bottom=50
|
||||
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=820
|
||||
sig_alpha=007f0000
|
||||
sig_ztest=0
|
||||
sig_zupdate=0
|
||||
sig_zfunc=3
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=0
|
||||
|
||||
$Minimap
|
||||
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=-900
|
||||
sig_ortho_right=65
|
||||
sig_ortho_top=-2
|
||||
sig_ortho_bottom=50
|
||||
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=820
|
||||
sig_alpha=003c0000
|
||||
sig_ztest=0
|
||||
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
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
[ShaderOverride_Enable]
|
||||
[ShaderOverride]
|
||||
[ElementsGroupOverride_Enable]
|
||||
[ElementsGroupOverride]
|
||||
@@ -0,0 +1,43 @@
|
||||
[ElementsGroupOverride_Enable]
|
||||
$Metroid Profile HUD and Visor
|
||||
$Metroid Profile Screen Effects
|
||||
$Metroid Profile Hidden Layers
|
||||
[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
|
||||
@@ -0,0 +1,43 @@
|
||||
[ElementsGroupOverride_Enable]
|
||||
$Metroid Profile HUD and Visor
|
||||
$Metroid Profile Screen Effects
|
||||
$Metroid Profile Hidden Layers
|
||||
[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
|
||||
@@ -0,0 +1,248 @@
|
||||
[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
|
||||
|
||||
$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
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
[ElementsGroupOverride_Enable]
|
||||
$Gameplay HUD
|
||||
$Menu
|
||||
[ElementsGroupOverride]
|
||||
$Gameplay 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=-32
|
||||
sig_ortho_right=32
|
||||
sig_ortho_top=24
|
||||
sig_ortho_bottom=-24
|
||||
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=00470000
|
||||
sig_ztest=1
|
||||
sig_zupdate=1
|
||||
sig_zfunc=3
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=1
|
||||
|
||||
$Menu
|
||||
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=-32
|
||||
sig_ortho_right=32
|
||||
sig_ortho_top=24
|
||||
sig_ortho_bottom=-24
|
||||
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=1
|
||||
sig_zupdate=1
|
||||
sig_zfunc=7
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=1
|
||||
[Graphics.VR]
|
||||
UnitsPerMeter = 15.00
|
||||
VirtualScreen = False
|
||||
@@ -0,0 +1,327 @@
|
||||
[Graphics.VR]
|
||||
UnitsPerMeter = 1.5
|
||||
[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
|
||||
handling=screen
|
||||
|
||||
$Textbox Shadow
|
||||
Hash=000000007b346bb1
|
||||
Type=PS
|
||||
handling=screen
|
||||
|
||||
$HUD Life Bar Metter
|
||||
Hash=00000000467b2d0a
|
||||
Type=VS
|
||||
handling=headlocked
|
||||
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
|
||||
|
||||
@@ -0,0 +1,238 @@
|
||||
[Graphics.VR]
|
||||
UnitsPerMeter = 500.0
|
||||
[ShaderOverride_Enable]
|
||||
[ShaderOverride]
|
||||
$EFB1
|
||||
Hash=0000000052657776
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=skip
|
||||
|
||||
$Minimap head
|
||||
Hash=0000000069562615
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=skip
|
||||
|
||||
$Text
|
||||
Hash=000000000e9b236e
|
||||
Type=VS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
element_depth=0.0053
|
||||
|
||||
$Menu_Overlay
|
||||
Hash=00000000198dabb4
|
||||
Type=VS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
element_depth=0.0053
|
||||
|
||||
$Bloom
|
||||
Hash=00000000467b2d0a
|
||||
Type=VS
|
||||
match_mode=exact_hash
|
||||
handling=skip
|
||||
|
||||
$Mainmenu_background
|
||||
Hash=00000000d6773474
|
||||
Type=VS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
element_depth=0.0053
|
||||
|
||||
$Minimap_Charactershadow
|
||||
Hash=0000000069ac796e
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=skip
|
||||
|
||||
$MainMenuVideos
|
||||
Hash=00000000ca38d1aa
|
||||
Type=VS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
element_depth=0.0053
|
||||
|
||||
$EFB_Effect_01
|
||||
Hash=0000000078d6ff61
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=skip
|
||||
|
||||
$EFB Award Ceremony
|
||||
Hash=00000000fdb363d3
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=skip
|
||||
|
||||
$Award Ceremony Stars
|
||||
Hash=00000000379bf799
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
|
||||
$Singleplayer_menu_Video01
|
||||
Hash=000000005bf8cd62
|
||||
Type=VS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
|
||||
$Singleplayer_menu_video_02
|
||||
Hash=000000004cee45b8
|
||||
Type=VS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
|
||||
$EFB_Volcano
|
||||
Hash=00000000c61a4585
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=fullscreen
|
||||
|
||||
$Singleplayer_menu_background
|
||||
Hash=0000000047b728bc
|
||||
Type=VS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
|
||||
$Singleplayer_menu_box
|
||||
Hash=00000000884db77c
|
||||
Type=VS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
|
||||
$Singleplayer_menu_backgrounditem
|
||||
Hash=000000004cb9fdaf
|
||||
Type=VS
|
||||
match_mode=exact_hash
|
||||
handling=fullscreen
|
||||
condition=Ceremony
|
||||
condition_mode=deactivate
|
||||
|
||||
$Singleplayer_menu_character
|
||||
Hash=000000007b8703c8
|
||||
Type=VS
|
||||
match_mode=exact_hash
|
||||
handling=fullscreen
|
||||
condition=Menu
|
||||
condition_mode=activate
|
||||
|
||||
$Singleplayer_menu_Character_eyes
|
||||
Hash=00000000d26351da
|
||||
Type=VS
|
||||
match_mode=exact_hash
|
||||
handling=fullscreen
|
||||
condition=Menu
|
||||
condition_mode=activate
|
||||
|
||||
$Singleplayer_menu_vehicle
|
||||
Hash=000000007657d5d8
|
||||
Type=VS
|
||||
match_mode=exact_hash
|
||||
handling=fullscreen
|
||||
condition=Menu
|
||||
condition_mode=activate
|
||||
|
||||
$Singleplayer_menu_Vehicle_tires
|
||||
Hash=00000000cc5cc217
|
||||
Type=VS
|
||||
match_mode=exact_hash
|
||||
handling=fullscreen
|
||||
condition=Menu
|
||||
condition_mode=activate
|
||||
|
||||
$Singleplzyer_menu_vehicle_rim
|
||||
Hash=000000000459f3cb
|
||||
Type=VS
|
||||
match_mode=exact_hash
|
||||
handling=fullscreen
|
||||
condition=Menu
|
||||
condition_mode=activate
|
||||
|
||||
$Singleplayer_menu_stats_background
|
||||
Hash=00000000bafa7000
|
||||
Type=VS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
texture_mode=include
|
||||
texture=7099096ed516b037
|
||||
texture=7b787f8aa697a4a8
|
||||
texture=988b8ac81b73d404
|
||||
texture=e66eea69392fd459
|
||||
|
||||
$Staff_Credit_Cinematicbars
|
||||
Hash=00000000677241d9
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=skip
|
||||
|
||||
$Staffcredits_videos
|
||||
Hash=00000000e42504b8
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
|
||||
$WII_Health_Screen
|
||||
Hash=0000000061b8f1d2
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
|
||||
$Blooper_ink_1
|
||||
Hash=00000000638579c8
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
|
||||
$Blooper_ink_2
|
||||
Hash=0000000089574d7d
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
|
||||
$B_Buton
|
||||
Hash=0000000015b56d5a
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=flag
|
||||
flag=Menu
|
||||
|
||||
$Other Vehicles
|
||||
Hash=00000000c8f3f355
|
||||
Type=VS
|
||||
match_mode=exact_hash
|
||||
handling=fullscreen
|
||||
condition=Menu
|
||||
condition_mode=activate
|
||||
|
||||
$Windows
|
||||
Hash=00000000c59a92b2
|
||||
Type=VS
|
||||
match_mode=exact_hash
|
||||
handling=fullscreen
|
||||
condition=Menu
|
||||
condition_mode=activate
|
||||
|
||||
$Flag
|
||||
Hash=00000000ff41122d
|
||||
Type=VS
|
||||
match_mode=exact_hash
|
||||
handling=fullscreen
|
||||
condition=Menu
|
||||
condition_mode=activate
|
||||
|
||||
$Singleplayer_menu_text
|
||||
Hash=000000009f5b3fa6
|
||||
Type=VS
|
||||
match_mode=exact_hash
|
||||
handling=screen
|
||||
|
||||
$Mario Circuit Flag
|
||||
Hash=000000003b23b906
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=flag
|
||||
flag=Ceremony
|
||||
[ElementsGroupOverride_Enable]
|
||||
[ElementsGroupOverride]
|
||||
@@ -0,0 +1,453 @@
|
||||
[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
|
||||
[ElementsGroupOverride_Enable]
|
||||
$Element Draw 247
|
||||
$Element Draw 318
|
||||
$Element Draw 222
|
||||
[ElementsGroupOverride]
|
||||
$Element Draw 247
|
||||
format=element_only_v5
|
||||
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=-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
|
||||
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
|
||||
selected_match_0_vs_family=00000000d6773474
|
||||
selected_match_0_ps_family=499e4e6e862e3d26
|
||||
selected_match_0_gs_family=000000002b78268c
|
||||
selected_match_0_texture=15a5e3555cc498c8
|
||||
selected_match_0_texture=2c8def0fa1d520c1
|
||||
selected_match_0_texture=5ee6f674373b07c0
|
||||
selected_match_0_texture=94ca513d49ca99b6
|
||||
selected_match_0_texture=fcd86df44aef565a
|
||||
selected_match_1_vs_family=00000000d6773474
|
||||
selected_match_1_ps_family=499e4e6e862e3d26
|
||||
selected_match_1_gs_family=000000002b78268c
|
||||
selected_match_1_texture=15a5e3555cc498c8
|
||||
selected_match_1_texture=2c8def0fa1d520c1
|
||||
selected_match_1_texture=8a71f6deb6d29d67
|
||||
selected_match_1_texture=94ca513d49ca99b6
|
||||
selected_match_1_texture=fcd86df44aef565a
|
||||
selected_match_2_vs_family=00000000d6773474
|
||||
selected_match_2_ps_family=499e4e6e862e3d26
|
||||
selected_match_2_gs_family=000000002b78268c
|
||||
selected_match_2_texture=15a5e3555cc498c8
|
||||
selected_match_2_texture=2c8def0fa1d520c1
|
||||
selected_match_2_texture=94ca513d49ca99b6
|
||||
selected_match_2_texture=c6d910a177907b96
|
||||
selected_match_2_texture=fcd86df44aef565a
|
||||
selected_match_3_vs_family=00000000d6773474
|
||||
selected_match_3_ps_family=499e4e6e862e3d26
|
||||
selected_match_3_gs_family=000000002b78268c
|
||||
selected_match_3_texture=15a5e3555cc498c8
|
||||
selected_match_3_texture=2c8def0fa1d520c1
|
||||
selected_match_3_texture=48434e6acf90eef3
|
||||
selected_match_3_texture=94ca513d49ca99b6
|
||||
selected_match_3_texture=fcd86df44aef565a
|
||||
selected_match_4_vs_family=00000000198dabb4
|
||||
selected_match_4_ps_family=d4c6ec4ad5083096
|
||||
selected_match_4_gs_family=000000002b78268c
|
||||
selected_match_4_texture=15a5e3555cc498c8
|
||||
selected_match_4_texture=2c8def0fa1d520c1
|
||||
selected_match_4_texture=66e33770ec38e0bd
|
||||
selected_match_4_texture=94ca513d49ca99b6
|
||||
selected_match_4_texture=fcd86df44aef565a
|
||||
selected_match_5_vs_family=00000000d6773474
|
||||
selected_match_5_ps_family=499e4e6e862e3d26
|
||||
selected_match_5_gs_family=000000002b78268c
|
||||
selected_match_5_texture=15a5e3555cc498c8
|
||||
selected_match_5_texture=2c8def0fa1d520c1
|
||||
selected_match_5_texture=66e33770ec38e0bd
|
||||
selected_match_5_texture=94ca513d49ca99b6
|
||||
selected_match_5_texture=fcd86df44aef565a
|
||||
selected_match_6_vs_family=00000000d6773474
|
||||
selected_match_6_ps_family=499e4e6e862e3d26
|
||||
selected_match_6_gs_family=000000002b78268c
|
||||
selected_match_6_texture=15a5e3555cc498c8
|
||||
selected_match_6_texture=2c8def0fa1d520c1
|
||||
selected_match_6_texture=94ca513d49ca99b6
|
||||
selected_match_6_texture=a3183535cbc3220b
|
||||
selected_match_6_texture=fcd86df44aef565a
|
||||
selected_match_7_vs_family=00000000198dabb4
|
||||
selected_match_7_ps_family=d4c6ec4ad5083096
|
||||
selected_match_7_gs_family=000000002b78268c
|
||||
selected_match_7_texture=15a5e3555cc498c8
|
||||
selected_match_7_texture=2c8def0fa1d520c1
|
||||
selected_match_7_texture=5f416dfdb8e22d87
|
||||
selected_match_7_texture=94ca513d49ca99b6
|
||||
selected_match_7_texture=fcd86df44aef565a
|
||||
selected_match_8_vs_family=00000000198dabb4
|
||||
selected_match_8_ps_family=d81b8055949e3d26
|
||||
selected_match_8_gs_family=000000002b78268c
|
||||
selected_match_8_texture=0fe10de60caa58d7
|
||||
selected_match_8_texture=15a5e3555cc498c8
|
||||
selected_match_8_texture=2c8def0fa1d520c1
|
||||
selected_match_8_texture=94ca513d49ca99b6
|
||||
selected_match_8_texture=fcd86df44aef565a
|
||||
selected_match_9_vs_family=00000000198dabb4
|
||||
selected_match_9_ps_family=211682a1f1583096
|
||||
selected_match_9_gs_family=000000002b78268c
|
||||
selected_match_9_texture=15a5e3555cc498c8
|
||||
selected_match_9_texture=2c8def0fa1d520c1
|
||||
selected_match_9_texture=7da94237f13044c2
|
||||
selected_match_9_texture=94ca513d49ca99b6
|
||||
selected_match_9_texture=fcd86df44aef565a
|
||||
selected_match_10_vs_family=00000000198dabb4
|
||||
selected_match_10_ps_family=211682a1f1583096
|
||||
selected_match_10_gs_family=000000002b78268c
|
||||
selected_match_10_texture=02b5073505a48fb4
|
||||
selected_match_10_texture=15a5e3555cc498c8
|
||||
selected_match_10_texture=2c8def0fa1d520c1
|
||||
selected_match_10_texture=94ca513d49ca99b6
|
||||
selected_match_10_texture=fcd86df44aef565a
|
||||
selected_match_11_vs_family=00000000198dabb4
|
||||
selected_match_11_ps_family=211682a1f1583096
|
||||
selected_match_11_gs_family=000000002b78268c
|
||||
selected_match_11_texture=15a5e3555cc498c8
|
||||
selected_match_11_texture=2c8def0fa1d520c1
|
||||
selected_match_11_texture=94ca513d49ca99b6
|
||||
selected_match_11_texture=dff52cd335cd470e
|
||||
selected_match_11_texture=fcd86df44aef565a
|
||||
selected_match_12_vs_family=00000000d6773474
|
||||
selected_match_12_ps_family=499e4e6e862e3d26
|
||||
selected_match_12_gs_family=000000002b78268c
|
||||
selected_match_12_texture=134ccfd5209e4976
|
||||
selected_match_12_texture=15a5e3555cc498c8
|
||||
selected_match_12_texture=2c8def0fa1d520c1
|
||||
selected_match_12_texture=94ca513d49ca99b6
|
||||
selected_match_12_texture=fcd86df44aef565a
|
||||
selected_match_13_vs_family=00000000198dabb4
|
||||
selected_match_13_ps_family=211682a1f1583096
|
||||
selected_match_13_gs_family=000000002b78268c
|
||||
selected_match_13_texture=134ccfd5209e4976
|
||||
selected_match_13_texture=15a5e3555cc498c8
|
||||
selected_match_13_texture=2c8def0fa1d520c1
|
||||
selected_match_13_texture=94ca513d49ca99b6
|
||||
selected_match_13_texture=fcd86df44aef565a
|
||||
selected_match_14_vs_family=00000000198dabb4
|
||||
selected_match_14_ps_family=2fa9ade3457f8096
|
||||
selected_match_14_gs_family=000000002b78268c
|
||||
selected_match_14_texture=15a5e3555cc498c8
|
||||
selected_match_14_texture=2c8def0fa1d520c1
|
||||
selected_match_14_texture=94ca513d49ca99b6
|
||||
selected_match_14_texture=e158719cb9466098
|
||||
selected_match_14_texture=fcd86df44aef565a
|
||||
selected_match_15_vs_family=00000000198dabb4
|
||||
selected_match_15_ps_family=2fa9ade3457f8096
|
||||
selected_match_15_gs_family=000000002b78268c
|
||||
selected_match_15_texture=15a5e3555cc498c8
|
||||
selected_match_15_texture=2c8def0fa1d520c1
|
||||
selected_match_15_texture=70968cfd1a58944b
|
||||
selected_match_15_texture=94ca513d49ca99b6
|
||||
selected_match_15_texture=fcd86df44aef565a
|
||||
selected_match_16_vs_family=00000000198dabb4
|
||||
selected_match_16_ps_family=2fa9ade3457f8096
|
||||
selected_match_16_gs_family=000000002b78268c
|
||||
selected_match_16_texture=15a5e3555cc498c8
|
||||
selected_match_16_texture=2c8def0fa1d520c1
|
||||
selected_match_16_texture=94ca513d49ca99b6
|
||||
selected_match_16_texture=a3a333f684819f9d
|
||||
selected_match_16_texture=fcd86df44aef565a
|
||||
selected_match_17_vs_family=00000000198dabb4
|
||||
selected_match_17_ps_family=2fa9ade3457f8096
|
||||
selected_match_17_gs_family=000000002b78268c
|
||||
selected_match_17_texture=15a5e3555cc498c8
|
||||
selected_match_17_texture=2c8def0fa1d520c1
|
||||
selected_match_17_texture=94ca513d49ca99b6
|
||||
selected_match_17_texture=cf56fc9761fae133
|
||||
selected_match_17_texture=fcd86df44aef565a
|
||||
selected_match_18_vs_family=00000000198dabb4
|
||||
selected_match_18_ps_family=2fa9ade3457f8096
|
||||
selected_match_18_gs_family=000000002b78268c
|
||||
selected_match_18_texture=15a5e3555cc498c8
|
||||
selected_match_18_texture=2c8def0fa1d520c1
|
||||
selected_match_18_texture=94ca513d49ca99b6
|
||||
selected_match_18_texture=c21c2850e1d5daea
|
||||
selected_match_18_texture=fcd86df44aef565a
|
||||
selected_match_19_vs_family=00000000198dabb4
|
||||
selected_match_19_ps_family=2fa9ade3457f8096
|
||||
selected_match_19_gs_family=000000002b78268c
|
||||
selected_match_19_texture=15a5e3555cc498c8
|
||||
selected_match_19_texture=1cf3043c976277dd
|
||||
selected_match_19_texture=2c8def0fa1d520c1
|
||||
selected_match_19_texture=94ca513d49ca99b6
|
||||
selected_match_19_texture=fcd86df44aef565a
|
||||
selected_match_20_vs_family=00000000198dabb4
|
||||
selected_match_20_ps_family=2fa9ade3457f8096
|
||||
selected_match_20_gs_family=000000002b78268c
|
||||
selected_match_20_texture=15a5e3555cc498c8
|
||||
selected_match_20_texture=2c8def0fa1d520c1
|
||||
selected_match_20_texture=94ca513d49ca99b6
|
||||
selected_match_20_texture=fafff5bb996ef243
|
||||
selected_match_20_texture=fcd86df44aef565a
|
||||
selected_match_21_vs_family=00000000198dabb4
|
||||
selected_match_21_ps_family=2fa9ade3457f8096
|
||||
selected_match_21_gs_family=000000002b78268c
|
||||
selected_match_21_texture=15a5e3555cc498c8
|
||||
selected_match_21_texture=2c8def0fa1d520c1
|
||||
selected_match_21_texture=869aa03a4d18553d
|
||||
selected_match_21_texture=94ca513d49ca99b6
|
||||
selected_match_21_texture=fcd86df44aef565a
|
||||
selected_match_22_vs_family=00000000198dabb4
|
||||
selected_match_22_ps_family=2fa9ade3457f8096
|
||||
selected_match_22_gs_family=000000002b78268c
|
||||
selected_match_22_texture=15a5e3555cc498c8
|
||||
selected_match_22_texture=2c8def0fa1d520c1
|
||||
selected_match_22_texture=94ca513d49ca99b6
|
||||
selected_match_22_texture=9bce4f3cc4789bc4
|
||||
selected_match_22_texture=fcd86df44aef565a
|
||||
selected_match_23_vs_family=00000000d6773474
|
||||
selected_match_23_ps_family=499e4e6e862e3d26
|
||||
selected_match_23_gs_family=000000002b78268c
|
||||
selected_match_23_texture=15a5e3555cc498c8
|
||||
selected_match_23_texture=1cf3043c976277dd
|
||||
selected_match_23_texture=2c8def0fa1d520c1
|
||||
selected_match_23_texture=94ca513d49ca99b6
|
||||
selected_match_23_texture=fcd86df44aef565a
|
||||
selected_match_24_vs_family=00000000198dabb4
|
||||
selected_match_24_ps_family=2fa9ade3457f8096
|
||||
selected_match_24_gs_family=000000002b78268c
|
||||
selected_match_24_texture=15a5e3555cc498c8
|
||||
selected_match_24_texture=2c8def0fa1d520c1
|
||||
selected_match_24_texture=475444cb679d829f
|
||||
selected_match_24_texture=94ca513d49ca99b6
|
||||
selected_match_24_texture=fcd86df44aef565a
|
||||
selected_match_25_vs_family=00000000198dabb4
|
||||
selected_match_25_ps_family=2fa9ade3457f8096
|
||||
selected_match_25_gs_family=000000002b78268c
|
||||
selected_match_25_texture=15a5e3555cc498c8
|
||||
selected_match_25_texture=2c8def0fa1d520c1
|
||||
selected_match_25_texture=94ca513d49ca99b6
|
||||
selected_match_25_texture=efbb2b06ca868251
|
||||
selected_match_25_texture=fcd86df44aef565a
|
||||
selected_match_26_vs_family=00000000198dabb4
|
||||
selected_match_26_ps_family=d81b8055949e3d26
|
||||
selected_match_26_gs_family=000000002b78268c
|
||||
selected_match_26_texture=15a5e3555cc498c8
|
||||
selected_match_26_texture=2c8def0fa1d520c1
|
||||
selected_match_26_texture=6f0e62faf112638d
|
||||
selected_match_26_texture=94ca513d49ca99b6
|
||||
selected_match_26_texture=fcd86df44aef565a
|
||||
selected_match_27_vs_family=00000000198dabb4
|
||||
selected_match_27_ps_family=d81b8055949e3d26
|
||||
selected_match_27_gs_family=000000002b78268c
|
||||
selected_match_27_texture=15a5e3555cc498c8
|
||||
selected_match_27_texture=2c8def0fa1d520c1
|
||||
selected_match_27_texture=94ca513d49ca99b6
|
||||
selected_match_27_texture=e96b5e9b96c89795
|
||||
selected_match_27_texture=fcd86df44aef565a
|
||||
selected_match_28_vs_family=00000000d6773474
|
||||
selected_match_28_ps_family=499e4e6e862e3d26
|
||||
selected_match_28_gs_family=000000002b78268c
|
||||
selected_match_28_texture=15a5e3555cc498c8
|
||||
selected_match_28_texture=2c8def0fa1d520c1
|
||||
selected_match_28_texture=94ca513d49ca99b6
|
||||
selected_match_28_texture=a33f2eb619f43731
|
||||
selected_match_28_texture=fcd86df44aef565a
|
||||
selected_match_29_vs_family=00000000198dabb4
|
||||
selected_match_29_ps_family=d4c6ec4ad5083096
|
||||
selected_match_29_gs_family=000000002b78268c
|
||||
selected_match_29_texture=15a5e3555cc498c8
|
||||
selected_match_29_texture=2c8def0fa1d520c1
|
||||
selected_match_29_texture=589603106bc82d77
|
||||
selected_match_29_texture=94ca513d49ca99b6
|
||||
selected_match_29_texture=fcd86df44aef565a
|
||||
selected_match_30_vs_family=00000000198dabb4
|
||||
selected_match_30_ps_family=d4c6ec4ad5083096
|
||||
selected_match_30_gs_family=000000002b78268c
|
||||
selected_match_30_texture=15a5e3555cc498c8
|
||||
selected_match_30_texture=2c8def0fa1d520c1
|
||||
selected_match_30_texture=94ca513d49ca99b6
|
||||
selected_match_30_texture=d313c6b202434a2f
|
||||
selected_match_30_texture=fcd86df44aef565a
|
||||
selected_match_31_vs_family=00000000198dabb4
|
||||
selected_match_31_ps_family=211682a1f1583096
|
||||
selected_match_31_gs_family=000000002b78268c
|
||||
selected_match_31_texture=15a5e3555cc498c8
|
||||
selected_match_31_texture=2c8def0fa1d520c1
|
||||
selected_match_31_texture=94ca513d49ca99b6
|
||||
selected_match_31_texture=d313c6b202434a2f
|
||||
selected_match_31_texture=fcd86df44aef565a
|
||||
selected_match_32_vs_family=000000000e9b236e
|
||||
selected_match_32_ps_family=8d058747fe8ee0e6
|
||||
selected_match_32_gs_family=000000002b78268c
|
||||
selected_match_32_texture=15a5e3555cc498c8
|
||||
selected_match_32_texture=2c8def0fa1d520c1
|
||||
selected_match_32_texture=94ca513d49ca99b6
|
||||
selected_match_32_texture=d41347172512a7df
|
||||
selected_match_32_texture=fcd86df44aef565a
|
||||
|
||||
$Menu
|
||||
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=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 2
|
||||
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=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=003c0000
|
||||
sig_ztest=1
|
||||
sig_zupdate=1
|
||||
sig_zfunc=3
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=1
|
||||
|
||||
$Element Draw 318
|
||||
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
|
||||
|
||||
$Element Draw 222
|
||||
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,600
|
||||
sig_ortho_right=41,600
|
||||
sig_ortho_top=22,800
|
||||
sig_ortho_bottom=-22,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=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
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
[Graphics.VR]
|
||||
UnitsPerMeter = 500.0
|
||||
[ShaderOverride_Enable]
|
||||
[ShaderOverride]
|
||||
$HUD
|
||||
Hash=00000000198dabb4
|
||||
Type=VS
|
||||
handling=screen
|
||||
|
||||
$HUD Rank
|
||||
Hash=00000000d6773474
|
||||
Type=VS
|
||||
handling=screen
|
||||
|
||||
$HUD Letters
|
||||
Hash=000000000e9b236e
|
||||
Type=VS
|
||||
handling=screen
|
||||
|
||||
$EFB Effect
|
||||
Hash=0000000078d6ff61
|
||||
Type=PS
|
||||
handling=fullscreen
|
||||
|
||||
$Award Ceremony EFB Effect
|
||||
Hash=00000000fdb363d3
|
||||
Type=PS
|
||||
handling=fullscreen
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
[Graphics.VR]
|
||||
UnitsPerMeter = 500.0
|
||||
@@ -0,0 +1,274 @@
|
||||
[Graphics.VR]
|
||||
UnitsPerMeter = 500.00
|
||||
[ElementsGroupOverride_Enable]
|
||||
$Race HUD
|
||||
$Minimap Racer
|
||||
$Minimap Racer 1P
|
||||
$EFB Volcano
|
||||
$Main Menu
|
||||
$Main Menu 2
|
||||
[ElementsGroupOverride]
|
||||
$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=83
|
||||
sig_ortho_top=0
|
||||
sig_ortho_bottom=45
|
||||
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=0
|
||||
sig_zupdate=0
|
||||
sig_zfunc=7
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=1
|
||||
|
||||
$EFB2
|
||||
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=83
|
||||
sig_ortho_top=0
|
||||
sig_ortho_bottom=45
|
||||
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=814
|
||||
sig_vp_y=720
|
||||
sig_vp_w=136
|
||||
sig_vp_h=78
|
||||
sig_sc_l=678
|
||||
sig_sc_t=642
|
||||
sig_sc_r=949
|
||||
sig_sc_b=797
|
||||
sig_alpha=007f0000
|
||||
sig_ztest=0
|
||||
sig_zupdate=0
|
||||
sig_zfunc=7
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=1
|
||||
|
||||
$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 Racer
|
||||
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 Racer 1P
|
||||
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 Volcano
|
||||
format=element_only_v5
|
||||
handling=fullscreen
|
||||
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
|
||||
|
||||
$Main Menu
|
||||
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=003f0000
|
||||
sig_ztest=1
|
||||
sig_zupdate=1
|
||||
sig_zfunc=3
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=1
|
||||
|
||||
$Main Menu 2
|
||||
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
|
||||
|
||||
@@ -0,0 +1,198 @@
|
||||
[Graphics.VR]
|
||||
UnitsPerMeter = 500.0
|
||||
[ElementsGroupOverride_Enable]
|
||||
$HUD
|
||||
$Pointer trail
|
||||
$Select Level Screen
|
||||
[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=-30
|
||||
sig_ortho_right=30
|
||||
sig_ortho_top=22
|
||||
sig_ortho_bottom=-22
|
||||
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=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
|
||||
|
||||
$Pointer trail
|
||||
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=83
|
||||
sig_ortho_top=0
|
||||
sig_ortho_bottom=45
|
||||
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=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=004bffff
|
||||
sig_ztest=1
|
||||
sig_zupdate=1
|
||||
sig_zfunc=3
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=0
|
||||
|
||||
$Select Level Screen
|
||||
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=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=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
|
||||
[ShaderOverride_Enable]
|
||||
[ShaderOverride]
|
||||
$HUD_Numbers
|
||||
Hash=000000005233425f
|
||||
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
|
||||
handling=skip
|
||||
texture_mode=include
|
||||
texture=ff10223616c08787
|
||||
|
||||
$Select_buttons
|
||||
Hash=000000004e1d3326
|
||||
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
|
||||
handling=skip
|
||||
texture_mode=include
|
||||
texture=60eff5497ae01c93
|
||||
|
||||
$Waterfall
|
||||
Hash=0000000086d1bafc
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=skip
|
||||
|
||||
$Bowl Galaxy Water
|
||||
Hash=0000000052b3c704
|
||||
Type=PS
|
||||
match_mode=exact_hash
|
||||
handling=skip
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
[Graphics.VR]
|
||||
UnitsPerMeter = 1.00
|
||||
@@ -0,0 +1,80 @@
|
||||
[ShaderOverride_Enable]
|
||||
[ShaderOverride]
|
||||
[ElementsGroupOverride_Enable]
|
||||
$Element Draw 311
|
||||
$Element Draw 294
|
||||
[ElementsGroupOverride]
|
||||
$Element Draw 311
|
||||
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=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
|
||||
|
||||
$Element Draw 294
|
||||
format=element_only_v5
|
||||
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=-41,600
|
||||
sig_ortho_right=41,600
|
||||
sig_ortho_top=22,800
|
||||
sig_ortho_bottom=-22,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=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
|
||||
selected_match_0_vs_family=000000000f5726d8
|
||||
selected_match_0_ps_family=8250a4be7021d784
|
||||
selected_match_0_gs_family=000000002b78268c
|
||||
selected_match_0_texture=16d9038bbf23ea0e
|
||||
selected_match_0_texture=500a69b64330ee85
|
||||
selected_match_0_texture=ac869b6f32d8bbdb
|
||||
selected_match_0_texture=ea19780ef5c43df9
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
[ElementsGroupOverride_Enable]
|
||||
[ElementsGroupOverride]
|
||||
$Element Draw 297
|
||||
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=-32,000
|
||||
sig_ortho_right=32,000
|
||||
sig_ortho_top=24,000
|
||||
sig_ortho_bottom=-24,000
|
||||
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=00470000
|
||||
sig_ztest=1
|
||||
sig_zupdate=1
|
||||
sig_zfunc=3
|
||||
sig_blend_color=1
|
||||
sig_blend_alpha=1
|
||||
[Graphics.VR]
|
||||
UnitsPerMeter = 2.50
|
||||
@@ -0,0 +1,2 @@
|
||||
[Graphics.VR]
|
||||
UnitsPerMeter = 10.00
|
||||
@@ -0,0 +1,72 @@
|
||||
[Graphics.VR]
|
||||
UnitsPerMeter = 25.00
|
||||
[ElementsGroupOverride_Enable]
|
||||
$HUD
|
||||
[ElementsGroupOverride]
|
||||
$HUD
|
||||
format=element_only_v5
|
||||
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_top=0
|
||||
sig_ortho_bottom=48
|
||||
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=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
|
||||
handling=skip
|
||||
texture_mode=include
|
||||
texture=a6c477a4cdc8b783
|
||||
texture=c55d55f335211444
|
||||
|
||||
@@ -0,0 +1,125 @@
|
||||
[ShaderOverride_Enable]
|
||||
[ShaderOverride]
|
||||
$HUD
|
||||
+Hash=000000005233425f
|
||||
+Type=PS
|
||||
+handling=screen
|
||||
|
||||
$Resultscreen_background
|
||||
+Hash=0000000077062dd7
|
||||
+Type=PS
|
||||
+handling=screen
|
||||
+condition=Results
|
||||
+condition_mode=activate
|
||||
|
||||
$Resultscreen_score
|
||||
+Hash=0000000092add789
|
||||
+Type=PS
|
||||
+handling=screen
|
||||
+flag=Results
|
||||
|
||||
$Pause_bluebox
|
||||
+Hash=000000002b3a6cc8
|
||||
+Type=VS
|
||||
+handling=screen
|
||||
|
||||
$Pause_Menu
|
||||
+Hash=00000000198dabb4
|
||||
+Type=VS
|
||||
+handling=screen
|
||||
|
||||
$White_halo
|
||||
+Hash=000000002b3a6cc8
|
||||
+Type=VS
|
||||
+handling=skip
|
||||
|
||||
$FMV
|
||||
+Hash=000000001841ae02
|
||||
+Type=VS
|
||||
+handling=screen
|
||||
|
||||
$Pause box
|
||||
+Hash=000000005233425f
|
||||
+Type=PS
|
||||
+handling=screen
|
||||
|
||||
$blue rectangle
|
||||
+Hash=00000000fc0d4ed9
|
||||
+Type=PS
|
||||
+handling=screen
|
||||
|
||||
$Boost effect
|
||||
+Hash=0000000061655543
|
||||
+Type=PS
|
||||
+handling=skip
|
||||
|
||||
$Result screen blue borders
|
||||
+Hash=00000000198dabb4
|
||||
+Type=VS
|
||||
+handling=screen
|
||||
+texture=2f46428464d9b024
|
||||
+texture=3f20ca5980cff9e3
|
||||
+texture=ab58dac3f886921a
|
||||
+texture=b10a89cf16970a98
|
||||
+texture=e67a00cc333036e3
|
||||
+texture=fee9fca210c12bda
|
||||
|
||||
$Result Screen Background
|
||||
+Hash=00000000884db77c
|
||||
+Type=VS
|
||||
+handling=screen
|
||||
+texture=0258c5f5aaea4fc8
|
||||
+texture=132060cc44998d6d
|
||||
+texture=27c0ec8d823e445f
|
||||
+texture=53dbc76d11e180e8
|
||||
+texture=8173eec837797a60
|
||||
+texture=8c13f2460117fee9
|
||||
+texture=8ff675c313a563cd
|
||||
+texture=9e88d58abce6b034
|
||||
+texture=b10a89cf16970a98
|
||||
+texture=d039787b7ce9473e
|
||||
+texture=e67a00cc333036e3
|
||||
+texture=ef490d28e2b2c3c0
|
||||
|
||||
$Result Screen white line
|
||||
+Hash=00000000bafa7000
|
||||
+Type=VS
|
||||
+handling=screen
|
||||
+texture=b10a89cf16970a98
|
||||
|
||||
$Level Select HUD
|
||||
+Hash=00000000198dabb4
|
||||
+Type=VS
|
||||
+handling=screen
|
||||
+texture=f31057edf55ee8df
|
||||
+texture=fce6470cd1002ec6
|
||||
+texture=fea6706c809c691d
|
||||
|
||||
$Pause Menu
|
||||
+Hash=00000000198dabb4
|
||||
+Type=VS
|
||||
+handling=screen
|
||||
+texture=834aafcbc2034af6
|
||||
+texture=87771dfe25b6544f
|
||||
+texture=f628d339e215bc27
|
||||
|
||||
$Pause blue square
|
||||
+Hash=00000000fc0d4ed9
|
||||
+Type=PS
|
||||
+handling=screen
|
||||
+texture=02ef408571974c45
|
||||
|
||||
$Gameplay HUD
|
||||
+Hash=000000005233425f
|
||||
+Type=PS
|
||||
+handling=screen
|
||||
+texture=1022513c70e3feec
|
||||
+texture=16ee2c01d05591b1
|
||||
+texture=3fe87d6a51509943
|
||||
+texture=4a2691d68948f849
|
||||
+texture=530048026e5dbcb7
|
||||
+texture=849d1bf2beb6e85e
|
||||
+texture=84b8d4241cadc54c
|
||||
+texture=8c13f2460117fee9
|
||||
+texture=df081a927def3f90
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
[Profile]
|
||||
Device = OpenXR/0/OpenXR Controller
|
||||
Buttons/A = `Right Button A`
|
||||
Buttons/B = `Right Button B`
|
||||
Buttons/X = `Left Button X`
|
||||
Buttons/Y = `Left Button Y`
|
||||
Buttons/Z = `Right Button Thumbstick`
|
||||
Buttons/Start = `Left Button Menu`
|
||||
Main Stick/Up = `Left Thumbstick Y+`
|
||||
Main Stick/Down = `Left Thumbstick Y-`
|
||||
Main Stick/Left = `Left Thumbstick X-`
|
||||
Main Stick/Right = `Left Thumbstick X+`
|
||||
Main Stick/Calibration = 100.00
|
||||
C-Stick/Up = `Right Thumbstick Y+`
|
||||
C-Stick/Down = `Right Thumbstick Y-`
|
||||
C-Stick/Left = `Right Thumbstick X-`
|
||||
C-Stick/Right = `Right Thumbstick X+`
|
||||
C-Stick/Calibration = 100.00
|
||||
Triggers/L = `Left Trigger`
|
||||
Triggers/R = `Right Trigger`
|
||||
Triggers/L-Analog = `Left Trigger`
|
||||
Triggers/R-Analog = `Right Trigger`
|
||||
Rumble/Motor = `Motor`
|
||||
@@ -0,0 +1,21 @@
|
||||
[Profile]
|
||||
Device = OpenXR/0/OpenXR Controller
|
||||
Buttons/A = `Right Button A`
|
||||
Buttons/B = `Right Trigger`
|
||||
Buttons/1 = `Right Thumbstick Y+`
|
||||
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`
|
||||
Nunchuk/Buttons/Z = `Left Trigger`
|
||||
Nunchuk/Stick/Up = `Left Thumbstick Y+`
|
||||
Nunchuk/Stick/Down = `Left Thumbstick Y-`
|
||||
Nunchuk/Stick/Left = `Left Thumbstick X-`
|
||||
Nunchuk/Stick/Right = `Left Thumbstick X+`
|
||||
Rumble/Motor = Motor
|
||||
@@ -0,0 +1,14 @@
|
||||
[Profile]
|
||||
Device = OpenXR/0/OpenXR Controller
|
||||
Buttons/A = `Right Button A`
|
||||
Buttons/B = `Right Trigger`
|
||||
Buttons/1 = `Left Button X`
|
||||
Buttons/2 = `Right Button B`
|
||||
Buttons/- = `Left Button Y`
|
||||
Buttons/+ = `Left Button Squeeze`
|
||||
Buttons/Home = `Left Button Menu`
|
||||
D-Pad/Up = `Left Thumbstick Y+`
|
||||
D-Pad/Down = `Left Thumbstick Y-`
|
||||
D-Pad/Left = `Left Thumbstick X-`
|
||||
D-Pad/Right = `Left Thumbstick X+`
|
||||
Rumble/Motor = `Motor`
|
||||
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 963 B |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
@@ -3,6 +3,8 @@ set(MZ_BUILD_TESTS OFF)
|
||||
set(MZ_BUILD_UNIT_TESTS OFF)
|
||||
set(MZ_BUILD_FUZZ_TESTS OFF)
|
||||
set(MZ_CODE_COVERAGE OFF)
|
||||
set(MZ_FETCH_LIBS OFF CACHE BOOL "Disable minizip-ng vendored dependency fetch/build." FORCE)
|
||||
set(MZ_FORCE_FETCH_LIBS OFF CACHE BOOL "Disable minizip-ng forced vendored dependency fetch/build." FORCE)
|
||||
set(SKIP_INSTALL_ALL ON)
|
||||
|
||||
add_subdirectory(minizip-ng)
|
||||
|
||||
@@ -6,6 +6,9 @@ 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.
|
||||
|
||||
Please read the [FAQ](https://dolphin-emu.org/docs/faq/) before using Dolphin.
|
||||
|
||||
## System Requirements
|
||||
@@ -49,6 +52,36 @@ Make sure to pull submodules before building:
|
||||
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.
|
||||
|
||||
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
|
||||
```
|
||||
|
||||
If you prefer building OpenXR separately first, the repository also includes
|
||||
`Externals/OpenXR/build-win64/OPENXR.sln`.
|
||||
|
||||
The "Release" solution configuration includes performance optimizations for the best user experience but complicates debugging Dolphin.
|
||||
The "Debug" solution configuration is significantly slower, more verbose and less permissive but makes debugging Dolphin easier.
|
||||
|
||||
|
||||
@@ -17,6 +17,8 @@ android {
|
||||
buildConfig = true
|
||||
}
|
||||
|
||||
flavorDimensions += "device"
|
||||
|
||||
compileOptions {
|
||||
// Flag to enable support for the new language APIs
|
||||
isCoreLibraryDesugaringEnabled = true
|
||||
@@ -92,6 +94,55 @@ android {
|
||||
versionNameSuffix = "-debug"
|
||||
isJniDebuggable = true
|
||||
}
|
||||
|
||||
// Diagnostic release variants. These keep the release application ID so they can be
|
||||
// tested against the same Quest package data/runtime profile as the real release build.
|
||||
// They require the same release signing properties as questRelease.
|
||||
create("releaseNoMinify") {
|
||||
initWith(getByName("release"))
|
||||
matchingFallbacks += listOf("release")
|
||||
signingConfig = signingConfigs.getByName("debug")
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
|
||||
create("releaseDebuggable") {
|
||||
initWith(getByName("releaseNoMinify"))
|
||||
matchingFallbacks += listOf("release")
|
||||
isDebuggable = true
|
||||
isJniDebuggable = true
|
||||
}
|
||||
}
|
||||
|
||||
productFlavors {
|
||||
create("standard") {
|
||||
dimension = "device"
|
||||
buildConfigField("boolean", "IS_QUEST", "false")
|
||||
ndk {
|
||||
abiFilters += listOf("arm64-v8a", "x86_64")
|
||||
}
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
arguments += "-DENABLE_VR=OFF"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
create("quest") {
|
||||
dimension = "device"
|
||||
applicationIdSuffix = ".quest"
|
||||
versionNameSuffix = "-quest"
|
||||
buildConfigField("boolean", "IS_QUEST", "true")
|
||||
manifestPlaceholders["questSupportedDevices"] = "quest2|quest3|quest3s|questpro"
|
||||
ndk {
|
||||
abiFilters += listOf("arm64-v8a")
|
||||
}
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
arguments += "-DENABLE_VR=ON"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
externalNativeBuild {
|
||||
@@ -111,7 +162,6 @@ android {
|
||||
"-DCMAKE_BUILD_TYPE=RelWithDebInfo"
|
||||
// , "-DENABLE_GENERIC=ON"
|
||||
)
|
||||
abiFilters("arm64-v8a", "x86_64") //, "armeabi-v7a", "x86"
|
||||
|
||||
// Uncomment the line below if you don't want to build the C++ unit tests
|
||||
//targets("main", "hook_impl", "main_hook", "gsl_alloc_hook", "file_redirect_hook")
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
package org.dolphinemu.dolphinemu
|
||||
|
||||
import android.content.Intent
|
||||
import android.content.res.Resources
|
||||
import android.view.Surface
|
||||
import android.widget.Toast
|
||||
@@ -13,6 +14,7 @@ import androidx.core.content.ContextCompat
|
||||
import androidx.core.util.Pair
|
||||
import org.dolphinemu.dolphinemu.activities.EmulationActivity
|
||||
import org.dolphinemu.dolphinemu.dialogs.AlertMessage
|
||||
import org.dolphinemu.dolphinemu.ui.main.MainActivity
|
||||
import org.dolphinemu.dolphinemu.utils.CompressCallback
|
||||
import org.dolphinemu.dolphinemu.utils.Log
|
||||
import java.lang.ref.WeakReference
|
||||
@@ -366,6 +368,9 @@ object NativeLibrary {
|
||||
@JvmStatic
|
||||
external fun StopEmulation()
|
||||
|
||||
@JvmStatic
|
||||
external fun RequestOpenXRRecenter()
|
||||
|
||||
/**
|
||||
* Ensures that IsRunning will return true from now on until emulation exits.
|
||||
* (If this is not called, IsRunning will start returning true at some point
|
||||
@@ -551,7 +556,18 @@ object NativeLibrary {
|
||||
Log.warning("[NativeLibrary] EmulationActivity is null.")
|
||||
} else {
|
||||
Log.verbose("[NativeLibrary] Finishing EmulationActivity.")
|
||||
emulationActivity.runOnUiThread(emulationActivity::finish)
|
||||
emulationActivity.runOnUiThread {
|
||||
// Quest VR launches start EmulationActivity in a new task and finish MainActivity
|
||||
// (see EmulationActivity.startEmulationActivity), so the back stack is empty.
|
||||
// Re-launch MainActivity in that case so the user lands on the game list instead
|
||||
// of the app exiting.
|
||||
if (emulationActivity.isTaskRoot) {
|
||||
val intent = Intent(emulationActivity, MainActivity::class.java)
|
||||
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP)
|
||||
emulationActivity.startActivity(intent)
|
||||
}
|
||||
emulationActivity.finish()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -44,6 +44,7 @@ import org.dolphinemu.dolphinemu.features.input.model.ControllerInterface
|
||||
import org.dolphinemu.dolphinemu.features.input.model.DolphinSensorEventListener
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.BooleanSetting
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.IntSetting
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.QuestVrSettings
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.Settings
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.StringSetting
|
||||
import org.dolphinemu.dolphinemu.features.settings.ui.MenuTag
|
||||
@@ -81,6 +82,7 @@ class EmulationActivity : AppCompatActivity(), ThemeProvider {
|
||||
private var riivolution = false
|
||||
private var launchSystemMenu = false
|
||||
private var menuToastShown = false
|
||||
private var stopRequestedForFinish = false
|
||||
|
||||
private var skylanderData = Skylander(-1, -1, "Slot")
|
||||
private var infinityFigureData = Figure(-1, "Position")
|
||||
@@ -317,6 +319,10 @@ class EmulationActivity : AppCompatActivity(), ThemeProvider {
|
||||
override fun onStop() {
|
||||
super.onStop()
|
||||
settings.saveSettings()
|
||||
|
||||
if (isFinishing) {
|
||||
stopEmulationForActivityFinish()
|
||||
}
|
||||
}
|
||||
|
||||
fun onTitleChanged() {
|
||||
@@ -339,10 +345,27 @@ class EmulationActivity : AppCompatActivity(), ThemeProvider {
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
if (!isChangingConfigurations) {
|
||||
stopEmulationForActivityFinish()
|
||||
}
|
||||
|
||||
super.onDestroy()
|
||||
settings.close()
|
||||
}
|
||||
|
||||
private fun stopEmulationForActivityFinish() {
|
||||
if (stopRequestedForFinish) {
|
||||
return
|
||||
}
|
||||
|
||||
stopRequestedForFinish = true
|
||||
stopIgnoringLaunchRequests()
|
||||
|
||||
if (NativeLibrary.IsRunning()) {
|
||||
emulationFragment?.stopEmulation()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onBackPressed() {
|
||||
if (!closeSubmenu()) {
|
||||
toggleMenu()
|
||||
@@ -435,6 +458,7 @@ class EmulationActivity : AppCompatActivity(), ThemeProvider {
|
||||
val wii = NativeLibrary.IsEmulatingWii()
|
||||
val id = if (wii) R.menu.menu_overlay_controls_wii else R.menu.menu_overlay_controls_gc
|
||||
popup.menuInflater.inflate(id, menu)
|
||||
menu.findItem(R.id.menu_emulation_recenter_vr)?.isVisible = QuestVrSettings.isQuestBuild()
|
||||
|
||||
// Populate the switch value for joystick center on touch
|
||||
menu.findItem(R.id.menu_emulation_joystick_rel_center).isChecked =
|
||||
@@ -517,6 +541,7 @@ class EmulationActivity : AppCompatActivity(), ThemeProvider {
|
||||
MENU_ACTION_SETTINGS -> SettingsActivity.launch(this, MenuTag.SETTINGS)
|
||||
MENU_ACTION_SKYLANDERS -> showSkylanderPortalSettings()
|
||||
MENU_ACTION_INFINITY_BASE -> showInfinityBaseSettings()
|
||||
MENU_ACTION_RECENTER_OPENXR -> NativeLibrary.RequestOpenXRRecenter()
|
||||
MENU_ACTION_EXIT -> emulationFragment!!.stopEmulation()
|
||||
}
|
||||
}
|
||||
@@ -1077,6 +1102,7 @@ class EmulationActivity : AppCompatActivity(), ThemeProvider {
|
||||
const val MENU_ACTION_SKYLANDERS = 36
|
||||
const val MENU_ACTION_INFINITY_BASE = 37
|
||||
const val MENU_ACTION_LATCHING_CONTROLS = 38
|
||||
const val MENU_ACTION_RECENTER_OPENXR = 39
|
||||
|
||||
init {
|
||||
buttonsActionsMap.apply {
|
||||
@@ -1087,6 +1113,7 @@ class EmulationActivity : AppCompatActivity(), ThemeProvider {
|
||||
append(R.id.menu_emulation_choose_controller, MENU_ACTION_CHOOSE_CONTROLLER)
|
||||
append(R.id.menu_emulation_joystick_rel_center, MENU_ACTION_JOYSTICK_REL_CENTER)
|
||||
append(R.id.menu_emulation_reset_overlay, MENU_ACTION_RESET_OVERLAY)
|
||||
append(R.id.menu_emulation_recenter_vr, MENU_ACTION_RECENTER_OPENXR)
|
||||
append(R.id.menu_emulation_ir_recenter, MENU_SET_IR_RECENTER)
|
||||
append(R.id.menu_emulation_set_ir_mode, MENU_SET_IR_MODE)
|
||||
append(R.id.menu_emulation_choose_doubletap, MENU_ACTION_CHOOSE_DOUBLETAP)
|
||||
@@ -1111,10 +1138,11 @@ class EmulationActivity : AppCompatActivity(), ThemeProvider {
|
||||
riivolution: Boolean
|
||||
) {
|
||||
ignoreLaunchRequests = true
|
||||
prepareQuestLaunchSettings(false)
|
||||
val launcher = Intent(activity, EmulationActivity::class.java)
|
||||
launcher.putExtra(EXTRA_SELECTED_GAMES, filePaths)
|
||||
launcher.putExtra(EXTRA_RIIVOLUTION, riivolution)
|
||||
activity.startActivity(launcher)
|
||||
startEmulationActivity(activity, launcher)
|
||||
}
|
||||
|
||||
private fun performLaunchChecks(activity: FragmentActivity, fromIntent: Boolean, continueCallback: Runnable) {
|
||||
@@ -1165,9 +1193,21 @@ class EmulationActivity : AppCompatActivity(), ThemeProvider {
|
||||
|
||||
private fun launchSystemMenuWithoutChecks(activity: FragmentActivity) {
|
||||
ignoreLaunchRequests = true
|
||||
prepareQuestLaunchSettings(true)
|
||||
val launcher = Intent(activity, EmulationActivity::class.java)
|
||||
launcher.putExtra(EXTRA_SYSTEM_MENU, true)
|
||||
activity.startActivity(launcher)
|
||||
startEmulationActivity(activity, launcher)
|
||||
}
|
||||
|
||||
private fun startEmulationActivity(activity: FragmentActivity, launcher: Intent) {
|
||||
if (QuestVrSettings.isLaunchInVrEnabled()) {
|
||||
launcher.addCategory("com.oculus.intent.category.VR")
|
||||
launcher.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP)
|
||||
activity.startActivity(launcher)
|
||||
activity.finish()
|
||||
} else {
|
||||
activity.startActivity(launcher)
|
||||
}
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
@@ -1175,6 +1215,21 @@ class EmulationActivity : AppCompatActivity(), ThemeProvider {
|
||||
ignoreLaunchRequests = false
|
||||
}
|
||||
|
||||
private fun prepareQuestLaunchSettings(launchSystemMenu: Boolean) {
|
||||
if (!QuestVrSettings.isQuestBuild()) {
|
||||
return
|
||||
}
|
||||
|
||||
val settings = Settings()
|
||||
settings.loadSettings()
|
||||
try {
|
||||
QuestVrSettings.prepareLaunchSettings(settings, launchSystemMenu)
|
||||
settings.saveSettings()
|
||||
} finally {
|
||||
settings.close()
|
||||
}
|
||||
}
|
||||
|
||||
private fun areCoordinatesOutside(view: View?, x: Float, y: Float): Boolean {
|
||||
if (view == null)
|
||||
return true
|
||||
|
||||
@@ -12,6 +12,8 @@ import androidx.annotation.Keep
|
||||
*/
|
||||
@Keep
|
||||
class Control private constructor(private val pointer: Long) {
|
||||
external fun getName(): String
|
||||
|
||||
external fun getUiName(): String
|
||||
|
||||
external fun getControlReference(): ControlReference
|
||||
|
||||
@@ -14,6 +14,8 @@ import androidx.annotation.Keep
|
||||
class ControlGroup private constructor(private val pointer: Long) {
|
||||
external fun getUiName(): String
|
||||
|
||||
external fun getName(): String
|
||||
|
||||
external fun getGroupType(): Int
|
||||
|
||||
external fun getDefaultEnabledValue(): Int
|
||||
|
||||
@@ -55,6 +55,9 @@ class EmulatedController private constructor(private val pointer: Long) : Contro
|
||||
@JvmStatic
|
||||
external fun getWiimote(controllerIndex: Int): EmulatedController
|
||||
|
||||
@JvmStatic
|
||||
external fun getHotkeys(): EmulatedController
|
||||
|
||||
@JvmStatic
|
||||
external fun getWiimoteAttachment(
|
||||
controllerIndex: Int,
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
package org.dolphinemu.dolphinemu.features.settings.model
|
||||
|
||||
class AdHocFloatSetting(
|
||||
private val file: String,
|
||||
private val section: String,
|
||||
private val key: String,
|
||||
private val defaultValue: Float
|
||||
) : AbstractFloatSetting {
|
||||
init {
|
||||
require(
|
||||
NativeConfig.isSettingSaveable(
|
||||
file,
|
||||
section,
|
||||
key
|
||||
)
|
||||
) { "File/section/key is unknown or legacy" }
|
||||
}
|
||||
|
||||
override val isOverridden: Boolean
|
||||
get() = NativeConfig.isOverridden(file, section, key)
|
||||
|
||||
override val isRuntimeEditable: Boolean = true
|
||||
|
||||
override fun delete(settings: Settings): Boolean {
|
||||
return NativeConfig.deleteKey(settings.writeLayer, file, section, key)
|
||||
}
|
||||
|
||||
override val float: Float
|
||||
get() = NativeConfig.getFloat(NativeConfig.LAYER_ACTIVE, file, section, key, defaultValue)
|
||||
|
||||
override fun setFloat(settings: Settings, newValue: Float) {
|
||||
NativeConfig.setFloat(settings.writeLayer, file, section, key, newValue)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
package org.dolphinemu.dolphinemu.features.settings.model
|
||||
|
||||
class AdHocIntSetting(
|
||||
private val file: String,
|
||||
private val section: String,
|
||||
private val key: String,
|
||||
private val defaultValue: Int
|
||||
) : AbstractIntSetting {
|
||||
init {
|
||||
require(
|
||||
NativeConfig.isSettingSaveable(
|
||||
file,
|
||||
section,
|
||||
key
|
||||
)
|
||||
) { "File/section/key is unknown or legacy" }
|
||||
}
|
||||
|
||||
override val isOverridden: Boolean
|
||||
get() = NativeConfig.isOverridden(file, section, key)
|
||||
|
||||
override val isRuntimeEditable: Boolean = true
|
||||
|
||||
override fun delete(settings: Settings): Boolean {
|
||||
return NativeConfig.deleteKey(settings.writeLayer, file, section, key)
|
||||
}
|
||||
|
||||
override val int: Int
|
||||
get() = NativeConfig.getInt(NativeConfig.LAYER_ACTIVE, file, section, key, defaultValue)
|
||||
|
||||
override fun setInt(settings: Settings, newValue: Int) {
|
||||
NativeConfig.setInt(settings.writeLayer, file, section, key, newValue)
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
package org.dolphinemu.dolphinemu.features.settings.model
|
||||
|
||||
import org.dolphinemu.dolphinemu.BuildConfig
|
||||
import java.util.*
|
||||
|
||||
enum class BooleanSetting(
|
||||
@@ -851,7 +852,7 @@ enum class BooleanSetting(
|
||||
Settings.FILE_GFX,
|
||||
Settings.SECTION_GFX_HACKS,
|
||||
"ImmediateXFBEnable",
|
||||
false
|
||||
BuildConfig.IS_QUEST
|
||||
),
|
||||
GFX_HACK_SKIP_DUPLICATE_XFBS(
|
||||
Settings.FILE_GFX,
|
||||
|
||||
@@ -13,6 +13,7 @@ enum class FloatSetting(
|
||||
MAIN_OVERCLOCK(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "Overclock", 1.0f),
|
||||
MAIN_VI_OVERCLOCK(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "VIOverclock", 1.0f),
|
||||
GFX_CC_GAME_GAMMA(Settings.FILE_GFX, Settings.SECTION_GFX_COLOR_CORRECTION, "GameGamma", 2.35f),
|
||||
GFX_VR_UNITS_PER_METER(Settings.FILE_GFX, "VR", "UnitsPerMeter", 1.0f),
|
||||
GFX_STEREO_DEPTH(Settings.FILE_GFX, Settings.SECTION_STEREOSCOPY, "StereoDepth", 20.0f),
|
||||
GFX_STEREO_CONVERGENCE(Settings.FILE_GFX, Settings.SECTION_STEREOSCOPY, "StereoConvergence", 20.0f);
|
||||
|
||||
|
||||
@@ -0,0 +1,248 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
package org.dolphinemu.dolphinemu.features.settings.model
|
||||
|
||||
import org.dolphinemu.dolphinemu.utils.DirectoryInitialization
|
||||
import java.io.File
|
||||
|
||||
object QuestGameOverrideSettings {
|
||||
enum class Category(
|
||||
val mainSection: String,
|
||||
val enabledSection: String,
|
||||
val defaultEnabledWithoutSection: Boolean
|
||||
) {
|
||||
HIDE_OBJECTS("HideObjectCodes", "HideObjectCodes_Enabled", false),
|
||||
SHADER_OVERRIDES("ShaderOverride", "ShaderOverride_Enable", true),
|
||||
ELEMENTS_GROUP_OVERRIDES(
|
||||
"ElementsGroupOverride",
|
||||
"ElementsGroupOverride_Enable",
|
||||
true
|
||||
)
|
||||
}
|
||||
|
||||
data class Entry(val name: String, val enabled: Boolean)
|
||||
|
||||
fun loadEntries(gameId: String, revision: Int, category: Category): List<Entry> {
|
||||
return readMergedEntries(gameId, revision, category)
|
||||
}
|
||||
|
||||
fun isEnabled(gameId: String, revision: Int, category: Category, name: String): Boolean {
|
||||
return loadEntries(gameId, revision, category).firstOrNull { it.name == name }?.enabled ?: false
|
||||
}
|
||||
|
||||
fun setEnabled(gameId: String, revision: Int, category: Category, name: String, enabled: Boolean) {
|
||||
val lines = readLines(getUserFile(gameId))
|
||||
val entries = readMergedEntries(gameId, revision, category)
|
||||
if (entries.none { it.name == name }) {
|
||||
return
|
||||
}
|
||||
|
||||
val enabledNames = entries
|
||||
.filter { if (it.name == name) enabled else it.enabled }
|
||||
.mapTo(LinkedHashSet()) { it.name }
|
||||
|
||||
writeEnabledSection(gameId, lines, category, enabledNames)
|
||||
}
|
||||
|
||||
private data class SectionNames(val hasSection: Boolean, val names: Set<String>)
|
||||
|
||||
private fun getUserFile(gameId: String): File =
|
||||
File(DirectoryInitialization.getUserDirectory(), "GameSettingsVR/$gameId.ini")
|
||||
|
||||
private fun getSysIniFile(filename: String): File =
|
||||
File(DirectoryInitialization.getSysDirectory(), "GameSettingsVR/$filename")
|
||||
|
||||
private fun getUserIniFile(filename: String): File =
|
||||
File(DirectoryInitialization.getUserDirectory(), "GameSettingsVR/$filename")
|
||||
|
||||
private data class ParsedFile(
|
||||
val names: List<String>,
|
||||
val enabledSection: SectionNames
|
||||
)
|
||||
|
||||
private fun readLines(file: File): List<String> {
|
||||
return if (file.isFile) file.readLines() else emptyList()
|
||||
}
|
||||
|
||||
private fun parseFile(lines: List<String>, category: Category): ParsedFile =
|
||||
ParsedFile(
|
||||
readEntryNames(lines, category.mainSection),
|
||||
readEntryNamesWithSectionState(lines, category.enabledSection)
|
||||
)
|
||||
|
||||
private fun getGameIniFilenames(gameId: String, revision: Int): List<String> {
|
||||
if (gameId.isEmpty()) {
|
||||
return emptyList()
|
||||
}
|
||||
|
||||
val filenames = ArrayList<String>()
|
||||
if (gameId.length == 6) {
|
||||
filenames.add("${gameId.substring(0, 1)}.ini")
|
||||
filenames.add("${gameId.substring(0, 3)}.ini")
|
||||
}
|
||||
filenames.add("$gameId.ini")
|
||||
if (revision != 0) {
|
||||
filenames.add("${gameId}r$revision.ini")
|
||||
}
|
||||
return filenames
|
||||
}
|
||||
|
||||
private fun applyParsedFile(
|
||||
entriesByName: LinkedHashMap<String, Entry>,
|
||||
parsed: ParsedFile,
|
||||
category: Category
|
||||
) {
|
||||
parsed.names.forEach { name ->
|
||||
val enabled = if (parsed.enabledSection.hasSection) {
|
||||
parsed.enabledSection.names.contains(name)
|
||||
} else {
|
||||
category.defaultEnabledWithoutSection
|
||||
}
|
||||
entriesByName[name] = Entry(name, enabled)
|
||||
}
|
||||
|
||||
if (parsed.enabledSection.hasSection) {
|
||||
entriesByName.replaceAll { name, entry ->
|
||||
entry.copy(enabled = parsed.enabledSection.names.contains(name))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun readMergedEntries(gameId: String, revision: Int, category: Category): List<Entry> {
|
||||
val entriesByName = LinkedHashMap<String, Entry>()
|
||||
val filenames = getGameIniFilenames(gameId, revision)
|
||||
|
||||
filenames.forEach { filename ->
|
||||
applyParsedFile(
|
||||
entriesByName,
|
||||
parseFile(readLines(getSysIniFile(filename)), category),
|
||||
category
|
||||
)
|
||||
}
|
||||
filenames.forEach { filename ->
|
||||
applyParsedFile(
|
||||
entriesByName,
|
||||
parseFile(readLines(getUserIniFile(filename)), category),
|
||||
category
|
||||
)
|
||||
}
|
||||
|
||||
return entriesByName.values.toList()
|
||||
}
|
||||
|
||||
private fun readEntryNames(lines: List<String>, section: String): List<String> {
|
||||
val result = ArrayList<String>()
|
||||
var inSection = false
|
||||
val header = "[$section]"
|
||||
for (line in lines.map { it.removeSuffix("\r") }) {
|
||||
if (line == header) {
|
||||
inSection = true
|
||||
} else if (inSection && line.startsWith("[")) {
|
||||
break
|
||||
} else if (inSection && line.isNotEmpty() && line.startsWith("$")) {
|
||||
val name = line.substring(1)
|
||||
if (name.isNotEmpty()) {
|
||||
result.add(name)
|
||||
}
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
private fun readEntryNamesWithSectionState(lines: List<String>, section: String): SectionNames {
|
||||
var hasSection = false
|
||||
val names = readEntryNamesWithSectionFlag(lines, section) { hasSection = true }
|
||||
return SectionNames(hasSection, names)
|
||||
}
|
||||
|
||||
private fun readEntryNamesWithSectionFlag(
|
||||
lines: List<String>,
|
||||
section: String,
|
||||
onSectionFound: () -> Unit
|
||||
): Set<String> {
|
||||
val result = LinkedHashSet<String>()
|
||||
var inSection = false
|
||||
val header = "[$section]"
|
||||
for (line in lines.map { it.removeSuffix("\r") }) {
|
||||
if (line == header) {
|
||||
inSection = true
|
||||
onSectionFound()
|
||||
} else if (inSection && line.startsWith("[")) {
|
||||
break
|
||||
} else if (inSection && line.isNotEmpty() && line.startsWith("$")) {
|
||||
val name = line.substring(1)
|
||||
if (name.isNotEmpty()) {
|
||||
result.add(name)
|
||||
}
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
private fun writeEnabledSection(
|
||||
gameId: String,
|
||||
lines: List<String>,
|
||||
category: Category,
|
||||
enabledNames: Set<String>
|
||||
) {
|
||||
val stripped = stripSection(lines, category.enabledSection).toMutableList()
|
||||
val sectionLines = ArrayList<String>()
|
||||
sectionLines.add("[${category.enabledSection}]")
|
||||
enabledNames.forEach { sectionLines.add("$" + it) }
|
||||
|
||||
val insertIndex = stripped.indexOfFirst { it.removeSuffix("\r") == "[${category.mainSection}]" }
|
||||
.let { if (it >= 0) it else stripped.size }
|
||||
if (insertIndex > 0 && stripped[insertIndex - 1].isNotEmpty()) {
|
||||
sectionLines.add(0, "")
|
||||
}
|
||||
|
||||
stripped.addAll(insertIndex, sectionLines)
|
||||
|
||||
val file = getUserFile(gameId)
|
||||
file.parentFile?.mkdirs()
|
||||
file.writeText(stripped.joinToString("\n").trimEnd() + "\n")
|
||||
}
|
||||
|
||||
private fun stripSection(lines: List<String>, section: String): List<String> {
|
||||
val result = ArrayList<String>()
|
||||
var skipping = false
|
||||
val header = "[$section]"
|
||||
for (line in lines) {
|
||||
val trimmed = line.removeSuffix("\r")
|
||||
if (trimmed == header) {
|
||||
skipping = true
|
||||
continue
|
||||
}
|
||||
if (skipping && trimmed.startsWith("[")) {
|
||||
skipping = false
|
||||
}
|
||||
if (!skipping) {
|
||||
result.add(trimmed)
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
}
|
||||
|
||||
class QuestGameOverrideEnabledSetting(
|
||||
private val gameId: String,
|
||||
private val revision: Int,
|
||||
private val category: QuestGameOverrideSettings.Category,
|
||||
private val name: String
|
||||
) : AbstractBooleanSetting {
|
||||
override val isOverridden: Boolean = true
|
||||
|
||||
override val isRuntimeEditable: Boolean = false
|
||||
|
||||
override fun delete(settings: Settings): Boolean {
|
||||
QuestGameOverrideSettings.setEnabled(gameId, revision, category, name, false)
|
||||
return true
|
||||
}
|
||||
|
||||
override val boolean: Boolean
|
||||
get() = QuestGameOverrideSettings.isEnabled(gameId, revision, category, name)
|
||||
|
||||
override fun setBoolean(settings: Settings, newValue: Boolean) {
|
||||
QuestGameOverrideSettings.setEnabled(gameId, revision, category, name, newValue)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,327 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
package org.dolphinemu.dolphinemu.features.settings.model
|
||||
|
||||
import org.dolphinemu.dolphinemu.NativeLibrary
|
||||
import org.dolphinemu.dolphinemu.utils.DirectoryInitialization
|
||||
import java.io.File
|
||||
import java.util.Locale
|
||||
|
||||
object QuestGameVrConfigSettings {
|
||||
private const val VR_SECTION = "Graphics.VR"
|
||||
private const val LEGACY_VR_SECTION = "GFX.VR"
|
||||
|
||||
private val knownKeys = setOf(
|
||||
"EnableOpenXR",
|
||||
"UnitsPerMeter",
|
||||
"LeanBackAngle",
|
||||
"CameraForward",
|
||||
"CameraHeight",
|
||||
"VirtualScreen",
|
||||
"ScreenDistance",
|
||||
"ScreenSize",
|
||||
"HeadLockedCurvature",
|
||||
"DontClearScreen",
|
||||
"LoadCustomShaders",
|
||||
"DisableCPUCull",
|
||||
"OpcodeReplay",
|
||||
"ForcedVBIFrequency",
|
||||
"AutoVBIFromHMD",
|
||||
"AutoLayerSpread",
|
||||
"LayerOffset",
|
||||
"ElementDepth",
|
||||
"ClearEFBCopies",
|
||||
"UseVulkanMultiview",
|
||||
"AndroidDirectToHMD",
|
||||
"ARMode",
|
||||
"ARModeDebug",
|
||||
"ARBackgroundAlpha"
|
||||
)
|
||||
|
||||
fun getStoredKeys(gameId: String, revision: Int): Set<String> =
|
||||
readMergedValues(gameId, revision).keys
|
||||
|
||||
fun hasStoredValues(gameId: String, revision: Int): Boolean =
|
||||
getStoredKeys(gameId, revision).isNotEmpty()
|
||||
|
||||
fun getBoolean(gameId: String, revision: Int, key: String, defaultValue: Boolean): Boolean =
|
||||
parseBoolean(readMergedValues(gameId, revision)[key]) ?: defaultValue
|
||||
|
||||
fun setBoolean(gameId: String, key: String, value: Boolean) {
|
||||
writeLocalValue(gameId, key, if (value) "True" else "False")
|
||||
}
|
||||
|
||||
fun getInt(gameId: String, revision: Int, key: String, defaultValue: Int): Int =
|
||||
readMergedValues(gameId, revision)[key]?.toIntOrNull() ?: defaultValue
|
||||
|
||||
fun setInt(gameId: String, key: String, value: Int) {
|
||||
writeLocalValue(gameId, key, value.toString())
|
||||
}
|
||||
|
||||
fun getFloat(gameId: String, revision: Int, key: String, defaultValue: Float): Float =
|
||||
readMergedValues(gameId, revision)[key]?.toFloatOrNull() ?: defaultValue
|
||||
|
||||
fun setFloat(gameId: String, key: String, value: Float) {
|
||||
writeLocalValue(gameId, key, value.toString())
|
||||
}
|
||||
|
||||
fun hasLocalValue(gameId: String, key: String): Boolean =
|
||||
readVRSectionValues(getUserFile(gameId)).containsKey(key)
|
||||
|
||||
fun deleteLocalValue(gameId: String, key: String): Boolean {
|
||||
val file = getUserFile(gameId)
|
||||
if (!file.isFile) {
|
||||
return false
|
||||
}
|
||||
|
||||
val lines = file.readLines()
|
||||
val updated = ArrayList<String>()
|
||||
var inVrSection = false
|
||||
var changed = false
|
||||
|
||||
for (line in lines) {
|
||||
val trimmed = line.removeSuffix("\r").trim()
|
||||
if (isSectionHeader(trimmed)) {
|
||||
inVrSection = isVRSectionHeader(trimmed)
|
||||
updated.add(line.removeSuffix("\r"))
|
||||
continue
|
||||
}
|
||||
|
||||
if (inVrSection && isKeyLine(trimmed, key)) {
|
||||
changed = true
|
||||
continue
|
||||
}
|
||||
|
||||
updated.add(line.removeSuffix("\r"))
|
||||
}
|
||||
|
||||
if (changed) {
|
||||
file.writeText(updated.joinToString("\n").trimEnd() + "\n")
|
||||
}
|
||||
return changed
|
||||
}
|
||||
|
||||
private fun readMergedValues(gameId: String, revision: Int): Map<String, String> {
|
||||
val values = LinkedHashMap<String, String>()
|
||||
val filenames = getGameIniFilenames(gameId, revision)
|
||||
|
||||
filenames.forEach { filename ->
|
||||
values.putAll(readVRSectionValues(getSysIniFile(filename)))
|
||||
}
|
||||
filenames.forEach { filename ->
|
||||
values.putAll(readVRSectionValues(getUserIniFile(filename)))
|
||||
}
|
||||
|
||||
return values
|
||||
}
|
||||
|
||||
private fun readVRSectionValues(file: File): Map<String, String> {
|
||||
if (!file.isFile) {
|
||||
return emptyMap()
|
||||
}
|
||||
|
||||
val values = LinkedHashMap<String, String>()
|
||||
var inVrSection = false
|
||||
|
||||
file.readLines().forEach { rawLine ->
|
||||
val line = rawLine.removeSuffix("\r")
|
||||
val trimmed = line.trim()
|
||||
if (trimmed.isEmpty()) {
|
||||
return@forEach
|
||||
}
|
||||
|
||||
if (isSectionHeader(trimmed)) {
|
||||
inVrSection = isVRSectionHeader(trimmed)
|
||||
return@forEach
|
||||
}
|
||||
|
||||
if (!inVrSection || trimmed.startsWith("#") || trimmed.startsWith(";") ||
|
||||
trimmed.startsWith("$") || trimmed.startsWith("*")
|
||||
) {
|
||||
return@forEach
|
||||
}
|
||||
|
||||
val separator = trimmed.indexOf('=')
|
||||
if (separator < 0) {
|
||||
return@forEach
|
||||
}
|
||||
|
||||
val key = canonicalKey(trimmed.substring(0, separator).trim()) ?: return@forEach
|
||||
values[key] = trimmed.substring(separator + 1).trim()
|
||||
}
|
||||
|
||||
return values
|
||||
}
|
||||
|
||||
private fun writeLocalValue(gameId: String, key: String, value: String) {
|
||||
val file = getUserFile(gameId)
|
||||
val lines = if (file.isFile) file.readLines() else emptyList()
|
||||
val updated = ArrayList<String>()
|
||||
var inVrSection = false
|
||||
var foundVrSection = false
|
||||
var wroteValue = false
|
||||
|
||||
for (line in lines) {
|
||||
val cleanLine = line.removeSuffix("\r")
|
||||
val trimmed = cleanLine.trim()
|
||||
|
||||
if (isSectionHeader(trimmed)) {
|
||||
inVrSection = isVRSectionHeader(trimmed)
|
||||
updated.add(cleanLine)
|
||||
|
||||
if (inVrSection) {
|
||||
foundVrSection = true
|
||||
updated.add("$key = $value")
|
||||
wroteValue = true
|
||||
}
|
||||
continue
|
||||
}
|
||||
|
||||
if (inVrSection && isKeyLine(trimmed, key)) {
|
||||
continue
|
||||
}
|
||||
|
||||
updated.add(cleanLine)
|
||||
}
|
||||
|
||||
if (!foundVrSection) {
|
||||
if (updated.isNotEmpty() && updated.last().isNotEmpty()) {
|
||||
updated.add("")
|
||||
}
|
||||
updated.add("[$VR_SECTION]")
|
||||
updated.add("$key = $value")
|
||||
} else if (!wroteValue) {
|
||||
updated.add("$key = $value")
|
||||
}
|
||||
|
||||
file.parentFile?.mkdirs()
|
||||
file.writeText(updated.joinToString("\n").trimEnd() + "\n")
|
||||
}
|
||||
|
||||
private fun isKeyLine(line: String, key: String): Boolean {
|
||||
val separator = line.indexOf('=')
|
||||
if (separator < 0) {
|
||||
return false
|
||||
}
|
||||
return line.substring(0, separator).trim().equals(key, ignoreCase = true)
|
||||
}
|
||||
|
||||
private fun canonicalKey(key: String): String? =
|
||||
knownKeys.firstOrNull { it.equals(key, ignoreCase = true) }
|
||||
|
||||
private fun isSectionHeader(line: String): Boolean =
|
||||
line.length >= 3 && line.startsWith("[") && line.endsWith("]")
|
||||
|
||||
private fun isVRSectionHeader(line: String): Boolean {
|
||||
if (!isSectionHeader(line)) {
|
||||
return false
|
||||
}
|
||||
|
||||
val section = line.substring(1, line.length - 1)
|
||||
return section.equals(VR_SECTION, ignoreCase = true) ||
|
||||
section.equals(LEGACY_VR_SECTION, ignoreCase = true)
|
||||
}
|
||||
|
||||
private fun parseBoolean(value: String?): Boolean? {
|
||||
return when (value?.trim()?.lowercase(Locale.ROOT)) {
|
||||
"true", "1", "yes", "on" -> true
|
||||
"false", "0", "no", "off" -> false
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
|
||||
private fun getUserFile(gameId: String): File =
|
||||
File(DirectoryInitialization.getUserDirectory(), "GameSettingsVR/$gameId.ini")
|
||||
|
||||
private fun getSysIniFile(filename: String): File =
|
||||
File(DirectoryInitialization.getSysDirectory(), "GameSettingsVR/$filename")
|
||||
|
||||
private fun getUserIniFile(filename: String): File =
|
||||
File(DirectoryInitialization.getUserDirectory(), "GameSettingsVR/$filename")
|
||||
|
||||
private fun getGameIniFilenames(gameId: String, revision: Int): List<String> {
|
||||
if (gameId.isEmpty()) {
|
||||
return emptyList()
|
||||
}
|
||||
|
||||
val filenames = ArrayList<String>()
|
||||
if (gameId.length == 6) {
|
||||
filenames.add("${gameId.substring(0, 1)}.ini")
|
||||
filenames.add("${gameId.substring(0, 3)}.ini")
|
||||
}
|
||||
filenames.add("$gameId.ini")
|
||||
if (revision != 0) {
|
||||
filenames.add("${gameId}r$revision.ini")
|
||||
}
|
||||
return filenames
|
||||
}
|
||||
}
|
||||
|
||||
class QuestGameVrConfigBooleanSetting(
|
||||
private val gameId: String,
|
||||
private val revision: Int,
|
||||
private val key: String,
|
||||
private val defaultValue: Boolean
|
||||
) : AbstractBooleanSetting {
|
||||
override val isOverridden: Boolean
|
||||
get() = QuestGameVrConfigSettings.hasLocalValue(gameId, key)
|
||||
|
||||
override val isRuntimeEditable: Boolean
|
||||
get() = NativeLibrary.IsUninitialized()
|
||||
|
||||
override fun delete(settings: Settings): Boolean =
|
||||
QuestGameVrConfigSettings.deleteLocalValue(gameId, key)
|
||||
|
||||
override val boolean: Boolean
|
||||
get() = QuestGameVrConfigSettings.getBoolean(gameId, revision, key, defaultValue)
|
||||
|
||||
override fun setBoolean(settings: Settings, newValue: Boolean) {
|
||||
QuestGameVrConfigSettings.setBoolean(gameId, key, newValue)
|
||||
}
|
||||
}
|
||||
|
||||
class QuestGameVrConfigIntSetting(
|
||||
private val gameId: String,
|
||||
private val revision: Int,
|
||||
private val key: String,
|
||||
private val defaultValue: Int
|
||||
) : AbstractIntSetting {
|
||||
override val isOverridden: Boolean
|
||||
get() = QuestGameVrConfigSettings.hasLocalValue(gameId, key)
|
||||
|
||||
override val isRuntimeEditable: Boolean
|
||||
get() = NativeLibrary.IsUninitialized()
|
||||
|
||||
override fun delete(settings: Settings): Boolean =
|
||||
QuestGameVrConfigSettings.deleteLocalValue(gameId, key)
|
||||
|
||||
override val int: Int
|
||||
get() = QuestGameVrConfigSettings.getInt(gameId, revision, key, defaultValue)
|
||||
|
||||
override fun setInt(settings: Settings, newValue: Int) {
|
||||
QuestGameVrConfigSettings.setInt(gameId, key, newValue)
|
||||
}
|
||||
}
|
||||
|
||||
class QuestGameVrConfigFloatSetting(
|
||||
private val gameId: String,
|
||||
private val revision: Int,
|
||||
private val key: String,
|
||||
private val defaultValue: Float
|
||||
) : AbstractFloatSetting {
|
||||
override val isOverridden: Boolean
|
||||
get() = QuestGameVrConfigSettings.hasLocalValue(gameId, key)
|
||||
|
||||
override val isRuntimeEditable: Boolean
|
||||
get() = NativeLibrary.IsUninitialized()
|
||||
|
||||
override fun delete(settings: Settings): Boolean =
|
||||
QuestGameVrConfigSettings.deleteLocalValue(gameId, key)
|
||||
|
||||
override val float: Float
|
||||
get() = QuestGameVrConfigSettings.getFloat(gameId, revision, key, defaultValue)
|
||||
|
||||
override fun setFloat(settings: Settings, newValue: Float) {
|
||||
QuestGameVrConfigSettings.setFloat(gameId, key, newValue)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,222 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
package org.dolphinemu.dolphinemu.features.settings.model
|
||||
|
||||
import org.dolphinemu.dolphinemu.BuildConfig
|
||||
import org.dolphinemu.dolphinemu.features.input.model.controlleremu.EmulatedController
|
||||
|
||||
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"
|
||||
private const val VR_SECTION = "VR"
|
||||
|
||||
private fun androidBooleanSetting(key: String, defaultValue: Boolean) =
|
||||
AdHocBooleanSetting(Settings.FILE_DOLPHIN, Settings.SECTION_INI_ANDROID, key, defaultValue)
|
||||
|
||||
private fun androidIntSetting(key: String, defaultValue: Int) =
|
||||
AdHocIntSetting(Settings.FILE_DOLPHIN, Settings.SECTION_INI_ANDROID, key, defaultValue)
|
||||
|
||||
private fun vrBooleanSetting(key: String, defaultValue: Boolean) =
|
||||
AdHocBooleanSetting(Settings.FILE_GFX, VR_SECTION, key, defaultValue)
|
||||
|
||||
private fun vrIntSetting(key: String, defaultValue: Int) =
|
||||
AdHocIntSetting(Settings.FILE_GFX, VR_SECTION, key, defaultValue)
|
||||
|
||||
private fun vrFloatSetting(key: String, defaultValue: Float) =
|
||||
AdHocFloatSetting(Settings.FILE_GFX, VR_SECTION, key, defaultValue)
|
||||
|
||||
fun isQuestBuild(): Boolean = BuildConfig.IS_QUEST
|
||||
|
||||
fun openXrEnabledSetting() = androidBooleanSetting("QuestOpenXREnabled", true)
|
||||
|
||||
fun launchInVrSetting() = androidBooleanSetting("QuestLaunchInVr", true)
|
||||
|
||||
fun recenterOnLaunchSetting() = androidBooleanSetting("QuestRecenterOnLaunch", true)
|
||||
|
||||
fun leftHandedSetting() = androidBooleanSetting("QuestLeftHanded", false)
|
||||
|
||||
fun showMirrorSurfaceSetting() = androidBooleanSetting("QuestShowMirrorSurface", false)
|
||||
|
||||
fun controllerPresetSetting() =
|
||||
androidIntSetting("QuestControllerPreset", CONTROLLER_PRESET_GAMECUBE)
|
||||
|
||||
fun passthroughSetting() = vrBooleanSetting("ARMode", false)
|
||||
|
||||
fun debugPassthroughSetting() = vrBooleanSetting("ARModeDebug", false)
|
||||
|
||||
fun arBackgroundAlphaSetting() = vrFloatSetting("ARBackgroundAlpha", 0.0f)
|
||||
|
||||
fun autoImmediateXfbSetting() = vrBooleanSetting("AutoImmediateXFB", true)
|
||||
|
||||
fun autoVbiFromHmdSetting() = vrBooleanSetting("AutoVBIFromHMD", false)
|
||||
|
||||
fun unitsPerMeterSetting(): AbstractFloatSetting = FloatSetting.GFX_VR_UNITS_PER_METER
|
||||
|
||||
fun leanBackAngleSetting() = vrFloatSetting("LeanBackAngle", 0.0f)
|
||||
|
||||
fun cameraForwardSetting() = vrFloatSetting("CameraForward", 0.0f)
|
||||
|
||||
fun cameraHeightSetting() = vrFloatSetting("CameraHeight", 0.0f)
|
||||
|
||||
fun lockHeadPoseSetting() = vrBooleanSetting("LockHeadPosePerFrame", false)
|
||||
|
||||
fun opcodeReplaySetting() = vrIntSetting("OpcodeReplay", 0)
|
||||
|
||||
fun vrGammaSetting() = vrFloatSetting("Gamma", 1.0f)
|
||||
|
||||
fun autoLayerSpreadSetting() = vrBooleanSetting("AutoLayerSpread", true)
|
||||
|
||||
fun layerOffsetSetting() = vrFloatSetting("LayerOffset", 0.002f)
|
||||
|
||||
fun elementDepthSetting() = vrFloatSetting("ElementDepth", 0.001f)
|
||||
|
||||
fun removeBarsSetting() = vrBooleanSetting("RemoveCinematicBars", true)
|
||||
|
||||
fun useVulkanMultiviewSetting() = vrBooleanSetting("UseVulkanMultiview", true)
|
||||
|
||||
fun androidDirectToHmdSetting() = vrBooleanSetting("AndroidDirectToHMD", true)
|
||||
|
||||
fun cpuLevel5HintSetting() = vrBooleanSetting("QuestCpuLevel5Hint", false)
|
||||
|
||||
fun virtualScreenSetting() = vrBooleanSetting("VirtualScreen", false)
|
||||
|
||||
fun screenDistanceSetting() = vrFloatSetting("ScreenDistance", 1.5f)
|
||||
|
||||
fun screenSizeSetting() = vrFloatSetting("ScreenSize", 1.5f)
|
||||
|
||||
fun headLockedCurvatureSetting() = vrFloatSetting("HeadLockedCurvature", 0.0f)
|
||||
|
||||
fun dontClearScreenSetting() = vrBooleanSetting("DontClearScreen", false)
|
||||
|
||||
fun disableCpuCullSetting() = vrBooleanSetting("DisableCPUCull", false)
|
||||
|
||||
fun clearEfbCopiesSetting() = vrIntSetting("ClearEFBCopies", 0)
|
||||
|
||||
fun loadCustomShadersSetting() = vrBooleanSetting("LoadCustomShaders", false)
|
||||
|
||||
fun openXrConfigSceneSetting() = vrBooleanSetting("EnableOpenXRConfigScene", true)
|
||||
|
||||
private fun openXrRuntimeSetting() = vrBooleanSetting("EnableOpenXR", false)
|
||||
|
||||
private fun perfDefaultsAppliedSetting() = androidBooleanSetting("QuestPerfProfileApplied", false)
|
||||
|
||||
private fun backendMultithreadingReenabledSetting() =
|
||||
androidBooleanSetting("QuestBackendMultithreadingReenabled", false)
|
||||
|
||||
private fun controllerProfilesAppliedSetting() =
|
||||
androidBooleanSetting("QuestControllerProfilesApplied", false)
|
||||
|
||||
fun shouldShowMirrorSurface(): Boolean {
|
||||
if (!BuildConfig.IS_QUEST) {
|
||||
return true
|
||||
}
|
||||
|
||||
return showMirrorSurfaceSetting().boolean || !isLaunchInVrEnabled()
|
||||
}
|
||||
|
||||
fun isLaunchInVrEnabled(): Boolean {
|
||||
return BuildConfig.IS_QUEST &&
|
||||
openXrEnabledSetting().boolean &&
|
||||
launchInVrSetting().boolean
|
||||
}
|
||||
|
||||
fun applyRecommendedDefaults(settings: Settings) {
|
||||
if (!BuildConfig.IS_QUEST) {
|
||||
return
|
||||
}
|
||||
|
||||
StringSetting.MAIN_GFX_BACKEND.setString(settings, "Vulkan")
|
||||
BooleanSetting.GFX_BACKEND_MULTITHREADING.setBoolean(settings, true)
|
||||
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)
|
||||
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)
|
||||
}
|
||||
|
||||
fun prepareLaunchSettings(settings: Settings, launchSystemMenu: Boolean) {
|
||||
if (!BuildConfig.IS_QUEST) {
|
||||
return
|
||||
}
|
||||
|
||||
if (!perfDefaultsAppliedSetting().boolean) {
|
||||
applyRecommendedDefaults(settings)
|
||||
}
|
||||
|
||||
StringSetting.MAIN_GFX_BACKEND.setString(settings, "Vulkan")
|
||||
|
||||
val launchInVr = isLaunchInVrEnabled()
|
||||
openXrRuntimeSetting().setBoolean(settings, launchInVr)
|
||||
|
||||
if (launchInVr) {
|
||||
IntSetting.GFX_STEREO_MODE.setInt(settings, STEREO_MODE_OPENXR)
|
||||
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)
|
||||
}
|
||||
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
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
}
|
||||
@@ -21,10 +21,15 @@ enum class MenuTag {
|
||||
GRAPHICS("graphics"),
|
||||
ENHANCEMENTS("enhancements"),
|
||||
COLOR_CORRECTION("color_correction"),
|
||||
OPENXR("openxr"),
|
||||
STEREOSCOPY("stereoscopy"),
|
||||
HACKS("hacks"),
|
||||
STATISTICS("statistics"),
|
||||
ADVANCED_GRAPHICS("advanced_graphics"),
|
||||
QUEST_VR_CONFIG("quest_vr_config"),
|
||||
QUEST_HIDE_OBJECTS("quest_hide_objects"),
|
||||
QUEST_SHADER_OVERRIDES("quest_shader_overrides"),
|
||||
QUEST_ELEMENTS_GROUP_OVERRIDES("quest_elements_group_overrides"),
|
||||
GCPAD_TYPE("gc_pad_type"),
|
||||
WIIMOTE("wiimote"),
|
||||
WIIMOTE_EXTENSION("wiimote_extension"),
|
||||
@@ -52,6 +57,20 @@ enum class MenuTag {
|
||||
WIIMOTE_MOTION_INPUT_2("wiimote_motion_input", 1),
|
||||
WIIMOTE_MOTION_INPUT_3("wiimote_motion_input", 2),
|
||||
WIIMOTE_MOTION_INPUT_4("wiimote_motion_input", 3),
|
||||
HOTKEYS("hotkeys"),
|
||||
HOTKEYS_GENERAL("hotkeys_general"),
|
||||
HOTKEYS_TAS("hotkeys_tas"),
|
||||
HOTKEYS_DEBUGGING("hotkeys_debugging"),
|
||||
HOTKEYS_WII("hotkeys_wii"),
|
||||
HOTKEYS_CONTROLLER_PROFILE("hotkeys_controller_profile"),
|
||||
HOTKEYS_GRAPHICS("hotkeys_graphics"),
|
||||
HOTKEYS_VR("hotkeys_vr"),
|
||||
HOTKEYS_3D("hotkeys_3d"),
|
||||
HOTKEYS_SAVE_STATES("hotkeys_save_states"),
|
||||
HOTKEYS_STATES_OTHER("hotkeys_states_other"),
|
||||
HOTKEYS_GBA("hotkeys_gba"),
|
||||
HOTKEYS_USB("hotkeys_usb"),
|
||||
HOTKEYS_ANDROID("hotkeys_android"),
|
||||
GPU_DRIVERS("gpu_drivers");
|
||||
|
||||
var tag: String
|
||||
@@ -75,9 +94,12 @@ enum class MenuTag {
|
||||
}
|
||||
|
||||
val correspondingEmulatedController: EmulatedController
|
||||
get() = if (isGCPadMenu) EmulatedController.getGcPad(subType) else if (isWiimoteMenu) EmulatedController.getWiimote(
|
||||
subType
|
||||
) else throw UnsupportedOperationException()
|
||||
get() = when {
|
||||
isGCPadMenu -> EmulatedController.getGcPad(subType)
|
||||
isWiimoteMenu -> EmulatedController.getWiimote(subType)
|
||||
isHotkeyMenu -> EmulatedController.getHotkeys()
|
||||
else -> throw UnsupportedOperationException()
|
||||
}
|
||||
|
||||
val isSerialPort1Menu: Boolean
|
||||
get() = this == CONFIG_SERIALPORT1
|
||||
@@ -99,6 +121,16 @@ enum class MenuTag {
|
||||
val isWiimoteExtensionMenu: Boolean
|
||||
get() = this == WIIMOTE_EXTENSION_1 || this == WIIMOTE_EXTENSION_2 || this == WIIMOTE_EXTENSION_3 || this == WIIMOTE_EXTENSION_4
|
||||
|
||||
val isHotkeyMenu: Boolean
|
||||
get() = this == HOTKEYS || isHotkeyCategoryMenu
|
||||
|
||||
val isHotkeyCategoryMenu: Boolean
|
||||
get() = this == HOTKEYS_GENERAL || this == HOTKEYS_TAS || this == HOTKEYS_DEBUGGING ||
|
||||
this == HOTKEYS_WII || this == HOTKEYS_CONTROLLER_PROFILE ||
|
||||
this == HOTKEYS_GRAPHICS || this == HOTKEYS_VR || this == HOTKEYS_3D ||
|
||||
this == HOTKEYS_SAVE_STATES || this == HOTKEYS_STATES_OTHER ||
|
||||
this == HOTKEYS_GBA || this == HOTKEYS_USB || this == HOTKEYS_ANDROID
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
fun getGCPadMenuTag(subtype: Int): MenuTag {
|
||||
|
||||
@@ -5,6 +5,8 @@ package org.dolphinemu.dolphinemu.features.settings.ui
|
||||
import android.os.Bundle
|
||||
import android.text.TextUtils
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import org.dolphinemu.dolphinemu.NativeLibrary
|
||||
import org.dolphinemu.dolphinemu.R
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.Settings
|
||||
import org.dolphinemu.dolphinemu.utils.AfterDirectoryInitializationRunner
|
||||
import org.dolphinemu.dolphinemu.utils.Log
|
||||
@@ -49,6 +51,14 @@ class SettingsActivityPresenter(
|
||||
activityView.hideLoading()
|
||||
if (!settings!!.areSettingsLoaded()) {
|
||||
if (!TextUtils.isEmpty(gameId)) {
|
||||
if (!NativeLibrary.IsUninitialized()) {
|
||||
activityView.showToastMessage(
|
||||
activity.getString(R.string.setting_not_runtime_editable)
|
||||
)
|
||||
activityView.finish()
|
||||
return
|
||||
}
|
||||
|
||||
settings!!.loadSettings(gameId!!, revision, isWii)
|
||||
if (settings!!.gameIniContainsJunk()) {
|
||||
activityView.showGameIniJunkDeletionQuestion()
|
||||
@@ -57,7 +67,7 @@ class SettingsActivityPresenter(
|
||||
settings!!.loadSettings(isWii)
|
||||
}
|
||||
}
|
||||
activityView.showSettingsFragment(menuTag!!, null, false, gameId!!)
|
||||
activityView.showSettingsFragment(menuTag!!, fragmentExtrasWithRevision(null), false, gameId!!)
|
||||
activityView.onSettingsFileLoaded(settings!!)
|
||||
}
|
||||
|
||||
@@ -90,7 +100,7 @@ class SettingsActivityPresenter(
|
||||
if (value != 0 && value != 255) {
|
||||
val bundle = Bundle()
|
||||
bundle.putInt(SettingsFragmentPresenter.ARG_SERIALPORT1_TYPE, value)
|
||||
activityView.showSettingsFragment(menuTag, bundle, true, gameId!!)
|
||||
activityView.showSettingsFragment(menuTag, fragmentExtrasWithRevision(bundle), true, gameId!!)
|
||||
}
|
||||
}
|
||||
if (menuTag.isGCPadMenu) {
|
||||
@@ -99,13 +109,13 @@ class SettingsActivityPresenter(
|
||||
{
|
||||
val bundle = Bundle()
|
||||
bundle.putInt(SettingsFragmentPresenter.ARG_CONTROLLER_TYPE, value)
|
||||
activityView.showSettingsFragment(menuTag, bundle, true, gameId!!)
|
||||
activityView.showSettingsFragment(menuTag, fragmentExtrasWithRevision(bundle), true, gameId!!)
|
||||
}
|
||||
}
|
||||
if (menuTag.isWiimoteMenu) {
|
||||
// Emulated Wii Remote
|
||||
if (value == 1) {
|
||||
activityView.showSettingsFragment(menuTag, null, true, gameId!!)
|
||||
// Emulated Wii Remote (1) or OpenXR Wii Remote (3) — both share the emulated bindings UI
|
||||
if (value == 1 || value == 3) {
|
||||
activityView.showSettingsFragment(menuTag, fragmentExtrasWithRevision(null), true, gameId!!)
|
||||
}
|
||||
}
|
||||
if (menuTag.isWiimoteExtensionMenu) {
|
||||
@@ -113,7 +123,7 @@ class SettingsActivityPresenter(
|
||||
if (value != 0) {
|
||||
val bundle = Bundle()
|
||||
bundle.putInt(SettingsFragmentPresenter.ARG_CONTROLLER_TYPE, value)
|
||||
activityView.showSettingsFragment(menuTag, bundle, true, gameId!!)
|
||||
activityView.showSettingsFragment(menuTag, fragmentExtrasWithRevision(bundle), true, gameId!!)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -128,12 +138,18 @@ class SettingsActivityPresenter(
|
||||
return value != 0
|
||||
}
|
||||
if (menuTag.isWiimoteMenu) {
|
||||
// Emulated Wii Remote
|
||||
return value == 1
|
||||
// Emulated Wii Remote (1) or OpenXR Wii Remote (3)
|
||||
return value == 1 || value == 3
|
||||
}
|
||||
return if (menuTag.isWiimoteExtensionMenu) {
|
||||
// Not disabled
|
||||
value != 0
|
||||
} else false
|
||||
}
|
||||
|
||||
private fun fragmentExtrasWithRevision(extras: Bundle?): Bundle {
|
||||
val bundle = extras ?: Bundle()
|
||||
bundle.putInt(SettingsFragmentPresenter.ARG_REVISION, revision)
|
||||
return bundle
|
||||
}
|
||||
}
|
||||
@@ -140,7 +140,9 @@ class SettingsFragment : Fragment(), SettingsFragmentView {
|
||||
|
||||
activityView!!.showSettingsFragment(
|
||||
menuKey,
|
||||
null,
|
||||
Bundle().apply {
|
||||
putInt(SettingsFragmentPresenter.ARG_REVISION, requireArguments().getInt(ARGUMENT_REVISION))
|
||||
},
|
||||
true,
|
||||
requireArguments().getString(ARGUMENT_GAME_ID)!!
|
||||
)
|
||||
@@ -256,6 +258,7 @@ class SettingsFragment : Fragment(), SettingsFragmentView {
|
||||
companion object {
|
||||
private const val ARGUMENT_MENU_TAG = "menu_tag"
|
||||
private const val ARGUMENT_GAME_ID = "game_id"
|
||||
private const val ARGUMENT_REVISION = SettingsFragmentPresenter.ARG_REVISION
|
||||
private val titles: MutableMap<MenuTag, Int> = EnumMap(MenuTag::class.java)
|
||||
|
||||
init {
|
||||
@@ -274,10 +277,15 @@ class SettingsFragment : Fragment(), SettingsFragmentView {
|
||||
titles[MenuTag.GRAPHICS] = R.string.graphics_settings
|
||||
titles[MenuTag.ENHANCEMENTS] = R.string.enhancements_submenu
|
||||
titles[MenuTag.COLOR_CORRECTION] = R.string.color_correction_submenu
|
||||
titles[MenuTag.OPENXR] = R.string.openxr_submenu
|
||||
titles[MenuTag.STEREOSCOPY] = R.string.stereoscopy_submenu
|
||||
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_CONFIG] = R.string.quest_vr_config
|
||||
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.CONFIG_LOG] = R.string.log_submenu
|
||||
titles[MenuTag.GCPAD_TYPE] = R.string.gcpad_settings
|
||||
titles[MenuTag.WIIMOTE] = R.string.wiimote_settings
|
||||
@@ -306,6 +314,20 @@ class SettingsFragment : Fragment(), SettingsFragmentView {
|
||||
titles[MenuTag.WIIMOTE_MOTION_INPUT_2] = R.string.wiimote_motion_input
|
||||
titles[MenuTag.WIIMOTE_MOTION_INPUT_3] = R.string.wiimote_motion_input
|
||||
titles[MenuTag.WIIMOTE_MOTION_INPUT_4] = R.string.wiimote_motion_input
|
||||
titles[MenuTag.HOTKEYS] = R.string.hotkey_settings
|
||||
titles[MenuTag.HOTKEYS_GENERAL] = R.string.hotkey_general
|
||||
titles[MenuTag.HOTKEYS_TAS] = R.string.hotkey_tas
|
||||
titles[MenuTag.HOTKEYS_DEBUGGING] = R.string.hotkey_debugging
|
||||
titles[MenuTag.HOTKEYS_WII] = R.string.hotkey_wii
|
||||
titles[MenuTag.HOTKEYS_CONTROLLER_PROFILE] = R.string.hotkey_controller_profile
|
||||
titles[MenuTag.HOTKEYS_GRAPHICS] = R.string.hotkey_graphics
|
||||
titles[MenuTag.HOTKEYS_VR] = R.string.hotkey_vr
|
||||
titles[MenuTag.HOTKEYS_3D] = R.string.hotkey_3d
|
||||
titles[MenuTag.HOTKEYS_SAVE_STATES] = R.string.hotkey_save_states
|
||||
titles[MenuTag.HOTKEYS_STATES_OTHER] = R.string.hotkey_states_other
|
||||
titles[MenuTag.HOTKEYS_GBA] = R.string.hotkey_gba
|
||||
titles[MenuTag.HOTKEYS_USB] = R.string.hotkey_usb
|
||||
titles[MenuTag.HOTKEYS_ANDROID] = R.string.hotkey_android
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
package org.dolphinemu.dolphinemu.features.settings.ui
|
||||
|
||||
import org.dolphinemu.dolphinemu.BuildConfig
|
||||
import android.content.Context
|
||||
import android.content.pm.PackageManager
|
||||
import android.net.Uri
|
||||
@@ -44,6 +45,7 @@ class SettingsFragmentPresenter(
|
||||
) {
|
||||
private lateinit var menuTag: MenuTag
|
||||
private var gameId: String? = null
|
||||
private var revision = 0
|
||||
|
||||
private var settingsList: ArrayList<SettingsItem>? = null
|
||||
private var hasOldControllerSettings = false
|
||||
@@ -58,6 +60,7 @@ class SettingsFragmentPresenter(
|
||||
fun onCreate(menuTag: MenuTag, gameId: String?, extras: Bundle) {
|
||||
this.gameId = gameId
|
||||
this.menuTag = menuTag
|
||||
this.revision = extras.getInt(ARG_REVISION, 0)
|
||||
|
||||
if (menuTag.isGCPadMenu || menuTag.isWiimoteExtensionMenu) {
|
||||
controllerNumber = menuTag.subType
|
||||
@@ -118,10 +121,24 @@ class SettingsFragmentPresenter(
|
||||
MenuTag.WIIMOTE -> addWiimoteSettings(sl)
|
||||
MenuTag.ENHANCEMENTS -> addEnhanceSettings(sl)
|
||||
MenuTag.COLOR_CORRECTION -> addColorCorrectionSettings(sl)
|
||||
MenuTag.OPENXR -> addOpenXrSettings(sl)
|
||||
MenuTag.STEREOSCOPY -> addStereoSettings(sl)
|
||||
MenuTag.HACKS -> addHackSettings(sl)
|
||||
MenuTag.STATISTICS -> addStatisticsSettings(sl)
|
||||
MenuTag.ADVANCED_GRAPHICS -> addAdvancedGraphicsSettings(sl)
|
||||
MenuTag.QUEST_HIDE_OBJECTS -> addQuestOverrideSettings(
|
||||
sl,
|
||||
QuestGameOverrideSettings.Category.HIDE_OBJECTS
|
||||
)
|
||||
MenuTag.QUEST_SHADER_OVERRIDES -> addQuestOverrideSettings(
|
||||
sl,
|
||||
QuestGameOverrideSettings.Category.SHADER_OVERRIDES
|
||||
)
|
||||
MenuTag.QUEST_ELEMENTS_GROUP_OVERRIDES -> addQuestOverrideSettings(
|
||||
sl,
|
||||
QuestGameOverrideSettings.Category.ELEMENTS_GROUP_OVERRIDES
|
||||
)
|
||||
MenuTag.QUEST_VR_CONFIG -> addQuestGameVrConfigSettings(sl)
|
||||
MenuTag.CONFIG_LOG -> addLogConfigurationSettings(sl)
|
||||
MenuTag.DEBUG -> addDebugSettings(sl)
|
||||
MenuTag.GCPAD_1,
|
||||
@@ -174,6 +191,22 @@ class SettingsFragmentPresenter(
|
||||
controllerNumber
|
||||
)
|
||||
|
||||
MenuTag.HOTKEYS -> addHotkeySettings(sl)
|
||||
|
||||
MenuTag.HOTKEYS_GENERAL,
|
||||
MenuTag.HOTKEYS_TAS,
|
||||
MenuTag.HOTKEYS_DEBUGGING,
|
||||
MenuTag.HOTKEYS_WII,
|
||||
MenuTag.HOTKEYS_CONTROLLER_PROFILE,
|
||||
MenuTag.HOTKEYS_GRAPHICS,
|
||||
MenuTag.HOTKEYS_VR,
|
||||
MenuTag.HOTKEYS_3D,
|
||||
MenuTag.HOTKEYS_SAVE_STATES,
|
||||
MenuTag.HOTKEYS_STATES_OTHER,
|
||||
MenuTag.HOTKEYS_GBA,
|
||||
MenuTag.HOTKEYS_USB,
|
||||
MenuTag.HOTKEYS_ANDROID -> addHotkeyCategorySettings(sl, menuTag)
|
||||
|
||||
else -> throw UnsupportedOperationException("Unimplemented menu")
|
||||
}
|
||||
|
||||
@@ -184,11 +217,33 @@ class SettingsFragmentPresenter(
|
||||
private fun addTopLevelSettings(sl: ArrayList<SettingsItem>) {
|
||||
sl.add(SubmenuSetting(context, R.string.config, MenuTag.CONFIG))
|
||||
sl.add(SubmenuSetting(context, R.string.graphics_settings, MenuTag.GRAPHICS))
|
||||
if (BuildConfig.IS_QUEST && gameId.isNullOrEmpty()) {
|
||||
sl.add(SubmenuSetting(context, R.string.openxr_submenu, MenuTag.OPENXR))
|
||||
}
|
||||
if (BuildConfig.IS_QUEST && !gameId.isNullOrEmpty()) {
|
||||
sl.add(SubmenuSetting(context, R.string.quest_vr_config, MenuTag.QUEST_VR_CONFIG))
|
||||
sl.add(SubmenuSetting(context, R.string.quest_hide_objects, MenuTag.QUEST_HIDE_OBJECTS))
|
||||
sl.add(
|
||||
SubmenuSetting(
|
||||
context,
|
||||
R.string.quest_shader_overrides,
|
||||
MenuTag.QUEST_SHADER_OVERRIDES
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
SubmenuSetting(
|
||||
context,
|
||||
R.string.quest_elements_group_overrides,
|
||||
MenuTag.QUEST_ELEMENTS_GROUP_OVERRIDES
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
sl.add(SubmenuSetting(context, R.string.gcpad_settings, MenuTag.GCPAD_TYPE))
|
||||
if (settings!!.isWii) {
|
||||
sl.add(SubmenuSetting(context, R.string.wiimote_settings, MenuTag.WIIMOTE))
|
||||
}
|
||||
sl.add(SubmenuSetting(context, R.string.hotkey_settings, MenuTag.HOTKEYS))
|
||||
|
||||
sl.add(HeaderSetting(context, R.string.setting_clear_info, 0))
|
||||
}
|
||||
@@ -1659,7 +1714,9 @@ class SettingsFragmentPresenter(
|
||||
// If we only support OpenGLES then we need both OpenGLES 3.1 and AEP
|
||||
val helper = EGLHelper(EGLHelper.EGL_OPENGL_ES2_BIT)
|
||||
|
||||
if (helper.supportsOpenGL() && helper.GetVersion() >= 320 || helper.supportsGLES3() && helper.GetVersion() >= 310 && helper.SupportsExtension(
|
||||
if (BuildConfig.IS_QUEST ||
|
||||
helper.supportsOpenGL() && helper.GetVersion() >= 320 ||
|
||||
helper.supportsGLES3() && helper.GetVersion() >= 310 && helper.SupportsExtension(
|
||||
"GL_ANDROID_extension_pack_es31a"
|
||||
)
|
||||
) {
|
||||
@@ -2360,6 +2417,688 @@ class SettingsFragmentPresenter(
|
||||
)
|
||||
}
|
||||
|
||||
private fun addOpenXrSettings(sl: ArrayList<SettingsItem>) {
|
||||
addQuestVrSettings(sl)
|
||||
}
|
||||
|
||||
private fun addQuestOverrideSettings(
|
||||
sl: ArrayList<SettingsItem>,
|
||||
category: QuestGameOverrideSettings.Category
|
||||
) {
|
||||
val currentGameId = gameId
|
||||
if (currentGameId.isNullOrEmpty()) {
|
||||
sl.add(HeaderSetting(context, R.string.quest_no_stored_overrides, 0))
|
||||
return
|
||||
}
|
||||
|
||||
val entries = QuestGameOverrideSettings.loadEntries(currentGameId, revision, category)
|
||||
if (entries.isEmpty()) {
|
||||
sl.add(HeaderSetting(context, R.string.quest_no_stored_overrides, 0))
|
||||
return
|
||||
}
|
||||
|
||||
val descriptionId = when (category) {
|
||||
QuestGameOverrideSettings.Category.HIDE_OBJECTS ->
|
||||
R.string.quest_hide_objects_description
|
||||
QuestGameOverrideSettings.Category.SHADER_OVERRIDES ->
|
||||
R.string.quest_shader_overrides_description
|
||||
QuestGameOverrideSettings.Category.ELEMENTS_GROUP_OVERRIDES ->
|
||||
R.string.quest_elements_group_overrides_description
|
||||
}
|
||||
|
||||
for (entry in entries) {
|
||||
sl.add(
|
||||
SwitchSetting(
|
||||
QuestGameOverrideEnabledSetting(currentGameId, revision, category, entry.name),
|
||||
entry.name,
|
||||
context.getString(descriptionId)
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private fun addQuestGameVrConfigSettings(sl: ArrayList<SettingsItem>) {
|
||||
val currentGameId = gameId
|
||||
if (currentGameId.isNullOrEmpty()) {
|
||||
sl.add(HeaderSetting(context, R.string.quest_no_stored_vr_config, 0))
|
||||
return
|
||||
}
|
||||
|
||||
sl.add(HeaderSetting(context, R.string.quest_vr_config_description, 0))
|
||||
|
||||
fun addBoolean(key: String, defaultValue: Boolean, titleId: Int, descriptionId: Int) {
|
||||
sl.add(
|
||||
SwitchSetting(
|
||||
context,
|
||||
QuestGameVrConfigBooleanSetting(currentGameId, revision, key, defaultValue),
|
||||
titleId,
|
||||
descriptionId
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
fun addFloat(
|
||||
key: String,
|
||||
defaultValue: Float,
|
||||
titleId: Int,
|
||||
descriptionId: Int,
|
||||
min: Float,
|
||||
max: Float,
|
||||
step: Float
|
||||
) {
|
||||
sl.add(
|
||||
FloatSliderSetting(
|
||||
context,
|
||||
QuestGameVrConfigFloatSetting(currentGameId, revision, key, defaultValue),
|
||||
titleId,
|
||||
descriptionId,
|
||||
min,
|
||||
max,
|
||||
"",
|
||||
step,
|
||||
true
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
fun addIntSlider(
|
||||
key: String,
|
||||
defaultValue: Int,
|
||||
titleId: Int,
|
||||
descriptionId: Int,
|
||||
min: Int,
|
||||
max: Int,
|
||||
step: Int
|
||||
) {
|
||||
sl.add(
|
||||
IntSliderSetting(
|
||||
context,
|
||||
QuestGameVrConfigIntSetting(currentGameId, revision, key, defaultValue),
|
||||
titleId,
|
||||
descriptionId,
|
||||
min,
|
||||
max,
|
||||
"",
|
||||
step
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
addBoolean(
|
||||
"EnableOpenXR",
|
||||
false,
|
||||
R.string.quest_enable_openxr,
|
||||
R.string.quest_enable_openxr_description
|
||||
)
|
||||
addBoolean(
|
||||
"AutoVBIFromHMD",
|
||||
false,
|
||||
R.string.quest_force_vbi_from_hmd,
|
||||
R.string.quest_force_vbi_from_hmd_description
|
||||
)
|
||||
addFloat(
|
||||
"UnitsPerMeter",
|
||||
1.0f,
|
||||
R.string.quest_units_per_meter,
|
||||
R.string.quest_units_per_meter_description,
|
||||
0.1f,
|
||||
500.0f,
|
||||
0.1f
|
||||
)
|
||||
addFloat(
|
||||
"LeanBackAngle",
|
||||
0.0f,
|
||||
R.string.quest_lean_back_angle,
|
||||
R.string.quest_lean_back_angle_description,
|
||||
-45.0f,
|
||||
45.0f,
|
||||
0.1f
|
||||
)
|
||||
addFloat(
|
||||
"CameraForward",
|
||||
0.0f,
|
||||
R.string.quest_camera_forward,
|
||||
R.string.quest_camera_forward_description,
|
||||
-20.0f,
|
||||
20.0f,
|
||||
0.1f
|
||||
)
|
||||
addFloat(
|
||||
"CameraHeight",
|
||||
0.0f,
|
||||
R.string.quest_camera_height,
|
||||
R.string.quest_camera_height_description,
|
||||
-20.0f,
|
||||
20.0f,
|
||||
0.1f
|
||||
)
|
||||
addBoolean(
|
||||
"VirtualScreen",
|
||||
true,
|
||||
R.string.quest_virtual_screen,
|
||||
R.string.quest_virtual_screen_description
|
||||
)
|
||||
addFloat(
|
||||
"ScreenDistance",
|
||||
1.5f,
|
||||
R.string.quest_screen_distance,
|
||||
R.string.quest_screen_distance_description,
|
||||
0.5f,
|
||||
10.0f,
|
||||
0.1f
|
||||
)
|
||||
addFloat(
|
||||
"ScreenSize",
|
||||
1.5f,
|
||||
R.string.quest_screen_size,
|
||||
R.string.quest_screen_size_description,
|
||||
0.5f,
|
||||
5.0f,
|
||||
0.1f
|
||||
)
|
||||
addFloat(
|
||||
"HeadLockedCurvature",
|
||||
0.0f,
|
||||
R.string.quest_head_locked_curvature,
|
||||
R.string.quest_head_locked_curvature_description,
|
||||
0.0f,
|
||||
5.0f,
|
||||
0.01f
|
||||
)
|
||||
addBoolean(
|
||||
"DontClearScreen",
|
||||
false,
|
||||
R.string.quest_dont_clear_screen,
|
||||
R.string.quest_dont_clear_screen_description
|
||||
)
|
||||
addBoolean(
|
||||
"LoadCustomShaders",
|
||||
false,
|
||||
R.string.quest_load_custom_shaders,
|
||||
R.string.quest_load_custom_shaders_description
|
||||
)
|
||||
addBoolean(
|
||||
"DisableCPUCull",
|
||||
false,
|
||||
R.string.quest_disable_cpu_culling,
|
||||
R.string.quest_disable_cpu_culling_description
|
||||
)
|
||||
sl.add(
|
||||
SingleChoiceSetting(
|
||||
context,
|
||||
QuestGameVrConfigIntSetting(currentGameId, revision, "OpcodeReplay", 0),
|
||||
R.string.quest_opcode_replay,
|
||||
R.string.quest_opcode_replay_description,
|
||||
R.array.questOpcodeReplayEntries,
|
||||
R.array.questOpcodeReplayValues
|
||||
)
|
||||
)
|
||||
addBoolean(
|
||||
"AutoLayerSpread",
|
||||
true,
|
||||
R.string.quest_auto_layer_spread,
|
||||
R.string.quest_auto_layer_spread_description
|
||||
)
|
||||
addFloat(
|
||||
"LayerOffset",
|
||||
0.002f,
|
||||
R.string.quest_layer_offset,
|
||||
R.string.quest_layer_offset_description,
|
||||
0.0001f,
|
||||
0.01f,
|
||||
0.0001f
|
||||
)
|
||||
addFloat(
|
||||
"ElementDepth",
|
||||
0.001f,
|
||||
R.string.quest_element_depth,
|
||||
R.string.quest_element_depth_description,
|
||||
0.0f,
|
||||
0.1f,
|
||||
0.0001f
|
||||
)
|
||||
addIntSlider(
|
||||
"ClearEFBCopies",
|
||||
0,
|
||||
R.string.quest_clear_efb_copies,
|
||||
R.string.quest_clear_efb_copies_description,
|
||||
0,
|
||||
640,
|
||||
10
|
||||
)
|
||||
addBoolean(
|
||||
"UseVulkanMultiview",
|
||||
true,
|
||||
R.string.quest_use_vulkan_multiview,
|
||||
R.string.quest_use_vulkan_multiview_description
|
||||
)
|
||||
addBoolean(
|
||||
"AndroidDirectToHMD",
|
||||
false,
|
||||
R.string.quest_android_direct_to_hmd,
|
||||
R.string.quest_android_direct_to_hmd_description
|
||||
)
|
||||
addBoolean(
|
||||
"ARMode",
|
||||
false,
|
||||
R.string.quest_passthrough,
|
||||
R.string.quest_passthrough_description
|
||||
)
|
||||
addBoolean(
|
||||
"ARModeDebug",
|
||||
false,
|
||||
R.string.quest_passthrough_debug,
|
||||
R.string.quest_passthrough_debug_description
|
||||
)
|
||||
addFloat(
|
||||
"ARBackgroundAlpha",
|
||||
0.0f,
|
||||
R.string.quest_ar_background_alpha,
|
||||
R.string.quest_ar_background_alpha_description,
|
||||
0.0f,
|
||||
1.0f,
|
||||
0.05f
|
||||
)
|
||||
}
|
||||
|
||||
private fun addQuestVrSettings(sl: ArrayList<SettingsItem>) {
|
||||
sl.add(HeaderSetting(context, R.string.quest_vr_runtime, 0))
|
||||
sl.add(
|
||||
SwitchSetting(
|
||||
context,
|
||||
QuestVrSettings.openXrEnabledSetting(),
|
||||
R.string.quest_enable_openxr,
|
||||
R.string.quest_enable_openxr_description
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
SwitchSetting(
|
||||
context,
|
||||
QuestVrSettings.launchInVrSetting(),
|
||||
R.string.quest_launch_in_vr,
|
||||
R.string.quest_launch_in_vr_description
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
SwitchSetting(
|
||||
context,
|
||||
QuestVrSettings.recenterOnLaunchSetting(),
|
||||
R.string.quest_recenter_on_launch,
|
||||
R.string.quest_recenter_on_launch_description
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
SwitchSetting(
|
||||
context,
|
||||
QuestVrSettings.autoImmediateXfbSetting(),
|
||||
R.string.quest_force_immediately_present_xfb,
|
||||
R.string.quest_force_immediately_present_xfb_description
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
SwitchSetting(
|
||||
context,
|
||||
QuestVrSettings.autoVbiFromHmdSetting(),
|
||||
R.string.quest_force_vbi_from_hmd,
|
||||
R.string.quest_force_vbi_from_hmd_description
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
SwitchSetting(
|
||||
context,
|
||||
QuestVrSettings.cpuLevel5HintSetting(),
|
||||
R.string.quest_cpu_level_5_hint,
|
||||
R.string.quest_cpu_level_5_hint_description
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
SwitchSetting(
|
||||
context,
|
||||
QuestVrSettings.lockHeadPoseSetting(),
|
||||
R.string.quest_lock_head_pose,
|
||||
R.string.quest_lock_head_pose_description
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
FloatSliderSetting(
|
||||
context,
|
||||
QuestVrSettings.unitsPerMeterSetting(),
|
||||
R.string.quest_units_per_meter,
|
||||
R.string.quest_units_per_meter_description,
|
||||
0.1f,
|
||||
500.0f,
|
||||
"",
|
||||
0.1f,
|
||||
true
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
FloatSliderSetting(
|
||||
context,
|
||||
QuestVrSettings.leanBackAngleSetting(),
|
||||
R.string.quest_lean_back_angle,
|
||||
R.string.quest_lean_back_angle_description,
|
||||
-45.0f,
|
||||
45.0f,
|
||||
"",
|
||||
0.1f,
|
||||
true
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
FloatSliderSetting(
|
||||
context,
|
||||
QuestVrSettings.cameraForwardSetting(),
|
||||
R.string.quest_camera_forward,
|
||||
R.string.quest_camera_forward_description,
|
||||
-20.0f,
|
||||
20.0f,
|
||||
"",
|
||||
0.1f,
|
||||
true
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
FloatSliderSetting(
|
||||
context,
|
||||
QuestVrSettings.cameraHeightSetting(),
|
||||
R.string.quest_camera_height,
|
||||
R.string.quest_camera_height_description,
|
||||
-20.0f,
|
||||
20.0f,
|
||||
"",
|
||||
0.1f,
|
||||
true
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
SingleChoiceSetting(
|
||||
context,
|
||||
QuestVrSettings.opcodeReplaySetting(),
|
||||
R.string.quest_opcode_replay,
|
||||
R.string.quest_opcode_replay_description,
|
||||
R.array.questOpcodeReplayEntries,
|
||||
R.array.questOpcodeReplayValues
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
SwitchSetting(
|
||||
context,
|
||||
QuestVrSettings.passthroughSetting(),
|
||||
R.string.quest_passthrough,
|
||||
R.string.quest_passthrough_description
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
SwitchSetting(
|
||||
context,
|
||||
QuestVrSettings.debugPassthroughSetting(),
|
||||
R.string.quest_passthrough_debug,
|
||||
R.string.quest_passthrough_debug_description
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
FloatSliderSetting(
|
||||
context,
|
||||
QuestVrSettings.arBackgroundAlphaSetting(),
|
||||
R.string.quest_ar_background_alpha,
|
||||
R.string.quest_ar_background_alpha_description,
|
||||
0.0f,
|
||||
1.0f,
|
||||
"",
|
||||
0.05f,
|
||||
true
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
FloatSliderSetting(
|
||||
context,
|
||||
QuestVrSettings.vrGammaSetting(),
|
||||
R.string.quest_vr_gamma,
|
||||
R.string.quest_vr_gamma_description,
|
||||
1.0f,
|
||||
3.0f,
|
||||
"",
|
||||
0.1f,
|
||||
true
|
||||
)
|
||||
)
|
||||
|
||||
sl.add(HeaderSetting(context, R.string.quest_vr_virtual_screen, 0))
|
||||
sl.add(
|
||||
SwitchSetting(
|
||||
context,
|
||||
QuestVrSettings.virtualScreenSetting(),
|
||||
R.string.quest_virtual_screen,
|
||||
R.string.quest_virtual_screen_description
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
FloatSliderSetting(
|
||||
context,
|
||||
QuestVrSettings.screenDistanceSetting(),
|
||||
R.string.quest_screen_distance,
|
||||
R.string.quest_screen_distance_description,
|
||||
0.5f,
|
||||
10.0f,
|
||||
"",
|
||||
0.1f,
|
||||
true
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
FloatSliderSetting(
|
||||
context,
|
||||
QuestVrSettings.screenSizeSetting(),
|
||||
R.string.quest_screen_size,
|
||||
R.string.quest_screen_size_description,
|
||||
0.5f,
|
||||
5.0f,
|
||||
"",
|
||||
0.1f,
|
||||
true
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
FloatSliderSetting(
|
||||
context,
|
||||
QuestVrSettings.headLockedCurvatureSetting(),
|
||||
R.string.quest_head_locked_curvature,
|
||||
R.string.quest_head_locked_curvature_description,
|
||||
0.0f,
|
||||
5.0f,
|
||||
"",
|
||||
0.01f,
|
||||
true
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
SwitchSetting(
|
||||
context,
|
||||
QuestVrSettings.autoLayerSpreadSetting(),
|
||||
R.string.quest_auto_layer_spread,
|
||||
R.string.quest_auto_layer_spread_description
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
FloatSliderSetting(
|
||||
context,
|
||||
QuestVrSettings.layerOffsetSetting(),
|
||||
R.string.quest_layer_offset,
|
||||
R.string.quest_layer_offset_description,
|
||||
0.0001f,
|
||||
0.01f,
|
||||
"",
|
||||
0.0001f,
|
||||
true
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
FloatSliderSetting(
|
||||
context,
|
||||
QuestVrSettings.elementDepthSetting(),
|
||||
R.string.quest_element_depth,
|
||||
R.string.quest_element_depth_description,
|
||||
0.0f,
|
||||
0.1f,
|
||||
"",
|
||||
0.0001f,
|
||||
true
|
||||
)
|
||||
)
|
||||
|
||||
sl.add(HeaderSetting(context, R.string.quest_vr_presets, 0))
|
||||
sl.add(
|
||||
SingleChoiceSetting(
|
||||
context,
|
||||
QuestVrSettings.controllerPresetSetting(),
|
||||
R.string.quest_controller_preset,
|
||||
R.string.quest_controller_preset_description,
|
||||
R.array.questControllerPresetEntries,
|
||||
R.array.questControllerPresetValues
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
RunRunnable(
|
||||
context,
|
||||
R.string.quest_apply_controller_preset,
|
||||
R.string.quest_apply_controller_preset_description,
|
||||
0,
|
||||
R.string.quest_controller_preset_applied,
|
||||
false
|
||||
) {
|
||||
runQuestSettingsMutation { settings ->
|
||||
QuestVrSettings.applySelectedControllerPreset(settings)
|
||||
}
|
||||
}
|
||||
)
|
||||
sl.add(
|
||||
RunRunnable(
|
||||
context,
|
||||
R.string.quest_apply_recommended_defaults,
|
||||
R.string.quest_apply_recommended_defaults_description,
|
||||
0,
|
||||
R.string.quest_recommended_defaults_applied,
|
||||
false
|
||||
) {
|
||||
runQuestSettingsMutation { settings ->
|
||||
QuestVrSettings.applyRecommendedDefaults(settings)
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
sl.add(HeaderSetting(context, R.string.quest_vr_debug, 0))
|
||||
sl.add(
|
||||
SwitchSetting(
|
||||
context,
|
||||
QuestVrSettings.leftHandedSetting(),
|
||||
R.string.quest_left_handed_wiimote,
|
||||
R.string.quest_left_handed_wiimote_description
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
SwitchSetting(
|
||||
context,
|
||||
QuestVrSettings.showMirrorSurfaceSetting(),
|
||||
R.string.quest_show_mirror_surface,
|
||||
R.string.quest_show_mirror_surface_description
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
SwitchSetting(
|
||||
context,
|
||||
BooleanSetting.GFX_SHOW_FPS,
|
||||
R.string.quest_show_perf_hud,
|
||||
R.string.quest_show_perf_hud_description
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
SwitchSetting(
|
||||
context,
|
||||
QuestVrSettings.removeBarsSetting(),
|
||||
R.string.quest_remove_cinematic_bars,
|
||||
R.string.quest_remove_cinematic_bars_description
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
SwitchSetting(
|
||||
context,
|
||||
QuestVrSettings.useVulkanMultiviewSetting(),
|
||||
R.string.quest_use_vulkan_multiview,
|
||||
R.string.quest_use_vulkan_multiview_description
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
SwitchSetting(
|
||||
context,
|
||||
QuestVrSettings.androidDirectToHmdSetting(),
|
||||
R.string.quest_android_direct_to_hmd,
|
||||
R.string.quest_android_direct_to_hmd_description
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
IntSliderSetting(
|
||||
context,
|
||||
QuestVrSettings.clearEfbCopiesSetting(),
|
||||
R.string.quest_clear_efb_copies,
|
||||
R.string.quest_clear_efb_copies_description,
|
||||
0,
|
||||
640,
|
||||
"",
|
||||
10
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
SwitchSetting(
|
||||
context,
|
||||
QuestVrSettings.dontClearScreenSetting(),
|
||||
R.string.quest_dont_clear_screen,
|
||||
R.string.quest_dont_clear_screen_description
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
SwitchSetting(
|
||||
context,
|
||||
QuestVrSettings.disableCpuCullSetting(),
|
||||
R.string.quest_disable_cpu_culling,
|
||||
R.string.quest_disable_cpu_culling_description
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
SwitchSetting(
|
||||
context,
|
||||
QuestVrSettings.loadCustomShadersSetting(),
|
||||
R.string.quest_load_custom_shaders,
|
||||
R.string.quest_load_custom_shaders_description
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
SwitchSetting(
|
||||
context,
|
||||
QuestVrSettings.openXrConfigSceneSetting(),
|
||||
R.string.quest_enable_openxr_config_scene,
|
||||
R.string.quest_enable_openxr_config_scene_description
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
RunRunnable(
|
||||
context,
|
||||
R.string.quest_recenter_now,
|
||||
R.string.quest_recenter_now_description,
|
||||
0,
|
||||
0,
|
||||
true
|
||||
) { NativeLibrary.RequestOpenXRRecenter() }
|
||||
)
|
||||
}
|
||||
|
||||
private fun runQuestSettingsMutation(block: (Settings) -> Unit) {
|
||||
val activeSettings = settings ?: return
|
||||
block(activeSettings)
|
||||
activeSettings.saveSettings()
|
||||
fragmentView.adapter?.notifyAllSettingsChanged()
|
||||
}
|
||||
|
||||
private fun addGcPadSubSettings(sl: ArrayList<SettingsItem>, gcPadNumber: Int, gcPadType: Int) {
|
||||
when (gcPadType) {
|
||||
6, 8, 9, 10, 11 -> {
|
||||
@@ -2499,6 +3238,85 @@ class SettingsFragmentPresenter(
|
||||
)
|
||||
}
|
||||
|
||||
// Only groups that have at least one action wired in HotkeyDispatcher.cpp are listed here.
|
||||
// Categories with no wired actions are omitted from the UI entirely so users don't bind
|
||||
// hotkeys that silently do nothing. See functionalHotkeyControls for per-control filtering.
|
||||
private val hotkeyCategoryGroups: Map<MenuTag, List<String>> = mapOf(
|
||||
MenuTag.HOTKEYS_GENERAL to listOf("General", "Emulation Speed"),
|
||||
MenuTag.HOTKEYS_TAS to listOf("Frame Advance"),
|
||||
MenuTag.HOTKEYS_VR to listOf("VR"),
|
||||
MenuTag.HOTKEYS_SAVE_STATES to listOf("Load State", "Save State"),
|
||||
MenuTag.HOTKEYS_ANDROID to listOf("Android"),
|
||||
)
|
||||
|
||||
// Untranslated control names (C++ ui_name before GetStringT) that are dispatched by
|
||||
// HotkeyDispatcher.cpp. Controls not in this set are hidden within their group so users
|
||||
// cannot bind actions that would silently no-op at runtime.
|
||||
private val functionalHotkeyControls: Set<String> = setOf(
|
||||
"Return to Main Menu",
|
||||
"Toggle Pause", "Stop", "Reset", "Take Screenshot",
|
||||
"Decrease Emulation Speed", "Increase Emulation Speed", "Disable Emulation Speed Limit",
|
||||
"Frame Advance",
|
||||
"Toggle OpenXR", "Reset VR Position",
|
||||
"Decrease Units Per Meter", "Increase Units Per Meter",
|
||||
"Decrease Lean Back Angle", "Increase Lean Back Angle",
|
||||
"Toggle Enable Camera Forward", "Decrease Camera Forward", "Increase Camera Forward",
|
||||
"Toggle Enable Camera Height", "Decrease Camera Height", "Increase Camera Height",
|
||||
"Toggle Virtual Screen",
|
||||
"Decrease Screen Distance", "Increase Screen Distance",
|
||||
"Decrease Screen Size", "Increase Screen Size",
|
||||
"Decrease Screen Curvature", "Increase Screen Curvature",
|
||||
"Toggle Don't Clear Screen", "Toggle Force VBI", "Toggle Remove Cinematic Bars",
|
||||
"Load State Slot 1", "Load State Slot 2", "Load State Slot 3", "Load State Slot 4",
|
||||
"Load State Slot 5", "Load State Slot 6", "Load State Slot 7", "Load State Slot 8",
|
||||
"Load State Slot 9", "Load State Slot 10",
|
||||
"Save State Slot 1", "Save State Slot 2", "Save State Slot 3", "Save State Slot 4",
|
||||
"Save State Slot 5", "Save State Slot 6", "Save State Slot 7", "Save State Slot 8",
|
||||
"Save State Slot 9", "Save State Slot 10",
|
||||
)
|
||||
|
||||
private fun addHotkeySettings(sl: ArrayList<SettingsItem>) {
|
||||
val hotkeys = EmulatedController.getHotkeys()
|
||||
addControllerMetaSettings(sl, hotkeys)
|
||||
|
||||
sl.add(HeaderSetting(context, R.string.hotkey_categories, 0))
|
||||
sl.add(SubmenuSetting(context, R.string.hotkey_android, MenuTag.HOTKEYS_ANDROID))
|
||||
sl.add(SubmenuSetting(context, R.string.hotkey_general, MenuTag.HOTKEYS_GENERAL))
|
||||
sl.add(SubmenuSetting(context, R.string.hotkey_tas, MenuTag.HOTKEYS_TAS))
|
||||
sl.add(SubmenuSetting(context, R.string.hotkey_vr, MenuTag.HOTKEYS_VR))
|
||||
sl.add(SubmenuSetting(context, R.string.hotkey_save_states, MenuTag.HOTKEYS_SAVE_STATES))
|
||||
}
|
||||
|
||||
private fun addHotkeyCategorySettings(sl: ArrayList<SettingsItem>, menuTag: MenuTag) {
|
||||
val hotkeys = EmulatedController.getHotkeys()
|
||||
val wantedGroupNames = hotkeyCategoryGroups[menuTag] ?: return
|
||||
|
||||
val groupCount = hotkeys.getGroupCount()
|
||||
for (wantedName in wantedGroupNames) {
|
||||
for (i in 0 until groupCount) {
|
||||
val group = hotkeys.getGroup(i)
|
||||
// Match the untranslated `name` (HotkeyManager passes a single string for both
|
||||
// name and ui_name, so this matches the C++ s_groups_info entry under any locale).
|
||||
if (!group.getName().equals(wantedName, ignoreCase = true)) continue
|
||||
|
||||
// Filter to only controls wired in HotkeyDispatcher.cpp. Controls not in
|
||||
// functionalHotkeyControls would silently no-op if bound, so we hide them.
|
||||
val controlCount = group.getControlCount()
|
||||
val functional = (0 until controlCount)
|
||||
.map { group.getControl(it) }
|
||||
.filter { it.getName() in functionalHotkeyControls }
|
||||
|
||||
if (functional.isNotEmpty()) {
|
||||
sl.add(HeaderSetting(group.getUiName(), ""))
|
||||
for (control in functional) {
|
||||
sl.add(InputMappingControlSetting(control, hotkeys))
|
||||
}
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds controller settings that can be set on a per-game basis.
|
||||
*
|
||||
@@ -2783,6 +3601,7 @@ class SettingsFragmentPresenter(
|
||||
companion object {
|
||||
const val ARG_CONTROLLER_TYPE = "controller_type"
|
||||
const val ARG_SERIALPORT1_TYPE = "serialport1_type"
|
||||
const val ARG_REVISION = "revision"
|
||||
|
||||
// Value obtained from LogLevel in Common/Logging/Log.h
|
||||
private fun getLogVerbosityEntries(): Int {
|
||||
|
||||
@@ -14,6 +14,7 @@ import org.dolphinemu.dolphinemu.NativeLibrary
|
||||
import org.dolphinemu.dolphinemu.activities.EmulationActivity
|
||||
import org.dolphinemu.dolphinemu.databinding.FragmentEmulationBinding
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.BooleanSetting
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.QuestVrSettings
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.Settings
|
||||
import org.dolphinemu.dolphinemu.overlay.InputOverlay
|
||||
import org.dolphinemu.dolphinemu.utils.AfterDirectoryInitializationRunner
|
||||
@@ -67,6 +68,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
|
||||
// The new Surface created here will get passed to the native code via onSurfaceChanged.
|
||||
val surfaceView = binding.surfaceEmulation
|
||||
surfaceView.holder.addCallback(this)
|
||||
surfaceView.alpha = if (QuestVrSettings.shouldShowMirrorSurface()) 1.0f else 0.0f
|
||||
|
||||
inputOverlay = binding.surfaceInputOverlay
|
||||
|
||||
|
||||
@@ -16,11 +16,13 @@ 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.NativeLibrary
|
||||
import org.dolphinemu.dolphinemu.R
|
||||
import org.dolphinemu.dolphinemu.adapters.PlatformPagerAdapter
|
||||
import org.dolphinemu.dolphinemu.databinding.ActivityMainBinding
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.IntSetting
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.NativeConfig
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.QuestVrSettings
|
||||
import org.dolphinemu.dolphinemu.features.settings.ui.MenuTag
|
||||
import org.dolphinemu.dolphinemu.features.settings.ui.SettingsActivity
|
||||
import org.dolphinemu.dolphinemu.fragments.GridOptionDialogFragment
|
||||
@@ -30,6 +32,7 @@ import org.dolphinemu.dolphinemu.ui.platform.PlatformTab
|
||||
import org.dolphinemu.dolphinemu.utils.AfterDirectoryInitializationRunner
|
||||
import org.dolphinemu.dolphinemu.utils.DirectoryInitialization
|
||||
import org.dolphinemu.dolphinemu.utils.InsetsHelper
|
||||
import org.dolphinemu.dolphinemu.utils.Log
|
||||
import org.dolphinemu.dolphinemu.utils.PermissionsHandler
|
||||
import org.dolphinemu.dolphinemu.utils.StartupHandler
|
||||
import org.dolphinemu.dolphinemu.utils.ThemeHelper
|
||||
@@ -43,6 +46,7 @@ class MainActivity : AppCompatActivity(), MainView, OnRefreshListener, ThemeProv
|
||||
private lateinit var binding: ActivityMainBinding
|
||||
|
||||
private lateinit var menu: Menu
|
||||
private var staleQuestStopRequested = false
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
installSplashScreen().setKeepOnScreenCondition { !DirectoryInitialization.areDolphinDirectoriesReady() }
|
||||
@@ -52,6 +56,8 @@ class MainActivity : AppCompatActivity(), MainView, OnRefreshListener, ThemeProv
|
||||
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
stopStaleQuestEmulation()
|
||||
|
||||
binding = ActivityMainBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
|
||||
@@ -100,9 +106,18 @@ class MainActivity : AppCompatActivity(), MainView, OnRefreshListener, ThemeProv
|
||||
.runWithLifecycle(this) { setPlatformTabsAndStartGameFileCacheService() }
|
||||
}
|
||||
|
||||
stopStaleQuestEmulation()
|
||||
presenter.onResume()
|
||||
}
|
||||
|
||||
private fun stopStaleQuestEmulation() {
|
||||
if (!staleQuestStopRequested && QuestVrSettings.isQuestBuild() && NativeLibrary.IsRunning()) {
|
||||
staleQuestStopRequested = true
|
||||
Log.warning("[MainActivity] Stopping stale Quest emulation before showing main UI.")
|
||||
NativeLibrary.StopEmulation()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onStop() {
|
||||
super.onStop()
|
||||
if (isChangingConfigurations) {
|
||||
|
||||
@@ -24,6 +24,7 @@ import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.util.Arrays;
|
||||
|
||||
import org.dolphinemu.dolphinemu.NativeLibrary;
|
||||
import org.dolphinemu.dolphinemu.R;
|
||||
@@ -144,8 +145,9 @@ public final class DirectoryInitialization
|
||||
File sysDirectory = new File(context.getFilesDir(), "Sys");
|
||||
|
||||
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
String revision = NativeLibrary.GetGitRevision();
|
||||
if (!preferences.getString("sysDirectoryVersion", "").equals(revision))
|
||||
String version = getSysDirectoryVersion(context);
|
||||
boolean isMissingGameSettingsVr = !new File(sysDirectory, "GameSettingsVR").isDirectory();
|
||||
if (!preferences.getString("sysDirectoryVersion", "").equals(version) || isMissingGameSettingsVr)
|
||||
{
|
||||
// There is no extracted Sys directory, or there is a Sys directory from another
|
||||
// version of Dolphin that might contain outdated files. Let's (re-)extract Sys.
|
||||
@@ -153,7 +155,7 @@ public final class DirectoryInitialization
|
||||
copyAssetFolder("Sys", sysDirectory, context);
|
||||
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
editor.putString("sysDirectoryVersion", revision);
|
||||
editor.putString("sysDirectoryVersion", version);
|
||||
editor.apply();
|
||||
}
|
||||
|
||||
@@ -175,6 +177,27 @@ public final class DirectoryInitialization
|
||||
DirectoryInitialization.driverPath = driverExtractedDir.getAbsolutePath();
|
||||
}
|
||||
|
||||
private static String getSysDirectoryVersion(Context context)
|
||||
{
|
||||
String[] gameSettingsVrAssets;
|
||||
try
|
||||
{
|
||||
gameSettingsVrAssets = context.getAssets().list("Sys/GameSettingsVR");
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
Log.warning("[DirectoryInitialization] Failed to list GameSettingsVR assets: " + e);
|
||||
gameSettingsVrAssets = new String[0];
|
||||
}
|
||||
|
||||
if (gameSettingsVrAssets == null)
|
||||
gameSettingsVrAssets = new String[0];
|
||||
|
||||
Arrays.sort(gameSettingsVrAssets);
|
||||
return NativeLibrary.GetGitRevision() + "-GameSettingsVR-" +
|
||||
Arrays.hashCode(gameSettingsVrAssets);
|
||||
}
|
||||
|
||||
private static void deleteDirectoryRecursively(@NonNull final File file)
|
||||
{
|
||||
if (file.isDirectory())
|
||||
|
||||
@@ -27,6 +27,10 @@
|
||||
android:id="@+id/menu_emulation_choose_controller"
|
||||
android:title="@string/emulation_choose_controller"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_emulation_recenter_vr"
|
||||
android:title="@string/quest_recenter_now"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_emulation_reset_overlay"
|
||||
android:title="@string/emulation_touch_overlay_reset"/>
|
||||
|
||||
@@ -29,6 +29,10 @@
|
||||
android:id="@+id/menu_emulation_choose_controller"
|
||||
android:title="@string/emulation_choose_controller"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_emulation_recenter_vr"
|
||||
android:title="@string/quest_recenter_now"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_emulation_ir_group"
|
||||
android:title="@string/emulation_ir_group">
|
||||
|
||||
@@ -339,6 +339,26 @@
|
||||
<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">
|
||||
<item>@string/off</item>
|
||||
<item>@string/quest_opcode_replay_60_to_90</item>
|
||||
<item>@string/quest_opcode_replay_30_to_90</item>
|
||||
</string-array>
|
||||
<integer-array name="questOpcodeReplayValues">
|
||||
<item>0</item>
|
||||
<item>1</item>
|
||||
<item>2</item>
|
||||
</integer-array>
|
||||
|
||||
<!-- Aspect Ratio Preference -->
|
||||
<string-array name="aspectRatioEntries">
|
||||
<item>@string/aspect_ratio_auto</item>
|
||||
@@ -394,11 +414,13 @@
|
||||
<string-array name="wiimoteTypeEntries">
|
||||
<item>@string/wiimote_disabled</item>
|
||||
<item>@string/wiimote_emulated</item>
|
||||
<item>@string/wiimote_openxr</item>
|
||||
<item>@string/wiimote_real</item>
|
||||
</string-array>
|
||||
<integer-array name="wiimoteTypeValues">
|
||||
<item>0</item>
|
||||
<item>1</item>
|
||||
<item>3</item>
|
||||
<item>2</item>
|
||||
</integer-array>
|
||||
|
||||
|
||||
@@ -665,8 +665,8 @@ It can efficiently compress both junk data and encrypted Wii data.
|
||||
<!-- Misc -->
|
||||
<string name="enabled">Enabled</string>
|
||||
<string name="default_values">Default Values</string>
|
||||
<string name="slider_setting_value">%.0f%2$s</string>
|
||||
<string name="slider_setting_float_value">%.2f%2$s</string>
|
||||
<string name="slider_setting_value">%1$.0f%2$s</string>
|
||||
<string name="slider_setting_float_value">%1$.2f%2$s</string>
|
||||
<string name="disc_number">Disc %1$d</string>
|
||||
<string name="replug_gc_adapter">GameCube Adapter couldn\'t be opened. Please re-plug the device.</string>
|
||||
<string name="disabled_gc_overlay_notice">The selected GameCube controller is set to \"None\"</string>
|
||||
@@ -783,6 +783,105 @@ It can efficiently compress both junk data and encrypted Wii data.
|
||||
<string name="stereoscopy_side_by_side">Side-by-Side</string>
|
||||
<string name="stereoscopy_top_and_bottom">Top-and-Bottom</string>
|
||||
<string name="stereoscopy_anaglyph">Anaglyph</string>
|
||||
<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_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_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_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_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_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_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_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_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_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>
|
||||
<string name="quest_virtual_screen_description">Places menus, FMV, and HUD elements on a floating virtual screen in 3D space.</string>
|
||||
<string name="quest_screen_distance">Screen Distance</string>
|
||||
<string name="quest_screen_distance_description">Controls how far the virtual screen sits from the viewer.</string>
|
||||
<string name="quest_screen_size">Screen Size</string>
|
||||
<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_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_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_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_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>
|
||||
<string name="quest_dont_clear_screen_description">Prevents clearing the OpenXR eye framebuffers before rendering each frame.</string>
|
||||
<string name="quest_disable_cpu_culling">Disable CPU Culling in VR</string>
|
||||
<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>
|
||||
<string name="quest_vr_config_description">Merged default and user GameSettingsVR profile values for this game. Editing writes to the user profile only.</string>
|
||||
<string name="quest_no_stored_vr_config">No stored VR config found for this game.</string>
|
||||
<string name="quest_hide_objects">Hide Objects</string>
|
||||
<string name="quest_hide_objects_description">Enable or disable stored Hide Object codes for this game.</string>
|
||||
<string name="quest_shader_overrides">Shader Overrides</string>
|
||||
<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_no_stored_overrides">No stored overrides found for this game.</string>
|
||||
|
||||
<!-- Aspect Ratio Preference -->
|
||||
<string name="aspect_ratio_auto">Auto</string>
|
||||
@@ -819,8 +918,26 @@ It can efficiently compress both junk data and encrypted Wii data.
|
||||
<!-- Wiimote Types -->
|
||||
<string name="wiimote_disabled">None</string>
|
||||
<string name="wiimote_emulated">Emulated Wii Remote</string>
|
||||
<string name="wiimote_openxr">OpenXR Wii Remote</string>
|
||||
<string name="wiimote_real">Real Wii Remote (DolphinBar required)</string>
|
||||
|
||||
<!-- Hotkeys -->
|
||||
<string name="hotkey_settings">Hotkey Settings</string>
|
||||
<string name="hotkey_categories">Categories</string>
|
||||
<string name="hotkey_general">General</string>
|
||||
<string name="hotkey_tas">TAS Tools</string>
|
||||
<string name="hotkey_debugging">Debugging</string>
|
||||
<string name="hotkey_wii">Wii</string>
|
||||
<string name="hotkey_controller_profile">Controller Profiles</string>
|
||||
<string name="hotkey_graphics">Graphics</string>
|
||||
<string name="hotkey_vr">VR</string>
|
||||
<string name="hotkey_3d">Stereoscopic 3D</string>
|
||||
<string name="hotkey_save_states">Save States</string>
|
||||
<string name="hotkey_states_other">Other Save State Hotkeys</string>
|
||||
<string name="hotkey_gba">GBA</string>
|
||||
<string name="hotkey_usb">USB Emulation</string>
|
||||
<string name="hotkey_android">Android / Quest</string>
|
||||
|
||||
<!-- Gamepad Controls -->
|
||||
<string name="gamepad_start">Start</string>
|
||||
<string name="gamepad_d_pad">D-Pad</string>
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<uses-permission android:name="org.khronos.openxr.permission.OPENXR_SYSTEM" />
|
||||
|
||||
<queries>
|
||||
<provider android:authorities="org.khronos.openxr.runtime_broker;org.khronos.openxr.system_runtime_broker" />
|
||||
<intent>
|
||||
<action android:name="org.khronos.openxr.OpenXRRuntimeService" />
|
||||
</intent>
|
||||
<intent>
|
||||
<action android:name="org.khronos.openxr.OpenXRApiLayerService" />
|
||||
</intent>
|
||||
</queries>
|
||||
|
||||
<uses-feature
|
||||
android:name="android.hardware.vr.headtracking"
|
||||
android:required="true"
|
||||
android:version="1" />
|
||||
<uses-feature
|
||||
android:name="android.software.xr.api.openxr"
|
||||
android:required="true" />
|
||||
|
||||
<application>
|
||||
<uses-native-library
|
||||
android:name="libopenxr.google.so"
|
||||
android:required="false" />
|
||||
<meta-data
|
||||
android:name="com.oculus.supportedDevices"
|
||||
android:value="${questSupportedDevices}" />
|
||||
<meta-data
|
||||
android:name="com.oculus.vr.focusaware"
|
||||
android:value="true" />
|
||||
<meta-data
|
||||
android:name="com.oculus.trade_cpu_for_gpu_amount"
|
||||
android:value="-1" />
|
||||
|
||||
<activity
|
||||
android:name=".activities.EmulationActivity"
|
||||
android:theme="@style/Theme.Dolphin.EmulationVR"
|
||||
android:launchMode="singleTask"
|
||||
android:resizeableActivity="false"
|
||||
android:exported="true"
|
||||
tools:node="merge"
|
||||
tools:replace="android:theme,android:exported">
|
||||
<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>
|
||||
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string-array name="stereoscopyEntries">
|
||||
<item>@string/stereoscopy_off</item>
|
||||
<item>@string/stereoscopy_side_by_side</item>
|
||||
<item>@string/stereoscopy_top_and_bottom</item>
|
||||
<item>@string/stereoscopy_anaglyph</item>
|
||||
<item>@string/stereoscopy_openxr</item>
|
||||
</string-array>
|
||||
|
||||
<integer-array name="stereoscopyValues">
|
||||
<item>0</item>
|
||||
<item>1</item>
|
||||
<item>2</item>
|
||||
<item>3</item>
|
||||
<item>6</item>
|
||||
</integer-array>
|
||||
</resources>
|
||||
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<style name="Theme.Dolphin.EmulationVR" parent="Theme.Dolphin.Main">
|
||||
<item name="windowActionBar">false</item>
|
||||
<item name="windowNoTitle">true</item>
|
||||
<item name="android:windowNoTitle">true</item>
|
||||
<item name="android:windowFullscreen">true</item>
|
||||
<item name="android:windowIsTranslucent">false</item>
|
||||
<item name="android:windowBackground">@android:color/black</item>
|
||||
<item name="android:statusBarColor">@android:color/black</item>
|
||||
<item name="android:navigationBarColor">@android:color/black</item>
|
||||
<item name="android:windowContentTransitions">false</item>
|
||||
</style>
|
||||
</resources>
|
||||
@@ -0,0 +1,94 @@
|
||||
param(
|
||||
[string]$Keystore = $env:DOLPHIN_ANDROID_KEYSTORE,
|
||||
[string]$StorePass = $env:DOLPHIN_ANDROID_STOREPASS,
|
||||
[string]$KeyAlias = $env:DOLPHIN_ANDROID_KEYALIAS,
|
||||
[string]$KeyPass = $env:DOLPHIN_ANDROID_KEYPASS
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
|
||||
$javaHome = "C:\Program Files\Java\jdk-17"
|
||||
$androidRoot = "C:\Users\Christophe\AppData\Local\Android"
|
||||
$androidHome = Join-Path $androidRoot "Sdk"
|
||||
$ndkHome = Join-Path $androidRoot "android-ndk-r29"
|
||||
$vsCmakeBin = "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin"
|
||||
$vsNinjaBin = "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja"
|
||||
|
||||
if (-not (Test-Path (Join-Path $javaHome "bin\java.exe"))) {
|
||||
throw "JDK 17 not found at $javaHome"
|
||||
}
|
||||
|
||||
if (-not (Test-Path $androidHome)) {
|
||||
throw "Android SDK root not found at $androidHome"
|
||||
}
|
||||
|
||||
if (-not (Test-Path $ndkHome)) {
|
||||
throw "Android NDK not found at $ndkHome"
|
||||
}
|
||||
|
||||
$signingValues = @{
|
||||
keystore = if ($Keystore) { $Keystore } else { $env:ORG_GRADLE_PROJECT_keystore }
|
||||
storepass = if ($StorePass) { $StorePass } else { $env:ORG_GRADLE_PROJECT_storepass }
|
||||
keyalias = if ($KeyAlias) { $KeyAlias } else { $env:ORG_GRADLE_PROJECT_keyalias }
|
||||
keypass = if ($KeyPass) { $KeyPass } else { $env:ORG_GRADLE_PROJECT_keypass }
|
||||
}
|
||||
|
||||
$missingSigningKeys = $signingValues.GetEnumerator() |
|
||||
Where-Object { [string]::IsNullOrWhiteSpace($_.Value) } |
|
||||
Select-Object -ExpandProperty Key
|
||||
|
||||
if ($missingSigningKeys.Count -gt 0) {
|
||||
throw @"
|
||||
Missing release signing settings: $($missingSigningKeys -join ", ")
|
||||
|
||||
Provide them either as parameters:
|
||||
.\build-quest-release.ps1 -Keystore C:\path\release.jks -StorePass ... -KeyAlias ... -KeyPass ...
|
||||
|
||||
Or as environment variables:
|
||||
DOLPHIN_ANDROID_KEYSTORE
|
||||
DOLPHIN_ANDROID_STOREPASS
|
||||
DOLPHIN_ANDROID_KEYALIAS
|
||||
DOLPHIN_ANDROID_KEYPASS
|
||||
"@
|
||||
}
|
||||
|
||||
$resolvedKeystore = $signingValues.keystore
|
||||
if (-not [System.IO.Path]::IsPathRooted($resolvedKeystore)) {
|
||||
$resolvedKeystore = Join-Path $scriptDir $resolvedKeystore
|
||||
}
|
||||
if (-not (Test-Path $resolvedKeystore)) {
|
||||
throw "Release keystore not found at $resolvedKeystore"
|
||||
}
|
||||
$signingValues.keystore = (Resolve-Path $resolvedKeystore).Path
|
||||
|
||||
$env:JAVA_HOME = $javaHome
|
||||
$env:ANDROID_HOME = $androidHome
|
||||
$env:ANDROID_SDK_ROOT = $androidHome
|
||||
$env:ANDROID_NDK_HOME = $ndkHome
|
||||
$pathPrefixes = @("$javaHome\bin", "$androidHome\platform-tools")
|
||||
if (Test-Path (Join-Path $vsCmakeBin "cmake.exe")) {
|
||||
$pathPrefixes += $vsCmakeBin
|
||||
}
|
||||
if (Test-Path (Join-Path $vsNinjaBin "ninja.exe")) {
|
||||
$pathPrefixes += $vsNinjaBin
|
||||
}
|
||||
$env:Path = (($pathPrefixes -join ";") + ";" + $env:Path)
|
||||
|
||||
Push-Location $scriptDir
|
||||
try {
|
||||
$oldGradleSigningEnv = @{}
|
||||
foreach ($key in $signingValues.Keys) {
|
||||
$envName = "ORG_GRADLE_PROJECT_$key"
|
||||
$oldGradleSigningEnv[$envName] = [Environment]::GetEnvironmentVariable($envName, "Process")
|
||||
[Environment]::SetEnvironmentVariable($envName, $signingValues[$key], "Process")
|
||||
}
|
||||
|
||||
& ".\gradlew.bat" "app:assembleQuestRelease"
|
||||
}
|
||||
finally {
|
||||
foreach ($entry in $oldGradleSigningEnv.GetEnumerator()) {
|
||||
[Environment]::SetEnvironmentVariable($entry.Key, $entry.Value, "Process")
|
||||
}
|
||||
Pop-Location
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
|
||||
$javaHome = "C:\Program Files\Java\jdk-17"
|
||||
$androidRoot = "C:\Users\Christophe\AppData\Local\Android"
|
||||
$androidHome = Join-Path $androidRoot "Sdk"
|
||||
$ndkHome = Join-Path $androidRoot "android-ndk-r29"
|
||||
$vsCmakeBin = "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin"
|
||||
$vsNinjaBin = "C:\Program Files\Microsoft Visual Studio\2022\Community\CommonExtensions\Microsoft\CMake\Ninja"
|
||||
|
||||
if (-not (Test-Path (Join-Path $javaHome "bin\java.exe"))) {
|
||||
throw "JDK 17 not found at $javaHome"
|
||||
}
|
||||
|
||||
if (-not (Test-Path $androidHome)) {
|
||||
throw "Android SDK root not found at $androidHome"
|
||||
}
|
||||
|
||||
if (-not (Test-Path $ndkHome)) {
|
||||
throw "Android NDK not found at $ndkHome"
|
||||
}
|
||||
|
||||
$env:JAVA_HOME = $javaHome
|
||||
$env:ANDROID_HOME = $androidHome
|
||||
$env:ANDROID_SDK_ROOT = $androidHome
|
||||
$env:ANDROID_NDK_HOME = $ndkHome
|
||||
$pathPrefixes = @("$javaHome\bin", "$androidHome\platform-tools")
|
||||
if (Test-Path (Join-Path $vsCmakeBin "cmake.exe")) {
|
||||
$pathPrefixes += $vsCmakeBin
|
||||
}
|
||||
if (Test-Path (Join-Path $vsNinjaBin "ninja.exe")) {
|
||||
$pathPrefixes += $vsNinjaBin
|
||||
}
|
||||
$env:Path = (($pathPrefixes -join ";") + ";" + $env:Path)
|
||||
|
||||
Push-Location $scriptDir
|
||||
try {
|
||||
& ".\gradlew.bat" "app:assembleQuestDebug"
|
||||
}
|
||||
finally {
|
||||
Pop-Location
|
||||
}
|
||||
@@ -27,6 +27,8 @@ add_library(main SHARED
|
||||
Input/CoreDevice.h
|
||||
Input/EmulatedController.cpp
|
||||
Input/EmulatedController.h
|
||||
Input/HotkeyDispatcher.cpp
|
||||
Input/HotkeyDispatcher.h
|
||||
Input/InputDetector.cpp
|
||||
Input/InputOverrider.cpp
|
||||
Input/MappingCommon.cpp
|
||||
@@ -62,6 +64,7 @@ PRIVATE
|
||||
${CMAKE_SOURCE_DIR}/Externals/VulkanMemoryAllocator/include
|
||||
)
|
||||
|
||||
file(GLOB_RECURSE android_sys_assets CONFIGURE_DEPENDS "${CMAKE_SOURCE_DIR}/Data/Sys/*")
|
||||
file(MAKE_DIRECTORY ${CMAKE_SOURCE_DIR}/Source/Android/app/src/main/assets/)
|
||||
file(REMOVE_RECURSE ${CMAKE_SOURCE_DIR}/Source/Android/app/src/main/assets/Sys/)
|
||||
file(COPY ${CMAKE_SOURCE_DIR}/Data/Sys DESTINATION ${CMAKE_SOURCE_DIR}/Source/Android/app/src/main/assets/)
|
||||
|
||||
@@ -31,6 +31,13 @@ jobject ControlToJava(JNIEnv* env, ControllerEmu::Control* control)
|
||||
|
||||
extern "C" {
|
||||
|
||||
JNIEXPORT jstring JNICALL
|
||||
Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_Control_getName(JNIEnv* env,
|
||||
jobject obj)
|
||||
{
|
||||
return ToJString(env, GetPointer(env, obj)->ui_name);
|
||||
}
|
||||
|
||||
JNIEXPORT jstring JNICALL
|
||||
Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_Control_getUiName(JNIEnv* env,
|
||||
jobject obj)
|
||||
|
||||
@@ -37,6 +37,13 @@ Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_ControlGroup_g
|
||||
return ToJString(env, Common::GetStringT(GetPointer(env, obj)->ui_name.c_str()));
|
||||
}
|
||||
|
||||
JNIEXPORT jstring JNICALL
|
||||
Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_ControlGroup_getName(
|
||||
JNIEnv* env, jobject obj)
|
||||
{
|
||||
return ToJString(env, GetPointer(env, obj)->name);
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_ControlGroup_getGroupType(
|
||||
JNIEnv* env, jobject obj)
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include "Core/HW/GCPad.h"
|
||||
#include "Core/HW/Wiimote.h"
|
||||
#include "Core/HW/WiimoteEmu/WiimoteEmu.h"
|
||||
#include "Core/HotkeyManager.h"
|
||||
#include "InputCommon/ControllerEmu/ControlGroup/Attachments.h"
|
||||
#include "InputCommon/ControllerEmu/ControllerEmu.h"
|
||||
#include "InputCommon/ControllerInterface/ControllerInterface.h"
|
||||
@@ -191,6 +192,13 @@ Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_EmulatedContro
|
||||
return EmulatedControllerToJava(env, Wiimote::GetConfig()->GetController(controller_index));
|
||||
}
|
||||
|
||||
JNIEXPORT jobject JNICALL
|
||||
Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_EmulatedController_getHotkeys(
|
||||
JNIEnv* env, jclass)
|
||||
{
|
||||
return EmulatedControllerToJava(env, HotkeyManagerEmu::GetConfig()->GetController(0));
|
||||
}
|
||||
|
||||
JNIEXPORT jobject JNICALL
|
||||
Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_EmulatedController_getWiimoteAttachment(
|
||||
JNIEnv* env, jclass, jint controller_index, jint attachment_index)
|
||||
|
||||
@@ -0,0 +1,377 @@
|
||||
// Copyright 2026 Dolphin Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "jni/Input/HotkeyDispatcher.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <sys/resource.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "Common/Config/Config.h"
|
||||
#include "Common/Thread.h"
|
||||
|
||||
#include "Core/Config/GraphicsSettings.h"
|
||||
#include "Core/Config/MainSettings.h"
|
||||
#include "Core/Core.h"
|
||||
#include "Core/HW/ProcessorInterface.h"
|
||||
#include "Core/HotkeyManager.h"
|
||||
#include "Core/State.h"
|
||||
#include "Core/System.h"
|
||||
|
||||
#include "InputCommon/ControlReference/ControlReference.h"
|
||||
#include "InputCommon/ControllerInterface/ControllerInterface.h"
|
||||
|
||||
#include "jni/Host.h"
|
||||
|
||||
#ifdef ENABLE_VR
|
||||
#include "VideoCommon/VR/OpenXRManager.h"
|
||||
#endif
|
||||
|
||||
namespace
|
||||
{
|
||||
constexpr int kPollPeriodMs = 11; // ~90 Hz, matches Quest 3 refresh — see plan §"Threading model".
|
||||
constexpr int kBackgroundNice = 10;
|
||||
// Number of consecutive 11 ms ticks HK_ANDROID_RETURN_TO_MAIN_MENU must be held before firing
|
||||
// (~3 seconds, same threshold as the old hard-coded OpenXRManager long-press).
|
||||
constexpr int kReturnMenuHoldTicks = 3000 / kPollPeriodMs;
|
||||
|
||||
bool IsHotkey(int id, bool held = false)
|
||||
{
|
||||
return HotkeyManagerEmu::IsPressed(id, held);
|
||||
}
|
||||
} // namespace
|
||||
|
||||
HotkeyDispatcher::~HotkeyDispatcher()
|
||||
{
|
||||
Stop();
|
||||
}
|
||||
|
||||
void HotkeyDispatcher::Start(StopRequestCallback on_stop_requested)
|
||||
{
|
||||
if (m_thread.joinable())
|
||||
return;
|
||||
|
||||
m_on_stop_requested = std::move(on_stop_requested);
|
||||
m_stop_requested.Clear();
|
||||
|
||||
// HotkeyManagerEmu starts disabled on Android (PC's HotkeyScheduler ctor enables it,
|
||||
// but no equivalent runs here). Without this, IsPressed() short-circuits and the loop
|
||||
// is a silent no-op — flagged in the design review.
|
||||
HotkeyManagerEmu::Enable(true);
|
||||
|
||||
m_thread = std::thread(&HotkeyDispatcher::Run, this);
|
||||
}
|
||||
|
||||
void HotkeyDispatcher::Stop()
|
||||
{
|
||||
if (!m_thread.joinable())
|
||||
return;
|
||||
|
||||
m_stop_requested.Set();
|
||||
m_thread.join();
|
||||
m_on_stop_requested = {};
|
||||
}
|
||||
|
||||
void HotkeyDispatcher::Run()
|
||||
{
|
||||
Common::SetCurrentThreadName("HotkeyDispatcher");
|
||||
|
||||
// PRIO_PROCESS + tid is the Linux/Android idiom for a per-thread nice value (despite
|
||||
// PRIO_PROCESS's name). Best-effort — failure is benign, the thread just runs at the
|
||||
// default priority.
|
||||
setpriority(PRIO_PROCESS, gettid(), kBackgroundNice);
|
||||
|
||||
Core::System& system = Core::System::GetInstance();
|
||||
|
||||
while (!m_stop_requested.IsSet())
|
||||
{
|
||||
Common::SleepCurrentThread(kPollPeriodMs);
|
||||
|
||||
g_controller_interface.SetCurrentInputChannel(ciface::InputChannel::Host);
|
||||
g_controller_interface.UpdateInput();
|
||||
|
||||
if (!HotkeyManagerEmu::IsEnabled())
|
||||
continue;
|
||||
|
||||
const Core::State state = Core::GetState(system);
|
||||
if (state == Core::State::Stopping || state == Core::State::Uninitialized)
|
||||
continue;
|
||||
|
||||
// Fill the rising-edge state for the next IsPressed() calls. PC always passes
|
||||
// require_focus=true here; on Android we have no window-focus concept while the
|
||||
// EmulationActivity is foreground, so we always allow input.
|
||||
Core::UpdateInputGate(true);
|
||||
HotkeyManagerEmu::GetStatus(false);
|
||||
ControlReference::SetInputGate(true);
|
||||
HotkeyManagerEmu::GetStatus(true);
|
||||
|
||||
// ---------- Core emulation ----------
|
||||
|
||||
if (IsHotkey(HK_PLAY_PAUSE))
|
||||
{
|
||||
HostThreadLock guard;
|
||||
const Core::State current = Core::GetState(system);
|
||||
if (current == Core::State::Running)
|
||||
Core::SetState(system, Core::State::Paused);
|
||||
else if (current == Core::State::Paused)
|
||||
Core::SetState(system, Core::State::Running);
|
||||
}
|
||||
|
||||
if (IsHotkey(HK_STOP))
|
||||
{
|
||||
{
|
||||
HostThreadLock guard;
|
||||
Core::Stop(system);
|
||||
}
|
||||
// Wake the Run() wait loop so it observes !Core::IsRunning and exits, which then
|
||||
// triggers finishEmulationActivity() (and the previous task's MainActivity-revival
|
||||
// fix). The next loop iteration will see the resulting state == Stopping and bail
|
||||
// out of the dispatch block, but we still want to keep polling until Stop() is
|
||||
// called on us so that no spurious actions fire mid-shutdown.
|
||||
if (m_on_stop_requested)
|
||||
m_on_stop_requested();
|
||||
continue;
|
||||
}
|
||||
|
||||
if (IsHotkey(HK_RESET))
|
||||
{
|
||||
HostThreadLock guard;
|
||||
system.GetProcessorInterface().ResetButton_Tap();
|
||||
}
|
||||
|
||||
if (IsHotkey(HK_SCREENSHOT))
|
||||
{
|
||||
HostThreadLock guard;
|
||||
Core::SaveScreenShot();
|
||||
}
|
||||
|
||||
if (IsHotkey(HK_FRAME_ADVANCE))
|
||||
{
|
||||
HostThreadLock guard;
|
||||
Core::DoFrameStep(system);
|
||||
}
|
||||
|
||||
// Held hotkey: throttle is disabled while the bound input is held.
|
||||
{
|
||||
const bool throttle_held = IsHotkey(HK_TOGGLE_THROTTLE, true);
|
||||
Core::SetIsThrottlerTempDisabled(throttle_held);
|
||||
}
|
||||
|
||||
if (IsHotkey(HK_DECREASE_EMULATION_SPEED))
|
||||
{
|
||||
auto speed = Config::Get(Config::MAIN_EMULATION_SPEED) - 0.1f;
|
||||
if (speed > 0.0f)
|
||||
{
|
||||
if (speed >= 0.95f && speed <= 1.05f)
|
||||
speed = 1.0f;
|
||||
Config::SetCurrent(Config::MAIN_EMULATION_SPEED, speed);
|
||||
}
|
||||
}
|
||||
if (IsHotkey(HK_INCREASE_EMULATION_SPEED))
|
||||
{
|
||||
auto speed = Config::Get(Config::MAIN_EMULATION_SPEED) + 0.1f;
|
||||
if (speed >= 0.95f && speed <= 1.05f)
|
||||
speed = 1.0f;
|
||||
Config::SetCurrent(Config::MAIN_EMULATION_SPEED, speed);
|
||||
}
|
||||
|
||||
// Save/Load state slots 1..10. The HK_*_STATE_SLOT_1 hotkey is slot 1 (1-indexed)
|
||||
// but State::Save/Load take 0-based slot numbers.
|
||||
for (int slot = 1; slot <= 10; ++slot)
|
||||
{
|
||||
if (IsHotkey(HK_LOAD_STATE_SLOT_1 + (slot - 1)))
|
||||
{
|
||||
HostThreadLock guard;
|
||||
State::Load(system, slot);
|
||||
}
|
||||
if (IsHotkey(HK_SAVE_STATE_SLOT_1 + (slot - 1)))
|
||||
{
|
||||
HostThreadLock guard;
|
||||
State::Save(system, slot);
|
||||
}
|
||||
}
|
||||
|
||||
// ---------- VR ----------
|
||||
|
||||
if (IsHotkey(HK_VR_TOGGLE_OPENXR))
|
||||
{
|
||||
Config::SetCurrent(Config::GFX_VR_ENABLE_OPENXR,
|
||||
!Config::Get(Config::GFX_VR_ENABLE_OPENXR));
|
||||
}
|
||||
|
||||
#ifdef ENABLE_VR
|
||||
if (IsHotkey(HK_VR_RESET_POSITION))
|
||||
{
|
||||
if (VR::g_openxr)
|
||||
VR::g_openxr->RequestRecenter();
|
||||
}
|
||||
#endif
|
||||
|
||||
if (IsHotkey(HK_VR_DECREASE_UNITS_PER_METER))
|
||||
{
|
||||
const float v = std::max(Config::GFX_VR_UNITS_PER_METER_MIN,
|
||||
Config::Get(Config::GFX_VR_UNITS_PER_METER) -
|
||||
Config::GFX_VR_UNITS_PER_METER_STEP);
|
||||
Config::SetCurrent(Config::GFX_VR_UNITS_PER_METER, v);
|
||||
}
|
||||
if (IsHotkey(HK_VR_INCREASE_UNITS_PER_METER))
|
||||
{
|
||||
const float v = std::min(Config::GFX_VR_UNITS_PER_METER_MAX,
|
||||
Config::Get(Config::GFX_VR_UNITS_PER_METER) +
|
||||
Config::GFX_VR_UNITS_PER_METER_STEP);
|
||||
Config::SetCurrent(Config::GFX_VR_UNITS_PER_METER, v);
|
||||
}
|
||||
|
||||
if (IsHotkey(HK_VR_DECREASE_LEAN_BACK_ANGLE))
|
||||
{
|
||||
const float v = std::max(Config::GFX_VR_LEAN_BACK_ANGLE_MIN,
|
||||
Config::Get(Config::GFX_VR_LEAN_BACK_ANGLE) -
|
||||
Config::GFX_VR_LEAN_BACK_ANGLE_STEP);
|
||||
Config::SetCurrent(Config::GFX_VR_LEAN_BACK_ANGLE, v);
|
||||
}
|
||||
if (IsHotkey(HK_VR_INCREASE_LEAN_BACK_ANGLE))
|
||||
{
|
||||
const float v = std::min(Config::GFX_VR_LEAN_BACK_ANGLE_MAX,
|
||||
Config::Get(Config::GFX_VR_LEAN_BACK_ANGLE) +
|
||||
Config::GFX_VR_LEAN_BACK_ANGLE_STEP);
|
||||
Config::SetCurrent(Config::GFX_VR_LEAN_BACK_ANGLE, v);
|
||||
}
|
||||
|
||||
if (IsHotkey(HK_VR_TOGGLE_ENABLE_CAMERA_FORWARD))
|
||||
{
|
||||
Config::SetCurrent(Config::GFX_VR_ENABLE_CAMERA_FORWARD,
|
||||
!Config::Get(Config::GFX_VR_ENABLE_CAMERA_FORWARD));
|
||||
}
|
||||
if (IsHotkey(HK_VR_DECREASE_CAMERA_FORWARD))
|
||||
{
|
||||
const float v = std::max(Config::GFX_VR_CAMERA_FORWARD_MIN,
|
||||
Config::Get(Config::GFX_VR_CAMERA_FORWARD) -
|
||||
Config::GFX_VR_CAMERA_FORWARD_STEP);
|
||||
Config::SetCurrent(Config::GFX_VR_CAMERA_FORWARD, v);
|
||||
}
|
||||
if (IsHotkey(HK_VR_INCREASE_CAMERA_FORWARD))
|
||||
{
|
||||
const float v = std::min(Config::GFX_VR_CAMERA_FORWARD_MAX,
|
||||
Config::Get(Config::GFX_VR_CAMERA_FORWARD) +
|
||||
Config::GFX_VR_CAMERA_FORWARD_STEP);
|
||||
Config::SetCurrent(Config::GFX_VR_CAMERA_FORWARD, v);
|
||||
}
|
||||
|
||||
if (IsHotkey(HK_VR_TOGGLE_ENABLE_CAMERA_HEIGHT))
|
||||
{
|
||||
Config::SetCurrent(Config::GFX_VR_ENABLE_CAMERA_HEIGHT,
|
||||
!Config::Get(Config::GFX_VR_ENABLE_CAMERA_HEIGHT));
|
||||
}
|
||||
if (IsHotkey(HK_VR_DECREASE_CAMERA_HEIGHT))
|
||||
{
|
||||
const float v = std::max(Config::GFX_VR_CAMERA_HEIGHT_MIN,
|
||||
Config::Get(Config::GFX_VR_CAMERA_HEIGHT) -
|
||||
Config::GFX_VR_CAMERA_HEIGHT_STEP);
|
||||
Config::SetCurrent(Config::GFX_VR_CAMERA_HEIGHT, v);
|
||||
}
|
||||
if (IsHotkey(HK_VR_INCREASE_CAMERA_HEIGHT))
|
||||
{
|
||||
const float v = std::min(Config::GFX_VR_CAMERA_HEIGHT_MAX,
|
||||
Config::Get(Config::GFX_VR_CAMERA_HEIGHT) +
|
||||
Config::GFX_VR_CAMERA_HEIGHT_STEP);
|
||||
Config::SetCurrent(Config::GFX_VR_CAMERA_HEIGHT, v);
|
||||
}
|
||||
|
||||
if (IsHotkey(HK_VR_TOGGLE_VIRTUAL_SCREEN))
|
||||
{
|
||||
Config::SetCurrent(Config::GFX_VR_VIRTUAL_SCREEN,
|
||||
!Config::Get(Config::GFX_VR_VIRTUAL_SCREEN));
|
||||
}
|
||||
if (IsHotkey(HK_VR_DECREASE_SCREEN_DISTANCE))
|
||||
{
|
||||
const float v = std::max(Config::GFX_VR_SCREEN_DISTANCE_MIN,
|
||||
Config::Get(Config::GFX_VR_SCREEN_DISTANCE) -
|
||||
Config::GFX_VR_SCREEN_DISTANCE_STEP);
|
||||
Config::SetCurrent(Config::GFX_VR_SCREEN_DISTANCE, v);
|
||||
}
|
||||
if (IsHotkey(HK_VR_INCREASE_SCREEN_DISTANCE))
|
||||
{
|
||||
const float v = std::min(Config::GFX_VR_SCREEN_DISTANCE_MAX,
|
||||
Config::Get(Config::GFX_VR_SCREEN_DISTANCE) +
|
||||
Config::GFX_VR_SCREEN_DISTANCE_STEP);
|
||||
Config::SetCurrent(Config::GFX_VR_SCREEN_DISTANCE, v);
|
||||
}
|
||||
if (IsHotkey(HK_VR_DECREASE_SCREEN_SIZE))
|
||||
{
|
||||
const float v = std::max(Config::GFX_VR_SCREEN_SIZE_MIN,
|
||||
Config::Get(Config::GFX_VR_SCREEN_SIZE) -
|
||||
Config::GFX_VR_SCREEN_SIZE_STEP);
|
||||
Config::SetCurrent(Config::GFX_VR_SCREEN_SIZE, v);
|
||||
}
|
||||
if (IsHotkey(HK_VR_INCREASE_SCREEN_SIZE))
|
||||
{
|
||||
const float v = std::min(Config::GFX_VR_SCREEN_SIZE_MAX,
|
||||
Config::Get(Config::GFX_VR_SCREEN_SIZE) +
|
||||
Config::GFX_VR_SCREEN_SIZE_STEP);
|
||||
Config::SetCurrent(Config::GFX_VR_SCREEN_SIZE, v);
|
||||
}
|
||||
if (IsHotkey(HK_VR_DECREASE_SCREEN_CURVATURE))
|
||||
{
|
||||
const float v = std::max(Config::GFX_VR_HEAD_LOCKED_CURVATURE_MIN,
|
||||
Config::Get(Config::GFX_VR_HEAD_LOCKED_CURVATURE) -
|
||||
Config::GFX_VR_HEAD_LOCKED_CURVATURE_STEP);
|
||||
Config::SetCurrent(Config::GFX_VR_HEAD_LOCKED_CURVATURE, v);
|
||||
}
|
||||
if (IsHotkey(HK_VR_INCREASE_SCREEN_CURVATURE))
|
||||
{
|
||||
const float v = std::min(Config::GFX_VR_HEAD_LOCKED_CURVATURE_MAX,
|
||||
Config::Get(Config::GFX_VR_HEAD_LOCKED_CURVATURE) +
|
||||
Config::GFX_VR_HEAD_LOCKED_CURVATURE_STEP);
|
||||
Config::SetCurrent(Config::GFX_VR_HEAD_LOCKED_CURVATURE, v);
|
||||
}
|
||||
|
||||
if (IsHotkey(HK_VR_TOGGLE_DONT_CLEAR_SCREEN))
|
||||
{
|
||||
Config::SetCurrent(Config::GFX_VR_DONT_CLEAR_SCREEN,
|
||||
!Config::Get(Config::GFX_VR_DONT_CLEAR_SCREEN));
|
||||
}
|
||||
if (IsHotkey(HK_VR_TOGGLE_FORCE_VBI))
|
||||
{
|
||||
const int current_value =
|
||||
Config::NormalizeVRForcedVBIFrequency(Config::Get(Config::GFX_VR_FORCED_VBI_FREQUENCY));
|
||||
Config::SetCurrent(Config::GFX_VR_AUTO_VBI_FROM_HMD, false);
|
||||
Config::SetCurrent(Config::GFX_VR_FORCED_VBI_FREQUENCY,
|
||||
current_value == Config::GFX_VR_FORCED_VBI_FREQUENCY_OFF ?
|
||||
Config::GFX_VR_FORCED_VBI_FREQUENCY_AUTO :
|
||||
Config::GFX_VR_FORCED_VBI_FREQUENCY_OFF);
|
||||
}
|
||||
if (IsHotkey(HK_VR_TOGGLE_REMOVE_CINEMATIC_BARS))
|
||||
{
|
||||
Config::SetCurrent(Config::GFX_VR_REMOVE_BARS,
|
||||
!Config::Get(Config::GFX_VR_REMOVE_BARS));
|
||||
}
|
||||
|
||||
// ---------- Android navigation ----------
|
||||
|
||||
// HK_ANDROID_RETURN_TO_MAIN_MENU requires a sustained 3-second hold before firing.
|
||||
// This prevents accidental exits on shared inputs (e.g. a shoulder button also used for
|
||||
// in-game actions). Once the threshold is reached we fire exactly once; the tick counter
|
||||
// is reset to a saturated value so it doesn't re-fire until the button is released.
|
||||
if (IsHotkey(HK_ANDROID_RETURN_TO_MAIN_MENU, true))
|
||||
{
|
||||
if (m_return_menu_hold_ticks < kReturnMenuHoldTicks)
|
||||
++m_return_menu_hold_ticks;
|
||||
|
||||
if (m_return_menu_hold_ticks == kReturnMenuHoldTicks)
|
||||
{
|
||||
{
|
||||
HostThreadLock guard;
|
||||
Core::Stop(system);
|
||||
}
|
||||
if (m_on_stop_requested)
|
||||
m_on_stop_requested();
|
||||
m_return_menu_hold_ticks = kReturnMenuHoldTicks + 1;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_return_menu_hold_ticks = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
// Copyright 2026 Dolphin Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <functional>
|
||||
#include <thread>
|
||||
|
||||
#include "Common/Flag.h"
|
||||
|
||||
// Polls HotkeyManagerEmu on a dedicated low-priority background thread and dispatches
|
||||
// fired hotkeys to the corresponding Core/Config/State/OpenXR APIs. Mirrors PC's
|
||||
// Source/Core/DolphinQt/HotkeyScheduler but with no Qt dependency and a smaller, Android-
|
||||
// relevant action set (see HotkeyDispatcher.cpp for the dispatch table).
|
||||
//
|
||||
// Lifetime: Start() must be called once after the boot has settled (see MainAndroid::Run).
|
||||
// Stop() must be called before Core::Shutdown so the thread isn't reading a torn-down
|
||||
// g_controller_interface.
|
||||
class HotkeyDispatcher
|
||||
{
|
||||
public:
|
||||
// Called from the dispatcher thread when HK_STOP fires. The implementation is
|
||||
// expected to wake the main Run() loop (e.g. by setting s_update_main_frame_event)
|
||||
// so it observes the Core::Stop and exits cleanly. Kept as a callback so this header
|
||||
// doesn't reach into MainAndroid's internal symbols.
|
||||
using StopRequestCallback = std::function<void()>;
|
||||
|
||||
HotkeyDispatcher() = default;
|
||||
~HotkeyDispatcher();
|
||||
|
||||
HotkeyDispatcher(const HotkeyDispatcher&) = delete;
|
||||
HotkeyDispatcher& operator=(const HotkeyDispatcher&) = delete;
|
||||
|
||||
// No-op if already running.
|
||||
void Start(StopRequestCallback on_stop_requested);
|
||||
|
||||
// Signals the thread to exit and joins. Safe to call when not running.
|
||||
void Stop();
|
||||
|
||||
bool IsRunning() const { return m_thread.joinable(); }
|
||||
|
||||
private:
|
||||
void Run();
|
||||
|
||||
std::thread m_thread;
|
||||
Common::Flag m_stop_requested;
|
||||
StopRequestCallback m_on_stop_requested;
|
||||
|
||||
// Counts consecutive poll ticks that HK_ANDROID_RETURN_TO_MAIN_MENU has been held.
|
||||
// Fires once the threshold (~3 s) is reached, then resets to prevent re-firing.
|
||||
int m_return_menu_hold_ticks = 0;
|
||||
};
|
||||