github kuraeow/ultratears v0.4.0
UltraTears 0.4.0

58 minutes ago

UltraTears 0.4.0 builds a native version of Tears of the Kingdom 1.4.3 for Windows, Linux and the Steam Deck from your own dumped copy. No game files, keys or Nintendo code are included.

A smoother and faster game, the Steam Deck at 40 fps, FSR 3.1, mods, keyboard and mouse.

  • Smoother and faster: the GPU starts on a frame while it is still being recorded, the game's code is built with a run profile, and far fewer hitches while the world streams in. Shrines run at full speed.
  • Steam Deck: at least 40 fps in about 95 % of places. Recommended for now: frame limit 40 in the launcher, the frame limit off in the Steam overlay, and 80 Hz on a Steam Deck OLED (45 fps works too).
  • FSR 3.1 and SMAA: temporal upscaling with per-object motion in place of the game's FSR 1, and SMAA 1x in place of its FXAA.
  • Mods and cheats: a mods folder in the emulators' layout; RomFS mods, ExeFS patches and Atmosphere cheats, each switched on or off in the launcher's new Mods tab without rebuilding the game.
  • Keyboard and mouse made for the PC: a new key layout, the mouse turns every camera and aims, mouse buttons bindable, sensitivity and inversion in the launcher.
  • Controllers: an Xbox / Steam Deck layout, every button and key bindable, button prompts that follow your bindings, stick and gyro dead zones; the launcher works with a controller.
  • Fixes: no more stripes on distant islands when the camera turns, grass can be cut and burnt, particles move again, shrine walls no longer flicker, desert sand no longer rises into walls, the rope at the Popla tower no longer tears; crashes with Recall / Ultrahand, when naming a horse and with Chinese or Korean text; installs in folders with spaces or : in the name.

This is a big update: the game is rebuilt almost from the start, about 30-40 minutes on a PC, longer on a Steam Deck. Update when you are ready to wait that long; saves stay. Accept it in the launcher, or by hand: extract the new zip over your game folder (Steam Deck / Linux: replace UltraTears.AppImage; copied over from Windows, turn on Allow executing file as program in its Properties, Permissions tab, in Desktop Mode), start the launcher and click Update the game.

Known issues: FSR 3.1 may show lighting problems for now (a fix is planned); a few busy places can still dip below 40 fps on the Steam Deck; short bright flashes on the Steam Deck's title screen; textures from mods cause a short hitch the first time.

Downloads

File For
UltraTears-0.4.0-windows-x86_64.zip (~160 MB) Windows; it can also build the game for a Steam Deck
UltraTears.AppImage (~215 MB) Linux and the Steam Deck

Follow the README to install.

Коротко по-русски

UltraTears 0.4.0 собирает нативную версию Tears of the Kingdom 1.4.3 для Windows, Linux и Steam Deck из вашей собственной копии игры. Файлов игры, ключей и кода Nintendo в релизе нет.

Плавнее и быстрее, Steam Deck на 40 к/с, FSR 3.1, моды, клавиатура и мышь.

  • Плавнее и быстрее: видеокарта начинает кадр, пока он ещё записывается, код игры собирается по профилю её работы, и намного меньше рывков при подгрузке мира. Святилища идут на полной скорости.
  • Steam Deck: не менее 40 к/с примерно в 95 % мест. Для самой комфортной игры пока рекомендуем: в лаунчере ограничение 40 к/с, в оверлее Steam — без ограничения частоты кадров, на Steam Deck OLED — частота экрана 80 Гц. Можно играть и в 45 к/с: игра старается держать и их.
  • FSR 3.1 и SMAA: временной апскейл с векторами движения объектов вместо FSR 1 игры и SMAA 1x вместо её FXAA.
  • Моды и читы: папка mods в раскладке эмуляторов; RomFS-моды, патчи ExeFS и читы Atmosphère, каждый включается и выключается на новой вкладке лаунчера Моды без пересборки игры.
  • Клавиатура и мышь для ПК: новая раскладка клавиш, мышь поворачивает все камеры и целится, кнопки мыши можно назначать, чувствительность и инверсия — в лаунчере.
  • Геймпады: раскладка Xbox / Steam Deck, любую кнопку и клавишу можно переназначить, подсказки кнопок в игре следуют назначениям, мёртвые зоны стиков и гироскопа; лаунчером можно управлять с геймпада.
  • Исправления: больше нет полос на дальних островах при повороте камеры, траву снова можно срезать и сжечь, частицы снова двигаются, стены святилищ не мерцают, песок пустыни не поднимается стенами до неба, канат у башни Попла не рвётся; падения с Ультрарукой / Перемоткой, при выборе имени коня и с китайским или корейским текстом; установка в папки с пробелами или : в имени.

