Xenia-Canary-Netplay Config Toml
Xenia-Canary-Netplay Config Toml
[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_instruction_infocache = false # Disables caching records of
called instructions/mmio accesses.
disable_prefetch_and_cachecontrol = true # Disables translating ppc
prefetch/cache flush instructions to host prefetch/cacheflush instructions. This
may improve performance as these instructions were written with the Xbox 360's
cache in mind, and modern processors do their own automatic prefetching.
disassemble_functions = false # Disassemble functions
during generation.
dump_translated_hir_functions = false # dumps translated hir
elide_e0_check = false # Eliminate e0 check on some
memory accesses, like to r13(tls) or r1(sp)
emit_mmio_aware_stores_for_recorded_exception_addresses = true # Uses info
gathered via record_mmio_access_exceptions to emit special stores that are faster
than trapping the exception
emit_source_annotations = false # Add extra movs and nops to
make disassembly easier to read.
enable_early_precompilation = false # Enable pre-compiling guest
functions that we know we've called/that we've recognized as being functions via
simple heuristics, good for error finding/stress testing with the JIT
full_optimization_even_with_debug = false # For developer use to
analyze the quality of the generated code, not intended for actual debugging of the
code
ignore_trap_instructions = true # Generate no code for
powerpc trap instructions, can result in better performance in games that
aggressively check with trap.
ignore_undefined_externs = true # Don't exit when an
undefined extern is called.
inline_loadclock = false # Directly read cached guest
clock without calling the LoadClock method (it gets repeatedly updated by calls
from other threads)
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.
no_reserved_ops = false # For testing whether a game
may have races with a broken reserved load/store impl
no_round_to_single = false # Not for users, breaks
games. Skip rounding double values to single precision and back
permit_float_constant_evaluation = false # Allow float constant
evaluation, may produce incorrect results and break games math
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 = 1 # 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 = false # 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_clear_memory_page_state = true # Refresh state of memory
pages to enable gpu written data. (Use for 'Team Ninja' Games to fix missing
character models)
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_nvapi_use_driver_heap_priorities = false # nvidia stuff
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 = true # 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.
internal_display_resolution = 4 # Allow game that support
different resolutions to be rendered in specific resolution. 0=640x480
# 1=640x576
# 2=720x480
# 3=720x576
# 4=800x600
# 5=848x480
# 6=1024x768
# 7=1152x864
# 8=1280x720 (Default)
# 9=1280x768
# 10=1280x960
# 11=1280x1024
# 12=1360x768
# 13=1440x900
# 14=1680x1050
# 15=1920x540
# 16=1920x1080
[GPU]
clear_memory_page_state = false # Refresh state of memory
pages to enable gpu written data. (Use for 'Team Ninja' Games to fix missing
character models)
depth_float24_convert_in_pixel_shader = false # Whether to convert the
depth values to 24-bit floating-point (20e4) from the host precision (32-bit
floating point) directly in the pixel shaders of guest draws when using a host
depth buffer.
# This prevents visual
artifacts (interleaved stripes of parts of surfaces rendered and parts not
rendered, having either the same width in case of the "greater or equal" depth test
function, or the former being much thinner than the latter with the "equal"
function) if the full host precision depth data is lost.
# This issue may happen if
the game reloads the depth data previously evicted from the EDRAM to the RAM back
to the EDRAM, but the EDRAM region that previously contained that depth buffer was
overwritten by another depth buffer, or the game loads it to a different location
in the EDRAM than it was previously placed at, thus Xenia is unable to restore the
depth data with the original precision, and instead falls back to converting the
lower-precision values, so in subsequent rendering passes for the same geometry,
the actual depth values of the surfaces don't match those stored in the depth
buffer anymore.
# This is a costly option
because it makes the GPU unable to use depth buffer compression, and also with
MSAA, forces the pixel shader to run for every subpixel sample rather than for the
entire pixel, making pixel shading 2 or 4 times heavier depending on the MSAA
sample count.
# The rounding direction is
controlled by the depth_float24_round configuration variable.
# Note that with
depth_float24_round = true, this becomes even more costly because pixel shaders
must be executed regardless of whether the surface is behind the previously drawn
surfaces. With depth_float24_round = false, conservative depth output is used,
however, so depth rejection before the pixel shader may still work.
# If sample-rate shading is
not supported by the host GPU, the conversion in the pixel shader is done only when
MSAA is not used.
# When the depth buffer is
emulated in software (via the fragment shader interlock / rasterizer-ordered view),
this is ignored because 24-bit depth is always used directly.
execute_unclipped_draw_vs_on_cpu_for_psi_render_backend = true # If
execute_unclipped_draw_vs_on_cpu is enabled, execute the vertex shader for
unclipped draws on the CPU even when using the pixel shader interlock (rasterizer-
ordered view) implementation of the render backend on the host, for which no
expensive copying between host render targets is needed when the ownership of a
EDRAM range is changed.
# If this is enabled,
excessive barriers may be eliminated when switching between different render
targets in separate EDRAM locations.
[General]
allow_game_relative_writes = false # Not useful to non-
developers. Allows code to write to paths relative to game://. Used for generating
test data to compare with original hardware.
allow_plugins = false # Allows loading of
plugins/trainers from plugins\title_id\plugin.xex.Plugin are homebrew xex modules
which can be used for making mods This feature is experimental.
apply_patches = true # Enables custom patching
functionality
controller_hotkeys = false # Hotkeys for Xbox and PS
controllers.
debug = false # Allow debugging and retain
debug information.
gamepaths = "E:\\Xbox 360;" # Paths the frontend will
search for games.
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.
notification_sound_path = "" # Path (including filename)
to selected notification sound. Sound MUST be in wav format!
recent_titles_entry_amount = 10 # Allows user to define how
many titles is saved in list of recently played titles.
skip_frontend = false # Skip the UWP frontend and
launch with a file-picker.
time_scalar = 1.0 # Scalar used to speed or
slow time (1x, 2x, 1/2x, etc).
[HACKS]
ac6_ground_fix = false # This fixes(hide) issues
with black ground in AC6. Use only in AC6. Might cause issues in other titles.
[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.
[Kernel]
apply_title_update = true # Apply title updates.
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.
[Live]
api_address = "127.0.0.1:36000" # Xenia Master Server Address
log_mask_ips = true # Do not include P2P IPs
inside the log
logging = false # Log Network Activity &
Stats
offline_mode = false # Offline Mode
stub_xlivebase = false # Return success for all
unimplemented XLiveBase calls.
upnp = false # Automatically port forward
using UPnP
upnp_root = "" # UPnP Root Device
[Logging]
flush_log = true # Flush log file after each
log line batch.
log_file = "" # Logs are written to the
given file
log_level = -1 # Maximum level to be logged.
(0=error, 1=warning, 2=info, 3=debug)
log_mask = 0 # Disables specific
categorizes for more granular debug logging. Kernel = 1, Apu = 2, Cpu = 4.
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]
ignore_offset_for_ranged_allocations = false # Allows to ignore 4k offset
for physical allocations with provided range. Certain titles check if result
matches provided lower range.
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
[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 = true # 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]
custom_font_path = "" # Allows user to load custom
font and use it instead of default one.
font_size = 12 # Allows user to set custom
font size.
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_achievement_notification = false # Show achievement
notification on screen.
show_profiler = false # Show profiling UI by
default.
[User]
user_0_name = "XeniaUser9" # Gamertag for user 0
user_0_xuid = "0009EA0073180C26" # XUID for user 0
user_1_name = "XeniaUser28711" # Gamertag for user 1
user_1_xuid = "00094247E1B87C39" # XUID for user 1
user_2_name = "XeniaUser9" # Gamertag for user 2
user_2_xuid = "0009A0E1B2BD6BCF" # XUID for user 2
user_3_name = "XeniaUser968" # Gamertag for user 3
user_3_xuid = "000968A788193DD0" # XUID for user 3
[Video]
avpack = 8 # Video modes
[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]
align_all_basic_blocks = 0 # Aligns the start of all
basic blocks to N bytes. Only specify a power of 2, 16 is the recommended value.
Results in larger icache usage, but potentially faster loops
delay_via_maybeyield = false # implement the db16cyc
instruction via MaybeYield, may improve scheduling of guest threads
enable_host_guest_stack_synchronization = false # Records entries for
guest/host stack mappings at function starts and checks for reentry at return
sites. Has slight performance impact, but fixes crashes in games that use
setjmp/longjmp.
enable_incorrect_roundingmode_behavior = false # Disables the FPU/VMX MXCSR
sharing workaround, potentially causing incorrect rounding behavior and denormal
handling in VMX code. The workaround may cause reduced CPU performance but is a
more accurate emulation
enable_rmw_context_merging = false # Permit merging read-modify-
write HIR instr sequences together into x86 instructions that use a memory operand.
instrument_call_times = false # Compute time taken for
functions, for profiling guest code
max_stackpoints = 65536 # Max number of host->guest
stack mappings we can record.
record_mmio_access_exceptions = true # For guest addresses records
whether we caught any mmio accesses for them. This info can then be used on a
subsequent run to instruct the recompiler to emit checks
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
# 4096 = AVX512VBMI
# -1 = Detect and utilize
all possible processor features