Skip to content
This repository was archived by the owner on Sep 20, 2026. It is now read-only.

Releases: kirbycope/suyu-v0.0.4

suyu v0.0.4a (Apple Silicon)

Choose a tag to compare

@kirbycope kirbycope released this 20 Sep 15:49

suyu v0.0.4a for Apple Silicon Macs

a for Apple. This is upstream suyu v0.0.4 (c0dd2ff) plus the fixes needed to build, run and
render correctly on an Apple Silicon Mac through MoltenVK. The prebuilt macOS release in the
original repository never ran; this one does. Tested on a MacBook Pro (M4 Pro), macOS 26.6.2,
with The Legend of Zelda: Breath of the Wild at a steady 25 to 30 FPS and no rendering artifacts.

Install

  1. Unzip and move suyu.app to /Applications.
  2. The app is ad-hoc signed, not notarized, so macOS will refuse it once. Clear the quarantine
    flag and it opens normally:
    xattr -dr com.apple.quarantine /Applications/suyu.app
  3. Put your prod.keys in ~/.local/share/suyu/keys/ and install firmware through the
    emulator (Tools > Install Firmware), or copy it into
    ~/.local/share/suyu/nand/system/Contents/registered/.
  4. Keep games outside ~/Documents (iCloud Drive churns that folder and the game list rescans
    on every change); ~/Games/Switch works well.

Everything the app needs is inside the bundle: Qt, FFmpeg, Boost, OpenSSL, SDL3, the Vulkan
loader, MoltenVK and its ICD manifest. No Homebrew required to run it.

What changed against upstream

  • Rendering: duplicate colour attachments dropped on MoltenVK (Fix 12). BotW binds one G-buffer
    surface at two slots; Metal declares that undefined and the aliased attachments overwrote each
    other's tiles, producing the 32x32 checkerboard corruption. Also: depth textures declared as
    depth images, shader-side depth compare on colour-format shadow maps, blending disabled on
    integer attachments, corrected upload barriers, uploads marked as used.
  • Stability: heap corruption in aes_util.cpp (stack smash) and a PlayTime ODR violation;
    abort on an unknown system archive; writes to unmapped guest pages during async flushes;
    the NONE colour format asserted 10,000 times per run.
  • macOS bring-up: MoltenVK feature waiver, CAMetalLayer lookup under Qt 6, an Objective-C
    exception escaping C++ catch blocks, the game list rescanning on every save write.

Source, the patch against upstream and the full investigation write-up (fifty experiments)
are in macos/ on the main branch. Built from commit a7be8e0.

Known limitations

  • MoltenVK has no geometry shaders, logic ops, wide lines or depth bounds; games that depend on
    them will render wrong.
  • Metal validation reports uniform buffer bindings that extend past the end of their buffer;
    harmless in BotW, not yet fixed.
  • Only tested on Apple Silicon. Intel Macs are not supported by this build.

Checksum

2fa90ba6613f8c1d35a41a0aa9b7108bd2716a3c3dadcbbbfa3b8ee49d159674  suyu-v0.0.4a-macos-arm64.zip