Обновление крупное: игра пересоберётся почти с нуля — около 30–40 минут на ПК, на Steam Deck дольше. Обновляйтесь, когда будете готовы столько подождать; сохранения останутся. Согласитесь на обновление в лаунчере или вручную: распакуйте новый архив с заменой в папку с игрой (Steam Deck / Linux — замените UltraTears.AppImage; если переносите его с Windows, на Deck в режиме рабочего стола в свойствах файла на вкладке Права включите Разрешить выполнение файла как программы), запустите лаунчер и нажмите Обновить игру.

Известные проблемы: с FSR 3.1 пока возможны проблемы с освещением (исправление готовится); в отдельных нагруженных местах на Steam Deck возможны просадки ниже 40 к/с; на титульном экране Steam Deck иногда мелькают яркие вспышки; текстуры из модов при первой встрече дают короткий рывок.

Full list of changes

Smoother and faster

On the PC and the Steam Deck alike.

  • The GPU starts on a frame while it is still being recorded. The recorded commands go to the GPU in parts instead of all at the end, so the game waits for the GPU far less: on the PC frames over 33 ms became about three times rarer.
  • The game's code is built with a profile of how it runs (PGO, collected on our side; the profile holds only counts, no game data): about 8 % less of the game's own work per frame on the Steam Deck in busy places.
  • Vector math with NaN values is fixed for the whole vector at once instead of lane by lane; the game does this hundreds of thousands of times a second.
  • Fewer hitches while the world streams in:
    • the game's file and streaming calls (memory pools, texel copies) give their CPU slot to the game's other threads while they wait;
    • a busy thread is interrupted when a more urgent game thread needs its slot, instead of keeping it for milliseconds;
    • texel reads of textures the GPU never drew are served from game memory at once, without waiting for the recording;
    • small texture writes update only their region instead of re-encoding the whole texture level;
    • a memory pool made over a released one no longer waits for a frame's worth of recording;
    • texture uploads are recorded by each recording thread on its own instead of taking turns under one lock;
    • memory for uploads and new images is kept ready ahead, and the BC7 texture cache is read ahead of a texture's first use; under video memory pressure released images are freed at once. On the Steam Deck frames over 50 ms became roughly half as frequent.
  • Recording the GPU's commands costs less CPU (about a fifth less): the recording threads share one scan for memory the CPU wrote, and a buffer the GPU writes is registered once per frame.
  • Three recording threads on every machine: measured on the PC, a 6-thread Linux PC and the Steam Deck, more did not help and took cores from the game.
  • Shrines run at full speed. The game no longer runs several frames ahead of the GPU, and the game's barriers inside a render pass no longer split it: shrines that showed a fraction of the frame rate now run at the frame limit.
  • Saving no longer stalls the game: writes to disk at autosaves go to a background thread (up to 0.8 s each on the Steam Deck before).
  • A few hot game functions with jump tables the translator could not resolve no longer take the slow path.
  • Less system memory for upload buffers on PCs without resizable BAR (one PC ran out of memory after 10 minutes).

