Xenia Canary Settings
Xenia Canary Settings
[CPU]
break_condition_gpr = -1 # GPR compared to
break_condition_op = "eq" # comparison operator
break_condition_truncate = true # truncate value to 32-bits
break_condition_value = 0 # value compared against
break_on_debugbreak = true # int3 on JITed __debugbreak
requests.
break_on_instruction = 0 # int3 before the given guest
address is executed.
break_on_start = false # Break into the debugger on
startup.
break_on_unimplemented_instructions = true # Break to the host debugger
(or crash if no debugger attached) if an unimplemented PowerPC instruction is
encountered.
clock_no_scaling = false # Disable scaling code. Time
management and locking is bypassed. Guest system time is directly pulled from host.
clock_source_raw = false # Use the RDTSC instruction
as the time source. Host CPU must support invariant TSC.
cpu = "any" # CPU backend [any, x64].
debug_symbol_loader = false # Enable dbghelp debug
logging and validation.
debugprint_trap_log = false # Log debugprint traps to the
active debugger
disable_global_lock = false # Disables global lock usage
in guest code. Does not affect host code.
disassemble_functions = false # Disassemble functions
during generation.
emit_source_annotations = false # Add extra movs and nops to
make disassembly easier to read.
ignore_undefined_externs = true # Don't exit when an
undefined extern is called.
inline_mmio_access = true # Inline constant MMIO loads
and stores.
load_module_map = "" # Loads a .map for symbol
names and to diff with the generated symbol database.
pvr = 7407360 # Processor version and
revision number.
# Bits 0 to 15 are the
version number.
# Bits 16 to 31 are the
revision number.
# Note: Some XEXs (such as
mfgbootlauncher.xex) may check for a value that's less than 0x710700.
[Config]
defaults_date = 2020123113 # Do not modify - internal
version of the default values in the config, for seamless updates if default value
of any option is changed.
[Content]
license_mask = 0 # Set license mask for
activated content.
# 0 = No licenses enabled.
# 1 = First license enabled.
Generally the full version license in
# Xbox Live Arcade
titles.
# -1 or 0xFFFFFFFF = All
possible licenses enabled. Generally a
# bad
idea, could lead to undefined behavior.
[D3D12]
d3d12_adapter = -1 # Index of the DXGI adapter
to use. -1 for any physical adapter, -2 for WARP software rendering.
d3d12_allow_variable_refresh_rate_and_tearing = true # In fullscreen, allow using
variable refresh rate on displays supporting it. On displays not supporting VRR,
screen tearing may occur in certain cases.
d3d12_bindless = true # Use bindless resources
where available - may improve performance, but may make debugging more complicated.
d3d12_break_on_error = false # Break on Direct3D 12
validation errors.
d3d12_break_on_warning = false # Break on Direct3D 12
validation warnings.
d3d12_debug = false # Enable Direct3D 12 and DXGI
debug layer.
d3d12_dxbc_disasm = false # Disassemble DXBC shaders
after generation.
d3d12_dxbc_disasm_dxilconv = false # Disassemble DXBC shaders
after conversion to DXIL, if DXIL shaders are supported by the OS, and DirectX
Shader Compiler DLLs available at
https://github.com/microsoft/DirectXShaderCompiler/releases are present.
d3d12_pipeline_creation_threads = -1 # Number of threads used for
graphics pipeline creation. -1 to calculate automatically (75% of logical CPU
cores), a positive number to specify the number of threads explicitly (up to the
number of logical CPU cores), 0 to disable multithreaded pipeline creation.
d3d12_queue_priority = 1 # Graphics (direct) command
queue scheduling priority, 0 - normal, 1 - high, 2 - global realtime (requires
administrator privileges, may impact system responsibility)
d3d12_readback_memexport = false # Read data written by memory
export in shaders on the CPU. This may be needed in some games (but many only
access exported data on the GPU, and this flag isn't needed to handle such
behavior), but causes mid-frame synchronization, so it has a huge performance
impact.
d3d12_readback_resolve = false # Read render-to-texture
results on the CPU. This may be needed in some games, for instance, for screenshots
in saved games, but causes mid-frame synchronization, so it has a huge performance
impact.
d3d12_submit_on_primary_buffer_end = true # Submit the command list
when a PM4 primary buffer ends if it's possible to submit immediately to try to
reduce frame latency.
d3d12_tessellation_wireframe = false # Display tessellated
surfaces as wireframe for debugging.
d3d12_tiled_shared_memory = true # Enable tiled resources for
shared memory emulation. Disabling them increases video memory usage - a 512 MB
buffer is created - but allows graphics debuggers that don't support tiled
resources to work.
[Display]
fullscreen = false # Whether to launch the
emulator in fullscreen.
host_present_from_non_ui_thread = true # Allow the GPU emulation
thread to present the guest output to the host surface directly instead of
requesting the UI thread to do so through the host window system.
postprocess_antialiasing = "" # Post-processing anti-
aliasing effect to apply to the image output of the game.
# Using post-process anti-
aliasing is heavily recommended when AMD FidelityFX Contrast Adaptive Sharpening or
Super Resolution 1.0 is active.
# Use: [none, fxaa,
fxaa_extreme]
# none (or any value not
listed here):
# Don't alter the original
image.
# fxaa:
# NVIDIA Fast Approximate
Anti-Aliasing 3.11, normal quality preset (12).
# fxaa_extreme:
# NVIDIA Fast Approximate
Anti-Aliasing 3.11, extreme quality preset (39).
[GPU]
depth_float24_conversion = "" # Method for converting 32-
bit Z values to 20e4 floating point when using host depth buffers without native
20e4 support (when not using rasterizer-ordered views / fragment shader interlocks
to perform depth testing manually).
# Use: [any, on_copy,
truncate, round]
# on_copy:
# Do depth testing at host
precision, converting when copying between color and depth buffers (or between
depth buffers of different formats) to support reinterpretation, but keeps the last
host depth buffer used for each EDRAM range and reloads the host precision value if
it's still up to date after the EDRAM range was used with a different pixel format.
# + Highest performance,
allows early depth test and writing.
# + Host MSAA is possible
with pixel-rate shading where supported.
# - EDRAM > RAM > EDRAM
depth buffer round trip done in certain games destroys precision irreparably,
causing artifacts if another rendering pass is done after the EDRAM reupload.
# truncate:
# Convert to 20e4 directly
in pixel shaders, always rounding down.
# + Average performance,
conservative early depth test is possible.
# + No precision loss when
anything changes in the storage of the depth buffer, EDRAM > RAM > EDRAM copying
preserves precision.
# - Rounding mode is
incorrect, sometimes giving results smaller than they should be - may cause
inaccuracy especially in edge cases when the game wants to write an exact value.
# - Host MSAA is only
possible at SSAA speed, with per-sample shading.
# round:
# Convert to 20e4 directly
in pixel shaders, correctly rounding to the nearest even.
# + Highest accuracy.
# - Significantly limited
performance, early depth test is not possible.
# - Host MSAA is only
possible at SSAA speed, with per-sample shading.
# Any other value:
# Choose what is considered
the most optimal (currently "on_copy").
[General]
apply_patches = true # Enables patching
functionality
debug = false # Allow debugging and retain
debug information.
discord = false # Enable Discord rich
presence
enable_console = false # Open a console window with
the main window
launch_module = "" # Executable to launch from
the .iso or the package instead of default.xex or the module specified by the game.
Leave blank to launch the default module.
time_scalar = 1.0 # Scalar used to speed or
slow time (1x, 2x, 1/2x, etc).
[HID]
guide_button = false # Forward guide button
presses to guest.
hid = "any" # Input system. Use: [any,
nop, sdl, winkey, xinput]
vibration = true # Toggle controller
vibration.
[HID.WinKey]
keybind_a = "0xBA" # List of keys to bind to A,
separated by spaces
keybind_b = "0xDE" # List of keys to bind to B,
separated by spaces
keybind_back = "Z" # List of keys to bind to
BACK, separated by spaces
keybind_dpad_down = "^S" # List of keys to bind to
DPAD_DOWN, separated by spaces
keybind_dpad_left = "^A" # List of keys to bind to
DPAD_LEFT, separated by spaces
keybind_dpad_right = "^D" # List of keys to bind to
DPAD_RIGHT, separated by spaces
keybind_dpad_up = "^W" # List of keys to bind to
DPAD_UP, separated by spaces
keybind_left_shoulder = "1" # List of keys to bind to
LEFT_SHOULDER, separated by spaces
keybind_left_thumb = "F" # List of keys to bind to
LEFT_THUMB_PRESSED, separated by spaces
keybind_left_thumb_down = "_S" # List of keys to bind to
LEFT_THUMB_DOWN, separated by spaces
keybind_left_thumb_left = "_A" # List of keys to bind to
LEFT_THUMB_LEFT, separated by spaces
keybind_left_thumb_right = "_D" # List of keys to bind to
LEFT_THUMB_RIGHT, separated by spaces
keybind_left_thumb_up = "_W" # List of keys to bind to
LEFT_THUMB_UP, separated by spaces
keybind_left_trigger = "Q I" # List of keys to bind to
LEFT_TRIGGER, separated by spaces
keybind_right_shoulder = "3" # List of keys to bind to
RIGHT_SHOULDER, separated by spaces
keybind_right_thumb = "K" # List of keys to bind to
RIGHT_THUMB_PRESSED, separated by spaces
keybind_right_thumb_down = "0x28" # List of keys to bind to
RIGHT_THUMB_DOWN, separated by spaces
keybind_right_thumb_left = "0x25" # List of keys to bind to
RIGHT_THUMB_LEFT, separated by spaces
keybind_right_thumb_right = "0x27" # List of keys to bind to
RIGHT_THUMB_RIGHT, separated by spaces
keybind_right_thumb_up = "0x26" # List of keys to bind to
RIGHT_THUMB_UP, separated by spaces
keybind_right_trigger = "E O" # List of keys to bind to
RIGHT_TRIGGER, separated by spaces
keybind_start = "X" # List of keys to bind to
START, separated by spaces
keybind_x = "L" # List of keys to bind to X,
separated by spaces
keybind_y = "P" # List of keys to bind to Y,
separated by spaces
[Kernel]
cl = "" # Specify additional command-
line provided to guest.
ignore_thread_affinities = true # Ignores game-specified
thread affinities.
ignore_thread_priorities = true # Ignores game-specified
thread priorities.
kernel_cert_monitor = false # Enable cert monitor.
kernel_debug_monitor = false # Enable debug monitor.
kernel_display_gamma_power = 2.22222233 # Display gamma to use with
kernel_display_gamma_type 3.
kernel_display_gamma_type = 2 # Display gamma type: 0 -
linear, 1 - sRGB (CRT), 2 - BT.709 (HDTV), 3 - power specified via
kernel_display_gamma_power.
kernel_pix = false # Enable PIX.
log_high_frequency_kernel_calls = false # Log kernel calls with the
kHighFrequency tag.
xex_apply_patches = true # Apply XEX patches.
[Logging]
flush_log = true # Flush log file after each
log line batch.
log_file = "" # Logs are written to the
given file
log_level = 0 # Maximum level to be logged.
(0=error, 1=warning, 2=info, 3=debug)
log_string_format_kernel_calls = false # Log kernel calls with the
kHighFrequency tag.
log_to_debugprint = false # Dump the log to DebugPrint.
log_to_stdout = true # Write log output to stdout
[Memory]
protect_on_release = false # Protect released memory to
prevent accesses.
protect_zero = true # Protect the zero page from
reads and writes.
scribble_heap = false # Scribble 0xCD into all
allocated heap memory.
writable_executable_memory = true # Allow mapping memory with
both write and execute access, for simulating behavior on platforms where that's
not supported
[SDL]
mappings_file = "gamecontrollerdb.txt" # Filename of a database with
custom game controller mappings.
[Storage]
cache_root = "" # Root path for files used to
speed up certain parts of the emulator or the game. These files may be persistent,
but they can be deleted without major side effects such as progress loss. If empty,
the cache folder under the storage root, or, if available, the cache directory
preferred for the OS, will be used.
content_root = "" # Root path for guest content
storage (saves, etc.), or empty to use the content folder under the storage root.
mount_cache = false # Enable cache mount
mount_scratch = false # Enable scratch mount
storage_root = "" # Root path for persistent
internal data storage (config, etc.), or empty to use the path preferred for the
OS, such as the documents folder, or the emulator executable directory if
portable.txt is present in it.
[UI]
headless = false # Don't display any UI, using
defaults for prompts as needed.
imgui_debug = false # Show ImGui debugging tools.
profiler_dpi_scaling = false # Apply window DPI scaling to
the profiler.
show_profiler = false # Show profiling UI by
default.
[Video]
avpack = 8 # Video modes
[Vulkan]
vulkan_allow_present_mode_fifo_relaxed = true # When available, allow the
relaxed first-in-first-out presentation mode (3rd priority), which causes waiting
for host display vertical sync, but may present with tearing if frames don't meet
the host display refresh rate.
vulkan_allow_present_mode_immediate = true # When available, allow the
immediate presentation mode (1st priority), offering the lowest latency with the
possibility of tearing in certain cases, and, depending on the configuration,
variable refresh rate.
vulkan_allow_present_mode_mailbox = true # When available, allow the
mailbox presentation mode (2nd priority), offering low latency without the
possibility of tearing.
vulkan_debug_utils_messenger = false # Enable writing Vulkan debug
messages via VK_EXT_debug_utils to the Xenia log.
vulkan_debug_utils_messenger_severity = 2 # Maximum severity of
messages to log via the Vulkan debug messenger: 0 - error, 1 - warning, 2 - info, 3
- verbose.
vulkan_debug_utils_names = false # Enable naming Vulkan
objects via VK_EXT_debug_utils.
vulkan_device = -1 # Index of the physical
device to use, or -1 for any compatible device.
vulkan_dump_disasm = false # Dump shader disassembly.
NVIDIA only supported.
vulkan_native_msaa = false # Use native MSAA
vulkan_renderdoc_capture_all = false # Capture everything with
RenderDoc.
vulkan_validation = true # Enable Vulkan validation
(VK_LAYER_KHRONOS_validation). Messages will be written to the OS debug log without
vulkan_debug_messenger or to the Xenia log with it.
[Win32]
win32_high_resolution_timer = true # Requests high-resolution
timer from the NT kernel
win32_mmcss = true # Opt in the Multimedia Class
Scheduler Service (MMCSS) scheduling for prioritized access to CPU resources
[XConfig]
user_country = 103 # User country ID.
# 1=AE 2=AL 3=AM
4=AR 5=AT 6=AU 7=AZ 8=BE 9=BG
# 10=BH 11=BN 12=BO
13=BR 14=BY 15=BZ 16=CA 18=CH 19=CL
# 20=CN 21=CO 22=CR
23=CZ 24=DE 25=DK 26=DO 27=DZ 28=EC
# 29=EE 30=EG 31=ES
32=FI 33=FO 34=FR 35=GB 36=GE 37=GR
# 38=GT 39=HK 40=HN
41=HR 42=HU 43=ID 44=IE 45=IL 46=IN
# 47=IQ 48=IR 49=IS
50=IT 51=JM 52=JO 53=JP 54=KE 55=KG
# 56=KR 57=KW 58=KZ
59=LB 60=LI 61=LT 62=LU 63=LV 64=LY
# 65=MA 66=MC 67=MK
68=MN 69=MO 70=MV 71=MX 72=MY 73=NI
# 74=NL 75=NO 76=NZ
77=OM 78=PA 79=PE 80=PH 81=PK 82=PL
# 83=PR 84=PT 85=PY
86=QA 87=RO 88=RU 89=SA 90=SE 91=SG
# 92=SI 93=SK 95=SV
96=SY 97=TH 98=TN 99=TR 100=TT 101=TW
# 102=UA 103=US 104=UY
105=UZ 106=VE 107=VN 108=YE 109=ZA
[x64]
x64_extension_mask = -1 # Allow the detection and
utilization of specific instruction set features.
# 0 = x86_64 + AVX1
# 1 = AVX2
# 2 = FMA
# 4 = LZCNT
# 8 = BMI1
# 16 = BMI2
# 32 = F16C
# 64 = Movbe
# 128 = GFNI
# 256 = AVX512F
# 512 = AVX512VL
# 1024 = AVX512BW
# 2048 = AVX512DQ
# -1 = Detect and utilize
all possible processor features