github suyu-emu/suyu-main v0.0.13
suyu v0.0.13

5 hours ago

suyu v0.0.13

Faster Vulkan pipeline setup, smaller game exports that run from your own game
file, a new optional portable export type, and clearer key and firmware setup.

Faster Vulkan pipeline setup

On supported Vulkan drivers, suyu now reuses compiled graphics pipeline parts and links a
new pipeline quickly when it is first needed. This reduces long waits caused by graphics
pipeline creation. Suyu builds a fully optimized version in the background after the
first use.

The change is enabled only when the driver reports fast graphics pipeline library
support. Other devices keep the previous path automatically; this includes the tested
macOS MoltenVK build. Android also keeps the previous path by default. If a supported
driver has a rendering problem, turn off Use graphics pipeline libraries in the
Vulkan settings.

This improves pipeline waits; loading transitions can still pause for other reasons.

Game exports run from your game file

Exports no longer copy the game's files. An export records the game file you
selected and opens it at every launch with the keys installed in suyu, the same
way suyu itself plays it. A JIT export is now tens of megabytes instead of the
size of the game. If the game file has moved, the export says so and names the
path it expected; export the game again from its new location.

Exports are built in a temporary folder, checked, and only then moved into place.
An existing export is never silently replaced.

Portable exports (optional)

Package type → Portable copies your game file, its installed update and its
installed DLC into the export unchanged, sealed to the console your keys come
from. The export then runs without the original file. On first launch on a PC
without keys it asks for your key files and installs them for that user account,
as Install Decryption Keys does; later launches start directly. Keys from a
different console are refused. Keys and firmware are never copied into an export.

Portable needs an sd_seed entry in your keys. The export dialog shows whether
it is present, along with your keys, firmware, game file, update and DLC.

Keys and installed content

  • Launching a game without keys shows a prompt with Install Decryption Keys…
    instead of failing. An export started with keys that don't match the game says
    so and names the keys folder.
  • suyu reads keys only from the key files you install, and keeps them in memory.
  • Content installed from NSP files keeps its tickets, so DLC and updates installed
    that way keep working after suyu restarts.

Faster on CPUs with extra cache

On processors whose cores have different amounts of L3 cache, such as Ryzen X3D chips
with 3D V-Cache on one set of cores, suyu now runs games on the cores with the largest
cache. On a Ryzen 9 9950X3D this made a Static export of TOTK 1.4.3 about 40% faster
and the JIT about 60% faster with the frame-rate limit off. Other processors are not
affected. To turn it off, clear Prefer the cores with the largest L3 cache in the CPU
settings.

Static and Hybrid exports

Larger games now export and run as Static or Hybrid builds. These fixes came from
testing The Legend of Zelda: Tears of the Kingdom.

  • Recompiled code is matched to the right game module. Hybrid exports that left a
    module to the JIT could attach recompiled code to the wrong module. Recompiled code
    is now matched by build ID. Exports also check that every recompiled module found
    its place before the game starts, and a Static export refuses to start if one did
    not, instead of crashing later.
  • Newer game builds load correctly. Recompiled modules from recent game updates
    (for example TOTK 1.4.3) were not recognised, so Hybrid exports silently ran fully
    on the JIT and Static exports stopped at startup.
  • Smaller, faster-to-build exports. The exact floating-point fallback code is now
    shared instead of repeated at every use. On Mario Kart 8 Deluxe a Static export is
    26% smaller and builds in half the time, at the same speed. On TOTK this brings the
    Static image under the 2 GB size Windows allows for one program.
  • Faster floating-point code in more games. Games that run with flush-to-zero
    enabled, such as TOTK, now use the fast native floating-point path when no tiny
    (subnormal) values are involved. Results stay identical to the console. On TOTK
    1.4.3 a Static export now holds 30 fps in-game, up from 20.
  • Faster Hybrid exports. Hybrid exports now also compile one family of vector
    shift instructions that they used to hand to the JIT. On TOTK 1.4.3 this took a
    Hybrid export from about 23 to 29 fps in-game.
  • Fixed a code-generation error in a type of memory load (PC-relative literal
    loads) that could crash Static games at startup.

Re-export Static and Hybrid games to get these fixes. Cached builds from older
versions are rebuilt automatically.

Mods in Static and Hybrid exports

Code patches (.ips / .pchtxt in a mod's exefs folder), including frame-rate
patches, are now built into Static and Hybrid exports. The patches you have enabled
in suyu when you export are compiled in. At every launch the export checks that the
same mods are still installed in suyu and unchanged; if not, it says which mod changed.
Re-export after changing your mods.

Mods that add their own code modules and patch the game while it runs (for example
UltraCam) can't run in Static exports. Use JIT, or a Hybrid export.

UltraCam 3.0 on TOTK 1.4.3: UltraCam 3.0 (from NX Optimizer) does not support game
version 1.4.3, and the game crashes shortly after loading a save. tools/mods/ultracam_totk143_fix.py
updates one of its code patterns for 1.4.3 in your own copy of the mod; see
tools/mods/README.md. With the fix, TOTK 1.4.3 runs at 60 fps with UltraCam on JIT
and Hybrid. UltraCam is by MaxLastBreath (CC BY-NC 2.0).

Other fixes

  • Fixed a crash in the CPU emulator when a game ran a half-precision FCMLA
    instruction, which the Switch's CPU does not support. It now raises an
    undefined-instruction exception, as the console does.
  • Fixed a case where an installed update could be ignored, so the game silently
    started an older version.

Downloads

Each release now includes a source archive of the bundled dependencies, and every
package carries LICENSES/ and THIRD-PARTY-NOTICES.txt. Release packages are
checked automatically before upload.

Re-export existing games to get the smaller exports; older exports keep
working as they are.

Don't miss a new suyu-main release

NewReleases is sending notifications on new releases.