Steam Deck and Linux

  • The Steam Deck now holds at least 40 fps in about 95 % of places. You can also play at 45: the game aims to hold that too. For the most comfortable play for now: set the frame limit to 40 in the launcher, turn the frame limit off in the Steam overlay's performance settings, and on a Steam Deck OLED set the refresh rate to 80 Hz.
  • The Steam Deck starts in the Xbox layout and uses Steam's on-screen keyboard; the launcher can be used with its controls and touch screen.
  • On the Steam Deck the recording threads run at a lower priority than the game's own threads, so they no longer take its cores.
  • Frame limit: a new Steam Deck install starts at 40 fps; it is a setting like any other, so 60 or more can be chosen in the launcher (before, the Deck held 40 whatever was chosen). An existing ultratears.cfg is not changed.
  • Linux: game threads no longer wait behind the recording threads for the memory pool table (dips while the world streams in, on Linux only).
  • Linux with a discrete GPU: memory pools get copies in video memory, as on Windows.
  • Linux: copying what the GPU wrote back into game memory compares memory in blocks instead of byte by byte (it took a large share of a Steam Deck core).
  • Builds with a : in the folder name work on Linux (GitHub #66, #69).
  • The launcher's update on Linux no longer fails writing into the AppImage's read-only mount (GitHub #74).
  • The disk space check no longer asks a build on Linux for the Steam Deck tar's space (71 GB instead of about 39).

Anti-aliasing and upscaling

  • FSR 3.1 (AMD FidelityFX, MIT) can take the place of the game's FSR 1 when the scene is drawn below the output size: temporal upscaling with camera and per-object motion, anti-aliasing included. Choose it on the launcher's Scene scale row.
  • SMAA 1x can take the place of the game's FXAA at any scale: smoother edges for little GPU time, the HUD left alone. The new Anti-aliasing row offers the game's FXAA, SMAA or none.
  • The upscaler list has None (the scene at the output size).

Mods and cheats

  • A mods folder beside the game holds one folder per mod, laid out as the Switch emulators take them (romfs, exefs, cheats, also inside atmosphere/contents/<title id>/ and atmosphere/exefs_patches/).
  • The launcher's new Mods tab turns each mod and each cheat on or off and sets the mods' order. Nothing about it rebuilds the game.
  • RomFS mods: their files are used in place of the game's; when two mods give the same file, the one higher in the list wins. The game's resource size table is rebuilt at start, so a mod with bigger or new files no longer overruns the game's buffers.
  • ExeFS patches (.ips, .ips32, .pchtxt) and Atmosphere cheats. Data changes and data cheats are applied by the game itself. Code patches and code cheats need only the functions they change translated again: the launcher does that before Play when such files changed (about 10 seconds the first time, 2 seconds after that). Each change sits behind its mod's or cheat's switch, so turning them on and off needs no build.
  • On Linux and the Steam Deck code patches and code cheats need the game folder that the AppImage set up (it carries the compiler). In a folder copied over from a Windows build, RomFS mods and data cheats work, code patches and code cheats do not.

Keyboard and mouse

  • A keyboard layout made for the PC: E is A, Left Shift B, Space X, left click or T Y, Q L, R R, right click or Z ZL, F or X ZR, Esc the menu (+), Tab or M the map (-), Left Ctrl crouches, C first-person view, 1 2 3 4 the d-pad, WASD or the arrow keys to move.
  • The mouse turns the camera, measured in degrees, so a turn does not depend on the frame rate or on the game's stick curve: the free camera, bow and throw aim, the scope, the ability camera and Recall's cursor, riding, climbing, lock-on, dialogue cameras, shield surfing. Ultrahand follows the mouse, and shaking the mouse detaches a part. Holding L the mouse picks an ability; holding a d-pad key, the wheel or sideways motion steps through weapons, shields and materials. The mouse's side buttons are the d-pad's left and right.
  • Mouse buttons can be bound like keys. Esc lets the mouse go when no game button is bound to it.
  • The launcher's Keyboard page has a Mouse section: camera sensitivity, sensitivity while a bow is drawn, and inverted up and down.

Controllers

  • An Xbox / Steam Deck layout: A on the bottom face button, as Xbox pads and the Steam Deck are labelled. The Steam Deck starts in it; the Nintendo layout (A on the right) stays the default elsewhere.
  • Every button and key can be bound in the launcher's new Controls tab. Giving an action a button another action had swaps the two, so no action is left without one.
  • Button prompts follow your layout and bindings: the action diamond, the guide's shoulder keys and the button symbols in the game's texts.
  • Stick and gyro dead zones: the Sticks and gyro page shows both sticks and the gyro live, with a slider for each dead zone and Set up automatically, which reads the controller lying still for 3 seconds. A drifting stick no longer needs a hand-edited line (GitHub #39).
  • The launcher works with a controller: the d-pad and the left stick move the focus, L / R (LB / RB) switch tabs, the right stick scrolls, A presses; Play has the focus when the game is ready. On the Steam Deck's touch screen a drag scrolls.

On-screen keyboard

  • Naming a horse opens a text field over the picture: typed on a PC keyboard (with the input method), on the Steam Deck through Steam's on-screen keyboard. Before, naming a horse crashed the game (GitHub #58, #81).

Fixes

Crashes

  • Recall / Ultrahand: a crash when the ability's target had already gone (GitHub #48, #71, #80). Thanks to mgiampapa for the fix (PR #52).
  • Naming a horse (GitHub #58, #81).
  • Chinese and Korean text: the console's system fonts were refused by a wrong header check, and the game stopped (GitHub #59). Each font is now read when the game first needs it. The README says where the fonts go.
  • Intel GPUs without VK_EXT_shader_object: the Khronos shader object layer is now turned on when it is installed (GitHub #49, #53; not tested on an Intel GPU yet).

Graphics

  • Grass can be cut and burnt again: cut and burnt grass goes away, clippings fly from a swing, fire burns the grass down (GitHub #60).
  • Particles move again: compute shaders ran only the first thread of each group, so explosions, gloom, sweat and sparks drew long needles.
  • Shrine walls no longer flicker (the light shafts and the lit floor along the walls).
  • Desert sand no longer rises into walls up to the sky after a fast travel (GitHub #64).
  • The rope at the Popla tower no longer tears into a flapping sheet (and other rigid-skinned objects that tore at random).
  • No more stripes and shimmer on distant islands, water and the horizon when the camera turns: the camera's near plane is 1 m instead of 10 cm, which gives far landscape many times more depth precision. Geometry closer than 1 m to the camera is clipped.
  • FSR 3.1 works with the scene at the output size.

Setup and updates

  • The translated shaders take about 0.9 GB on disk instead of 3.4 GB: each one is compressed. An update compresses an existing pack in place in under a minute; nothing is translated or compiled again for it.
  • Builds in folders with spaces in their names (GitHub #47, #55, #62, #70). A downloaded package that also has a .git folder is still set up as a package.
  • A build no longer fails at its last step when another program holds data/setup.json open (GitHub #72, #73).
  • When an antivirus briefly blocks the new texture encoder, the build tries again for up to 30 seconds, then says the antivirus blocks it (GitHub #78).
  • The disk space shown and checked is measured: about 39 GB for a build, 37 GB more for a Steam Deck tar.

For testers

  • New log lines: where a long frame went (the game's threads, their CPU slots and waits, file reads, the GPU's time that frame), the uploads of a long submission by part, the game's streaming calls by kind, lock waits on Linux, memory by use.
  • The profiler (TOTK_PROF) works on Linux and the Steam Deck.
  • F9 and TOTK_DUMP also save R16 and RG8 images; TOTK_SHOT=<frame>+<count> saves frames in a row.
  • Experiments, off by default: TOTK_FRAME_QUEUE=1 (the game draws the next frame while the last one waits for the display; worse on the Steam Deck), TOTK_OCCLUSION=1 (real occlusion queries; no gain measured, objects may show up late).
  • Most changes above can be turned off with a TOTK_* line in ultratears.cfg for a comparison; ask in an issue.

Known issues

  • FSR 3.1: lighting problems may show for now; a fix is planned for the next update. FSR 1 or None until then.
  • On the Steam Deck a few busy places can still dip below 40 fps.
  • On the Steam Deck the title screen's glowing lines sometimes flash into large bright shapes for a moment. A fix is planned for the next update.
  • A texture from a mod is converted on the CPU the first time it is seen (a short hitch); shaders from mods are not translated.
  • Not tested on an Intel GPU without VK_EXT_shader_object.

Don't miss a new ultratears release

NewReleases is sending notifications on new releases.