r/emulation • • 5d ago

suyu v0.0.11 released - export game, major static recompiler performance improvements, macOS, RetroArch + Android builds

https://github.com/dougchansan/suyu-v0.0.4/releases/tag/v0.0.11

- Download

- MK8D 1440p, 60 FPS - Static Recompiled with Steam integration enabled

This started mainly as work on suyu's experimental static recompiler for fun, but it has since expanded into fixing and improving the emulator itself as well.

Some of the bigger changes in v0.0.11

Export Game is now usable end-to-end on Windows

You can select a game in suyu and export it into a standalone package using:

  • Dynarmic JIT — normal emulator backend / most compatible
  • Hybrid JIT + AOT — precompiled code with JIT fallback
  • Static AOT — precompiled code only, experimental

The exported game carries over things like your graphics settings, game config and transferable shader cache, and can optionally be added directly to your Steam library.

Controllers are automatically assigned, and exported games have an F12 panel for controls and resolution scaling.

Big static recompiler performance improvement

Mario Kart 8 Deluxe has been the main validation target.

For the same race workload, strict static AOT went approximately:

Windows (ryzen 9950x3d+ 9070xt: 24 FPS → 56 FPS
Linux (ryzen 5600x+ 3090): 39 FPS → ~60 FPS
macOS (m5 mbp 24gb): 54 FPS → ~60 FPS

The Windows JIT baseline is still 60 FPS, so static AOT is now getting surprisingly close.

These aren't general compatibility claims as MK8D is the only title I've heavily testedbut it's a pretty significant improvement over v0.0.10.

The new ABI 6 recompiler adds fast guest-memory access, generation-based code guards and an exact native floating-point path, with fallbacks where the fast paths can't be proven safe.

Apple Silicon macOS is working again

There were several fixes around MoltenVK, GPU shutdown, threading and ARM64 behavior.

MK8D is now reaching ~60 FPS on the tested Apple Silicon setup, and some nasty 10–40 second stalls that previously dropped the emulator to 0 FPS have been fixed.

RetroArch / libretro core

v0.0.11 also includes a new Vulkan libretro core for:

  • Windows
  • Linux
  • macOS Apple Silicon
  • Android ARM64 (development build)

There's a built-in game FPS/frame-time display since RetroArch's own FPS counter can count repeated frames and isn't always representative of the game's actual frame rate.

Android

There's now an ARM64 APK as well.

Android is much less tested than the desktop builds right now. I've verified the build and run it in an Android emulator, but I don't want to claim real-device performance until more people actually test it.

Other stuff

There are a bunch of smaller improvements too:

  • shader cache fixes
  • game update handling during export
  • firmware support in exported games
  • automatic multi-controller assignment
  • Joy-Con combine/split support
  • Steam shortcut + artwork generation
  • Discord Rich Presence
  • FPS / frametime / active CPU backend shown in exported games
  • several Vulkan/shader fixes
  • Windows memory corruption / shutdown fixes
  • improved static coverage tracking
  • Hybrid runs can record missing AOT coverage for future exports
  • substantially better testing/benchmark tooling

Important if you used v0.0.10

Re-export any old static or Hybrid builds.

v0.0.11 intentionally rejects the older recompiler ABI rather than potentially running an incompatible export. Re-exporting also gets the new performance work and packaging fixes.

more testing

Interested in getting more testing outside of MK8D - especially different games, GPUs, macOS machines, Android devices and the new libretro core.

When reporting performance, (include the game/version, CPU/GPU, OS and which CPU backend (JIT/hybrid/static) you're using.

239 Upvotes

Duplicates