mirror of
https://github.com/valentderah/totk-pc-recomp.git
synced 2026-11-11 01:41:02 +00:00
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
439 lines
29 KiB
Plaintext
439 lines
29 KiB
Plaintext
# totk.ini: settings for totk.exe. Copy this file to totk.ini next to totk.exe and remove the '#' of a line to change it.
|
|
# Each line shows the default; on a Steam Deck the device profile ([display]) changes a few of them. A TOTK_*
|
|
# environment variable of the same name (TOTK_FPS_LIMIT for fps_limit) overrides the file. Keys are case-insensitive;
|
|
# '#' and ';' start a comment; [sections] only group lines.
|
|
|
|
[frame rate]
|
|
# Frame rate limit: 30, 40, 45, 60, 90, 120, 144, any whole rate from 30 to 240, or display (the refresh rate of the
|
|
# window's monitor, at most 240). A higher rate gives 240: above it the game's physics runs out of memory. Above 60
|
|
# is experimental and needs realtime = 1. Changes while the game runs take effect at once.
|
|
# With mailbox or fifo presentation (vk_present, the default) a frame reaches the screen at a vertical blank, so a limit
|
|
# that does not divide the monitor's refresh rate keeps each frame on screen for a different number of refreshes. On a
|
|
# 320 Hz monitor 80, 64, 40 and 32 divide it and 90 does not: 90 fps alternates 3 and 4 refreshes per frame, which reads
|
|
# as judder while the frame counter still shows 90. Likewise on 240 Hz 60, 48 and 40 divide it and on 144 Hz 72, 48 and
|
|
# 36 do, while 60 does not. vk_present = immediate shows a frame as soon as it is presented, without this quantisation,
|
|
# at the cost of tearing. A monitor running with variable refresh (FreeSync, G-Sync) follows the frames instead, so
|
|
# there any limit inside its range is even.
|
|
# fps_limit = 60
|
|
# Older key, read only while fps_limit is unset: fps60 = 0 means a limit of 30.
|
|
# fps60 = 1
|
|
# Frame queue: the game starts a frame while the previous one waits for its display time, so a frame that runs long
|
|
# still makes its turn. Far fewer dropped frames at the limit for up to one frame more input delay. Takes effect at once.
|
|
# frame_queue = 0
|
|
# Real-time frame step: game speed follows the clock instead of the frame count.
|
|
# realtime = 1
|
|
# Cloth simulation on the real-time clock. Needs realtime = 1.
|
|
# cloth_realtime = 1
|
|
# Fix for physics that bounce at high frame rates.
|
|
# highfps_fix = 1
|
|
|
|
[performance]
|
|
# The keys of this section and of [diagnostics] are for testing and troubleshooting, and take effect at the next start.
|
|
# The Advanced tab of the settings menu (F1) shows all of them except zstd_native and zstd_check.
|
|
|
|
# Scheduling.
|
|
# A thread waiting for a virtual core interrupts the owner when it runs game code: 1 = on, 2 = priority inheritance
|
|
# without the interrupt, 0 = off (the old scheduling).
|
|
# async_preempt = 1
|
|
# Replay NVN submissions on their own thread, at most one frame behind the game, 0 or 1. Default: off. Helps where the
|
|
# game waits for the GPU; adds up to a frame of latency.
|
|
# replay_async = 0
|
|
# Record each large submission in chunks on this many threads (0 to 16; 0 = one thread, the default). The chunks go to
|
|
# the GPU in order. In the town at 4K on an RTX 5070, 4 cut the replay from 8.2 to 4.5 ms a frame (71 to 79 fps); more
|
|
# threads add little. Needs 8 or more logical processors to help. Contact shadows and DLSS (dlaa = 1) run in chunks too.
|
|
# Read at start.
|
|
# replay_workers = 0
|
|
# EXPERIMENTAL, THE GAME CRASHES WITH 1. 1 lifts the virtual core gate: guest threads run without the console's limit
|
|
# of one thread per core, and the game keeps per-core data without locks. With 1, 1.2.1 and 1.4.3 crash or hang,
|
|
# usually at start (#212). Keep 0 to play.
|
|
# free_cores = 0
|
|
# Windows timer resolution of 1 ms for steadier frame pacing (0 = the Windows default).
|
|
# timer_1ms = 1
|
|
|
|
# One frame ahead of the GPU.
|
|
# Let the game build the next frame while the GPU still draws the previous one, 0 or 1. Default: off. Each frame the
|
|
# game waits once for the GPU to finish the frame it presented last; with 1 that wait covers the frame before it
|
|
# instead. On Great Sky Island (Linux, RX 9070 XT) with shadow_defer = 1 this took about 73 to 100 fps. Costs one more
|
|
# frame of input delay, and frame times vary more from frame to frame than with 0. GPU results the game reads back after that wait, for example occlusion queries, can be a frame old.
|
|
# Works on 1.2.1 and 1.4.3; 1.1.0 ignores it. Needs shadow storage, which is on by default on Linux and Wine and needs
|
|
# the environment variable TOTK_SHADOW=1 on native Windows; without it the setting is ignored and the log says so.
|
|
# sync_ahead = 0
|
|
# With sync_ahead = 1: when the game changes memory the GPU still reads, queue the copy into the GPU's shadow of that
|
|
# memory for the GPU to run in order, 0 or 1. Default: on. With 0 the replay thread waits for the GPU to finish
|
|
# reading instead, which costs part of the gain.
|
|
# shadow_defer = 1
|
|
|
|
# Shaders and pipelines.
|
|
# Draws whose pipeline is still building: default waits on a reserved worker; draw is the previous scheduling.
|
|
# pipe_wait = default
|
|
# Which draws are dropped instead of waiting for their pipeline: strict (only draws into per-frame passes), any (also
|
|
# draws into passes whose target the previous frame rendered) or fullscreen (those and full-screen draws).
|
|
# pipe_skip = fullscreen
|
|
# Build shader stage libraries in the background ahead of time, and the threads for it (1 to 16; default: a quarter of
|
|
# the CPU threads).
|
|
# lib_prebuild = 1
|
|
# lib_prebuild_threads = 4
|
|
# Build known pipelines ahead of time.
|
|
# pipe_prebuild = 1
|
|
# Threads that translate known shaders at start (1 to 64; default: half the CPU threads, at most 16).
|
|
# prewarm_xlate = 8
|
|
# Vulkan graphics pipeline library, 0 or 1. Default: on.
|
|
# gpl = 1
|
|
|
|
# Textures and memory.
|
|
# ASTC texture decoding: native (the GPU's own ASTC support), gpu (a compute shader), cpu, or auto (native when the GPU
|
|
# has it, gpu otherwise).
|
|
# astc = auto
|
|
# With astc = gpu: re-encode the decoded ASTC textures to BC3, a quarter of the video memory, textures slightly blockier,
|
|
# 0 or 1. Default: on when the GPU has less than 5 GB of video memory, off otherwise.
|
|
# astc_bc = 1
|
|
# Game memory shared with the GPU: auto (mirror on a discrete GPU, import on an integrated one), import (host memory
|
|
# imported into Vulkan), mirror (pools used as buffers get a copy in video memory) or verify (mirror plus a check of
|
|
# every copy; slow). On a discrete GPU import can be far slower than mirror, not slightly slower: the GPU reads the
|
|
# game's pools over PCIe. A 5070 Ti Laptop went from 6 ms to 135-230 ms of GPU time per frame with import (5 fps on the
|
|
# title screen, bound: gpu, every line of the perf window waiting on a fence). The log names the mode in use: "mem:
|
|
# mode import" or "mem: mode mirror".
|
|
# memory = auto
|
|
# A new texture created over a live texture's memory starts with that content instead of empty.
|
|
# tex_alias = 1
|
|
# Host zstd decoder in place of the game's (0 = the game's), and a check that decodes every call both ways and logs
|
|
# the differences (1 = on; slow).
|
|
# zstd_native = 1
|
|
# zstd_check = 0
|
|
|
|
# Render fixes.
|
|
# Wait for the game to finish rewriting level-of-detail data before the GPU reads it: stops objects flashing in the
|
|
# wrong place and a flat far field for a frame.
|
|
# lod_guard = 1
|
|
# Fill the driver-reserved constant bank c0 (storage sizes, dispatch size, point size, base instance) instead of zeros.
|
|
# fix_c0 = 1
|
|
# New GPU memory pools start zero-filled, as Switch memory does.
|
|
# fix_zero = 1
|
|
# Optimisations, 0 turns each off: skip bindings that did not change, remember shader lookups, reuse the previous
|
|
# draw's pipeline when its state repeats, remember texture descriptors between draws, update descriptors in bulk,
|
|
# skip push constants that did not change, bind only the vertex buffers a draw reads.
|
|
# bind_skip = 1
|
|
# shader_memo = 1
|
|
# pipe_memo = 1
|
|
# tex_memo = 1
|
|
# desc_template = 1
|
|
# push_skip = 1
|
|
# vb_used = 1
|
|
# Submit GPU work in parts every N draws between passes so the GPU starts earlier (0 to 1000; 0 = off), each part at
|
|
# least split_us microseconds long (0 to 20000).
|
|
# split_draws = 64
|
|
# split_us = 1000
|
|
|
|
# Vulkan.
|
|
# Vulkan validation layer: checks every call and slows the game down a lot. Needs the layer installed (Vulkan SDK).
|
|
# vk_validation = 0
|
|
# A thread of its own makes the Vulkan calls of each frame, 0 or 1. Default: on. Set 0 if an AMD GPU shows a black
|
|
# screen or stops with VK_ERROR_DEVICE_LOST.
|
|
# vk_recorder = 1
|
|
# Dynamic vertex input, 0 or 1. Default: on, except on Intel's Windows driver for integrated GPUs (UHD, Iris Xe),
|
|
# which draws black patches with it.
|
|
# vk_dyn_vertex = 1
|
|
# Dynamic alpha to coverage, 0 or 1. Default: on, except on AMD's driver for RDNA 2 and older (RX 400 to RX 6000),
|
|
# which applies alpha to coverage while the dynamic state says off and draws the characters black, and on Intel's
|
|
# Windows driver for integrated GPUs (UHD, Iris Xe), which draws coloured noise on foliage with it.
|
|
# vk_dyn_a2c = 1
|
|
# Pin the shader subgroup size to 32 when the GPU allows it.
|
|
# vk_subgroup_pin = 1
|
|
|
|
[display]
|
|
# Device profile: auto (the Steam Deck when this is one), desktop or deck. On a Steam Deck the keys this file does not
|
|
# set default to fullscreen = 1, window_size = 1280x800, output_res = 1280x800, render_scale = game, vk_present = fifo
|
|
# and fps_limit = 40 (starting points, not measured yet). Read at start.
|
|
# device_profile = auto
|
|
# Presentation mode: mailbox (default when the driver offers it, vsync otherwise), fifo (vsync) or immediate.
|
|
# vk_present = mailbox
|
|
# Window client area in screen pixels (640x360 to 7680x4320), and borderless fullscreen. Windows display scaling does
|
|
# not apply: at 150% scale, 1920x1080 covers the area 1280x720 covers at 100%. F11 switches fullscreen and saves it
|
|
# here. Changes while the game runs take effect at once.
|
|
# window_size = 1920x1080
|
|
# fullscreen = 0
|
|
# 1, the default: the game keeps running while you are in another window; the keyboard stays quiet until the window is
|
|
# in front again. 0: it pauses when its window loses focus, as it does on the Switch when Home is pressed; a load
|
|
# interrupted that way can stop for good. Read at each focus change.
|
|
# assume_focus = 1
|
|
# Performance overlay in the top right corner: off, fps, or full (frame rate, mean and longest frame time). F10
|
|
# cycles the modes in game, as do both stick clicks (L3 + R3) on a controller.
|
|
# perf_overlay = off
|
|
# Which GPU to use: its index in the log, or part of its name. Default: the first discrete GPU with Vulkan 1.3.
|
|
# gpu_index = 0
|
|
# gpu_name = NVIDIA
|
|
# Game resolution: the size the game draws its picture and interface in (1280x720 to 7680x4320). Above 1920x1080 the
|
|
# game's texture heap and memory pool grow with it. Another shape than 16:9, such as 3440x1440 on a 21:9 monitor or
|
|
# the Steam Deck's 1280x800 (16:10), gives the camera's view that shape and lays the HUD out for it. The installer
|
|
# prepares the UI layout for fifteen sizes: 2560x1080, 3440x1440, 3840x1600, 5120x2160 (21:9), 3840x1080, 5120x1440
|
|
# (32:9), 1280x800, 1680x1050, 1920x1200, 2560x1600 (16:10), 1920x1280, 2160x1440, 2256x1504, 2880x1920 and 3000x2000
|
|
# (3:2). For any other size, or a source build that has not made the layout, the game draws the largest 16:9 size that
|
|
# fits inside it (3440x1080 gives 1920x1080) and the present adds bars; build the layout with
|
|
# tools/make_romfs_patches.py --aspect WxH to use the full shape. Read at start. Default: 1920x1080, or on a primary
|
|
# display of one of those shapes the smallest of its sizes at least 1080 high that fits the display (1920x1280 on a 3:2
|
|
# laptop, 2560x1080 on a 21:9 monitor), so the picture fills the screen without black bars, with prompts = xbox or pc
|
|
# too (on an install by an older setup, which built the Xbox prompts for 16:9 only, prompts = xbox keeps 1920x1080).
|
|
# output_res = 1920x1080
|
|
# 3D render scale: the scene's size relative to the game resolution, game (5/6, the game's own 1600x900 at 1080p) or
|
|
# a percentage (25 to 400); above 100 supersamples the scene (anti-aliasing). The scene stays within 8192 pixels a side
|
|
# and within a texture heap under 2 GiB (8192x2304 at most on a 5120x1440 output); the log says when it is smaller.
|
|
# Read at start.
|
|
# render_scale = game
|
|
# Dynamic resolution: 1 lets the game lower the scene to 90 or 80 % of that size, 0 keeps it at 100 %. The game decides
|
|
# by a cost estimate made for the Switch, which grows with the scene's width and ignores how fast your GPU is: a
|
|
# scene wider than about 3000 pixels can drop to 80 % on any GPU. 1 is the default. 1.2.1 and 1.4.3. Changes in
|
|
# the menu take effect at once.
|
|
# dynamic_res = 1
|
|
# Scaling to the window when it is larger than the game resolution: fsr (AMD FSR 1) or bilinear, and FSR's sharpening
|
|
# from 0 (off) to 100. Changes while the game runs take effect at once.
|
|
# upscaler = fsr
|
|
# sharpness = 80
|
|
# Picture shape when the window's shape differs from the game resolution's (a 16:9 picture in a 21:9 fullscreen
|
|
# window): fit, the default, keeps the shape, with black bars at the sides or above and below, so a 16:9 game in a wider
|
|
# window is no longer stretched as it used to be; stretch fills the window. Changes while the game runs take effect at
|
|
# once.
|
|
# aspect = fit
|
|
# Shape of the pre-rendered movies (16:9) when the game resolution (output_res) is not 16:9: keep, the default, draws
|
|
# them in their own shape with black bars at the sides or above and below; stretch fills the whole picture, as the game
|
|
# does. Read when a movie starts, so a change takes effect at the next movie.
|
|
# movie_aspect = keep
|
|
# Field of view, in percent of the game's own: 70 to 140, 100 (the default) leaves the camera as it is. Higher shows
|
|
# more of the world around Link. Game version 1.4.3 only. Changes while the game runs take effect at once.
|
|
# fov = 100
|
|
# Anisotropic filtering of surface textures: game (the level the game asks for, as on the Switch) or 2, 4, 8, 16. Keeps
|
|
# ground, roads and walls seen at a shallow angle sharp into the distance. Only filtered, mipmapped textures that tile
|
|
# are raised; shadow maps, data maps and screen-sized buffers keep the game's setting. Read at start.
|
|
# aniso = game
|
|
# Colour adjustment of the picture, HUD included, before it is scaled to the window: brightness (-30 to 30, added in %),
|
|
# contrast and saturation (70 to 150 and 50 to 200 %), gamma (0.8 to 1.2, below 1 brightens dark tones). At 0, 100,
|
|
# 100 and 1 nothing runs. color_preset is the menu's profile (default, vivid, clarity, custom), which sets the four.
|
|
# Changes while the game runs take effect at once.
|
|
# color_preset = default
|
|
# color_brightness = 0
|
|
# color_contrast = 100
|
|
# color_saturation = 100
|
|
# color_gamma = 1
|
|
# Sun shadow map size: game (the game's own, which changes with the view and drops to about 400 near the ground, so
|
|
# leaf shadows look blocky and jump) or a fixed 256, 512, 768, 1024, 1536 or 2048. Above 960 the texture heap grows with
|
|
# it. 256 is coarser than the game's own and is for integrated GPUs short of memory bandwidth. Read at start.
|
|
# shadow_res = game
|
|
|
|
# Shadow map resolution: the game's sun cascades are 960x960 (and its static shadow maps 1440 and 720) whatever the game
|
|
# resolution; 2 to 4 draws them that many times larger on each side, for sharper shadows. 1 = the game's. The game's
|
|
# shadow edge filter is narrowed by the same factor (translator patch 0011), so close shadow edges don't look doubled.
|
|
# Read at start.
|
|
# shadow_scale = 1
|
|
# Sun shadow cascade range in percent of the game's (its cascades end at 20, 40, 80 and 160 m), 50 to 400: higher moves
|
|
# the steps where shadows turn softer further away, and spreads the shadow map over more ground. Read at start.
|
|
# shadow_range = 100
|
|
# Screen-space contact shadows, strength in percent (0 = off): after the game lights its scene, each pixel traces a
|
|
# short way toward the sun through the depth buffer and darkens where something close blocks it, adding the small
|
|
# shadows at feet, under stones and in grass that the shadow maps miss. Read at start.
|
|
# contact_shadows = 0
|
|
# Soft sun shadows (PCSS), percent of the default penumbra width (0 to 200; 0 = the game's own four-tap filter): sharp
|
|
# where an object meets the ground and softer the further its shadow falls. Done in the translated shaders (translator
|
|
# patch 0010), so the shader cache is rebuilt once after an update. Read at start.
|
|
# pcss = 0
|
|
|
|
# NVIDIA DLSS / DLAA for the 3D scene, on NVIDIA RTX GPUs with the DLSS model from NVIDIA's DLSS SDK next to the
|
|
# executable (Windows: nvngx_dlss.dll next to totk.exe; Linux: libnvidia-ngx-dlss.so.<version> next to totk, with the
|
|
# NVIDIA driver's libnvidia-ngx.so.1 installed); elsewhere the setting does nothing. The HUD is drawn after it and is not touched.
|
|
# Read at start.
|
|
# dlaa = 0
|
|
# What DLSS works from: dlaa (the 3D scene at full size), quality, balanced, performance or ultra_performance (the
|
|
# scene at 67, 58, 50 or 33 % of the output, scaled up by DLSS; these replace render_scale and sharpen texture filtering
|
|
# to match). They apply only with dlaa = 1 and the DLSS model next to the executable; otherwise the scene follows
|
|
# render_scale. Changes while the game runs take effect at once (1.4.3; 1.2.1 at the next start).
|
|
# dlss = dlaa
|
|
# The DLSS model: default (NVIDIA's advice per mode: K for dlaa, quality and balanced, M for performance, L for
|
|
# ultra_performance), k (K in every mode) or j (the other transformer model: slightly less ghosting behind moving
|
|
# characters, a little more flicker). Any other model by its letter, a to m: on slower RTX cards the older model e is
|
|
# cheaper. Changes while the game runs take effect at once (DLSS starts a new history).
|
|
# dlss_preset = default
|
|
# Per-object motion vectors for DLSS: characters, animals and moving objects get their own motion instead of the
|
|
# camera's, so DLSS keeps their history instead of smearing or rejecting it. Costs some CPU time each frame (about 1-2 ms
|
|
# on a laptop CPU); 0 leaves camera-only motion. Read at start.
|
|
# dlaa_objmv = 1
|
|
# Characters' trails: where a character, animal or held item moves without motion vectors of its own (all of them with
|
|
# dlaa_objmv = 0), DLSS can drag a faint copy of it. The G-buffer marks those objects; on them and where they were the
|
|
# frame before, DLSS is told to favour the current frame by this percentage (0, 35, 65 or 100; 0 off). Higher removes
|
|
# more of the trails and leaves those edges a little less smooth. Changes while the game runs take effect at once.
|
|
# dlss_char_mask = 65
|
|
# The game's own FXAA after the post effects; with DLAA on it is not needed. Changes while the game runs take effect at
|
|
# once.
|
|
# fxaa = 1
|
|
|
|
# HDR output: hdr = 1 sends the picture as HDR10 (needs HDR on in Windows, "Use HDR", or a Wayland compositor with
|
|
# colour management; without it the picture stays SDR). The game's tonemap keeps highlights up to hdr_peak_nits (your
|
|
# display's peak); hdr_game_nits is the picture's white (paper white, 203 is the HDR reference) and hdr_ui_nits the
|
|
# HUD's and the menu's. hdr is read at start, the nits at once. The colour profile above is for SDR only.
|
|
# hdr = 0
|
|
# hdr_peak_nits = 1000
|
|
# hdr_game_nits = 203
|
|
# hdr_ui_nits = 203
|
|
# Highlight hue correction in percent (0 to 100): bright colours such as fire turn towards white as in the game's SDR
|
|
# picture, matching the light they cast; 0 keeps them fully saturated. Changes take effect at once.
|
|
# hdr_hue = 80
|
|
|
|
[language]
|
|
# Language: a Windows locale such as de-DE, or a Switch code (en-US, ja, zh-Hant, ...). Default: the Windows locale.
|
|
# locale = en-US
|
|
# lang = en-US
|
|
# System mode reported to the game: docked or handheld.
|
|
# operation_mode = docked
|
|
# Language of the settings menu and the overlay: en, ru, pt-BR or zh-Hans. Default: the Windows display language, English if
|
|
# it is none of them.
|
|
# menu_lang = en
|
|
|
|
[discord]
|
|
# Rich Presence: "Playing TotK Recomp" with the play time in your Discord status while the game runs, through the
|
|
# local IPC of a running Discord client. 1 = on; the Menu tab of the settings menu (F1) switches it too, and the
|
|
# change reaches the presence thread at once.
|
|
# discord_rpc = 0
|
|
# The application whose name and artwork the status shows. The default is the project's own application,
|
|
# registered as "TotK Recomp" with the port's green ring icon as its art. Register your own at
|
|
# discord.com/developers (name and art are yours to choose) and put its id here.
|
|
# discord_app_id = 1567232599846293504
|
|
# The key of the application's uploaded art asset shown as the status's large image.
|
|
# discord_image = totk_512x512
|
|
|
|
[audio]
|
|
# none mixes without opening an audio device.
|
|
# audio = default
|
|
# Audio the output queues before it starts, in ms (0 to 500).
|
|
# audio_prefill_ms = 20
|
|
# Volume in percent (0 to 100), on top of the game's own. Changes while the game runs take effect at once.
|
|
# volume = 100
|
|
# Speakers: stereo, 5.1 or auto (5.1 when the Windows speaker setup has six or more channels, stereo otherwise). The
|
|
# game is told the same channel count and mixes for it. Takes effect at the next start.
|
|
# audio_channels = stereo
|
|
|
|
[input]
|
|
# Gamepad motion controls (0 = off) and vibration (0 = off).
|
|
# motion = 1
|
|
# rumble = 1
|
|
# Rumble strength in percent (0 to 300; 0 = off) and the exponent on the amplitude (0.2 to 1.5; lower = weak pulses
|
|
# stronger, 1 = linear). rumble_triggers = 1 also drives the impulse triggers of an Xbox pad.
|
|
# rumble_strength = 130
|
|
# rumble_curve = 0.6
|
|
# rumble_triggers = 0
|
|
# Which gamepad button is Switch A: nintendo (by position: east A, south B, west Y, north X), xbox (south A, east B,
|
|
# west X, north Y, as an Xbox pad labels them; cross A on a PlayStation pad) or auto (nintendo for a pad with Nintendo
|
|
# labels, xbox for the others). The bind_ lines below apply on top. Changes while the game runs take effect at once.
|
|
# 0.1.9's xbox_prompts is read as nintendo with prompts = xbox.
|
|
# pad_layout = auto
|
|
# The buttons the game's prompts show: nintendo (the game's own), xbox (LB RB LT RT, Menu, View and a d-pad cross,
|
|
# and A B X Y as labelled on the button pad_layout presses: with nintendo, A shows as B and X as Y). Read at start
|
|
# (docs/controls.md, "Xbox button prompts"). pc: the key or mouse button the keyboard defaults press each button with
|
|
# (E, Shift, Space, left click, Q, R, right click, F, Tab, M, 1 to 4, W A S D, Ctrl, C) and the mouse for the right
|
|
# stick, whatever pad_layout (docs/controls.md, "PC button prompts").
|
|
# prompts = nintendo
|
|
# Gamepad stick dead zone in percent of full deflection (0 to 50). Raise it for a stick that drifts: inside the circle
|
|
# the stick reads centred, and the rest of its travel is scaled to start there.
|
|
# stick_deadzone = 8
|
|
# Right-stick camera speed (0.1 to 3): multiplies the game's own camera turn rates, top speed included, at each of the
|
|
# five camera sensitivities in the game's Options. Keys bound to the right stick follow it; the mouse keeps mouse_sens.
|
|
# Read at start.
|
|
# stick_sens = 1
|
|
# The dead zone of one stick, in place of stick_deadzone for that stick (0 to 50; unset = stick_deadzone). The Controls
|
|
# tab shows each stick's deflection now, so a drifting stick's resting value can be read off.
|
|
# lstick_deadzone = 8
|
|
# rstick_deadzone = 8
|
|
# Mouse camera mode: direct (default) or stick. Direct turns the camera by the raw mouse motion, the same on both axes,
|
|
# with no stick dead zone or response curve (games 1.4.3 and 1.2.1; 1.1.0 uses stick emulation). Stick makes the
|
|
# mouse a right stick. Neither changes the gamepad. The Controls tab changes this while the game runs.
|
|
# mouse_mode = direct
|
|
# The mouse in the game's menus, 1.4.3 only (title, inventory, System tab, Options, shops, dialogue choices): while a
|
|
# menu has the game's focus box the pointer shows, the item under it takes the focus, a left click is A on it and a
|
|
# right click is B. On the map the mouse moves the map's cursor and the scroll wheel zooms. 0 leaves the menus and
|
|
# the map to the keys and the pad. Changes while the game runs.
|
|
# menu_cursor = 1
|
|
# Mouse camera sensitivity (0 to 10; 0 = no mouse camera and no cursor capture). With mouse_mode = direct, 1 turns the
|
|
# camera 0.08 degrees per count, the same in every camera mode (about 14.3 cm a turn at 800 DPI).
|
|
# mouse_sens = 1
|
|
# The mouse's camera motion times this while the bow is drawn (0.1 to 3; mouse_mode = direct, game 1.4.3), on top of
|
|
# the 0.08 degrees per count every camera turns, the bow's included. Changes while the game runs.
|
|
# mouse_aim_scale = 1
|
|
# The keyboard's sticks are all or nothing, so the game only sees a full tilt from them; while this key is held the
|
|
# keyboard-driven stick values shrink and the keyboard can walk instead of run. Key names as in the bind_ lines below,
|
|
# none turns it off. 0.2 to 0.9, the default holds for anything else. Only the keyboard is scaled: the mouse camera and
|
|
# the gamepad are unchanged. The Controls tab sets both. The default stops just above half because a keyboard sample of
|
|
# 32767 times 0.5 is one short of the 16384 the game's stick-direction bits need, and below that the keyboard stick
|
|
# reads as a partial tilt only.
|
|
# walk_key = lshift
|
|
# walk_scale = 0.51
|
|
# Write the input of this run to a file that replays as a script (docs/controls.md, "Scripted input"). Default: off.
|
|
# input_record = input.txt
|
|
# Remap buttons: the Controls tab of the settings menu (F1) writes these lines. One line per Switch button or stick
|
|
# direction: bind_<A B X Y L R ZL ZR PLUS MINUS LEFT UP RIGHT DOWN LCLICK RCLICK> or bind_<LSTICK RSTICK>_<LEFT UP RIGHT
|
|
# DOWN>, or bind_SHAKE (G: shakes the right stick, which detaches a fused part from what Ultrahand holds) = comma
|
|
# separated pad:<name> and key:<name> entries, key:default / pad:default for that part's defaults, or none.
|
|
# A line replaces that button's defaults (pad and keyboard); buttons without a line keep them. Stick directions and
|
|
# SHAKE take keys only. Invalid entries are logged and skipped. Changes while the game runs take effect at once.
|
|
# pad names: south east west north l r zl zr start back lstick rstick dpad_left dpad_up dpad_right dpad_down
|
|
# lpaddle1 rpaddle1 lpaddle2 rpaddle2 (the back buttons of an Xbox Elite, DualSense Edge or Steam Controller)
|
|
# key names: a-z 0-9 f2-f7 f9 f12 num0-num9 space tab enter backspace lshift rshift lctrl rctrl lalt capslock insert
|
|
# delete home end pageup pagedown up down left right num_add num_sub num_mul num_div num_decimal minus equals
|
|
# lbracket rbracket semicolon apostrophe comma period slash backslash grave mouse_l mouse_r mouse_m mouse_x1 mouse_x2
|
|
# Defaults (pad_layout = nintendo): A = pad:east, key:E. B = pad:south, key:lshift. X = pad:north, key:space.
|
|
# Y = pad:west, key:mouse_l. A pad that reports A/B and X/Y swapped (some GuliKit models): set pad_layout = xbox, or
|
|
# swap them back here (keyboard keys stay):
|
|
# bind_A = pad:south, key:E
|
|
# bind_B = pad:east, key:lshift
|
|
# bind_X = pad:west, key:space
|
|
# bind_Y = pad:north, key:mouse_l
|
|
|
|
[mods]
|
|
# Folder with the player's mods, one subfolder per mod (<name>/romfs, <name>/exefs, <name>/cheats). Default: mods next
|
|
# to totk.exe.
|
|
# mods_dir =
|
|
# Load order, top first, names separated by |. The in-game menu (Mods) writes it; a mod not listed goes to the bottom.
|
|
# mods_order =
|
|
# Mods switched off, names separated by |.
|
|
# mods_disabled =
|
|
# auto: when an enabled mod has cheats that change the game's code and the game was built without them, the game starts
|
|
# the setup's rebuild at start (a few minutes) and starts again after it. off: the game starts with the code it has.
|
|
# A rebuild that failed or was cancelled is not started again for the same cheats. Default: auto.
|
|
# mods_rebuild = auto
|
|
# Extra room in MiB (0 to 4096) for the heap the world's textures stream into, for HD texture packs. Packs made for
|
|
# emulators with 8 GB of DRAM grow it in their own HeapDef table (System/HeapSize/Product.Nin_NX_NVN.HeapDef.byml.zs):
|
|
# the port reads that growth at start and applies it itself (about 3339 MiB for the HDPacks 4K pack), so such a pack
|
|
# needs nothing here. Set it for a pack that ships textures without a HeapDef. Without the room the game keeps starting
|
|
# its panic Blood Moon. The memory pool grows by the same amount; the larger of this and a mod's growth counts.
|
|
# Read at start. Default: 0. Such a pack also needs much more video memory: astc_bc = 1 ([performance]) keeps its
|
|
# textures at a quarter of it.
|
|
# tex_heap_extra_mb = 0
|
|
|
|
[files]
|
|
# Developer overlay: a folder with RomFS files and a manifest.tsv (tools/make_romfs_patches.py format). Players put
|
|
# their mods into the mods folder instead ([mods]). Default: none.
|
|
# romfs_mods =
|
|
# Folder with the Switch shared fonts (BFTTF files, tools/extract_fonts.py output), for Chinese and Korean text.
|
|
# Default: shared-fonts next to totk.exe. TOTK_SHARED_FONTS overrides it.
|
|
# shared_fonts =
|
|
|
|
[cheats]
|
|
# One line per cheat of the mods' cheat files, mods\<mod>\cheats\<build id>.txt (docs/cheats.md); the Cheats tab of
|
|
# the menu writes them. cheat_<hash> = 1 switches a cheat on, the hash being FNV-1a 32 of "<mod folder>/<cheat name>".
|
|
# Default: every cheat off.
|
|
# cheat_0123abcd = 1
|
|
|
|
[diagnostics]
|
|
# Extra lines in the log, comma separated: svc, host, ipc, fs, gfx, perf, sched, audio, present or all. The menu's
|
|
# Performance log sets perf (frame timings). Default: none.
|
|
# trace = perf
|
|
# Flight recorder: keeps the last frames and saves them to a flight folder next to the folder of totk.exe when a frame
|
|
# takes longer than flight_spike_ms (0 to 60000).
|
|
# flight = 0
|
|
# flight_spike_ms = 100
|
|
# GPU pass marks: after a GPU crash (device lost) the log names the render pass or dispatch the GPU had started and the
|
|
# last one it finished. Unset: on AMD GPUs (VK_AMD_buffer_marker). 1: also on NVIDIA GPUs
|
|
# (VK_NV_device_diagnostic_checkpoints), which NVIDIA says costs a little. 0: off.
|
|
# pass_crumbs = 1
|
|
# Render targets up to this size (bytes, 0 to 1073741824) go back to their game memory whenever the game waits for a
|
|
# GPU fence. A larger target goes back too unless the GPU drew it in each of the last 16 frames. A game that reads a
|
|
# larger target drawn every frame without invalidating it sees stale bytes at the default. With trace = gfx the log
|
|
# names each dirty target that stays on the GPU ("fence write-back skipped-drawn-every-frame") and each one over 65536
|
|
# bytes that went back ("over-default"). Raising it costs a copy per such target and wait.
|
|
# wb_fence_limit = 65536
|