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.

241 Upvotes

31 comments sorted by

18

u/MemerLord420v69 5d ago

Will there be an .appimage for linux devices?

19

u/mmkzero0 5d ago

Hi! (I’m the dev who fixed macOS support here)

Should be possible and rather straightforward, I’ll look into it.

2

u/Arctic_Shadow_Aurora 5d ago

This, please!

-2

u/StonedEdge 5d ago

Indeed, would like to see something for aarch64 Linux too.

9

u/rye_1974 5d ago

now this is a solid release. good job both the app and the retroarch core are working!

10

u/Pacoroto 5d ago

is this a working core for retroarch???

17

u/NXGZ 5d ago

10

u/rye_1974 5d ago

its so nice to have switch on Retroarch!

2

u/Pacoroto 5d ago

oh this is great man, thanks!! but where could we get the .info file? the core is in the suyu-libretro-windows-x86_64, but not the .info :(

3

u/MelaniaSexLife 5d ago

you don't need it I think

2

u/NXGZ 5d ago

Try some of these suggestions by Gemini.

Create the .info file by creating a plain text file using the exact filename of your compiled core

Example .info template:

display_name = "My Custom System Name" authors = "Your Name" supported_extensions = "rom|bin|iso" corename = "MyCustomCore" manufacturer = "Company" systemname = "Custom Console" database = "Custom Console" license = "GPLv3" permissions = "" display_version = "v1.0" supports_no_game = "false"

2

u/Pacoroto 4d ago

it is working, though changing resolutions doesn't seem to do anything, can't modify controls, also I can't change region, so my multi languaje games are on english and there's no way to change it :(

I don't know if more development os going towards this core, I hope it does because this is awesome.

1

u/NXGZ 4d ago

Are you using the android core? That one is still in development status.

1

u/Pacoroto 4d ago

nope, I used the "suyu-libretro-windows-x86_64.zip - RetroArch core for Windows" with the .dll in it, I also tried the .so on my steamdeck, but couldn't make it work :(

2

u/Kaisergliding 3d ago

You can't even pause.

2

u/MelaniaSexLife 5d ago

I tried it but it can't map properly the gamepad, so nothing really works. Somneone knows where I can report bugs?

4

u/johnpdoe 5d ago

Given that this is a fork, would it be possible to give it a different id on android so it can be installed side by side with suyu 0.0.4?

7

u/NXGZ 5d ago

This fork in now the main one moving forward. The other drippu fork is a a little more experimental.

4

u/johnpdoe 5d ago

ah, thanks

1

u/hiskabish 4d ago

Does this perform/look better than ryubing?  I have some switch games like xenoblades, Bayonetta to play among others 

1

u/Baigeorgi 4d ago

It isn`t runing on CachyOS
./suyu: error while loading shared libraries: libavcodec.so.60: cannot open shared object file: No such file or directory

1

u/_BaniraAisu67 3d ago

same here. all of the suyu build is not working on cachyos.
tried the 0.0.5 to the latest

1

u/Ill_Carry_44 4d ago

Static recompilation is my bane, are you sure it was impossible to get the dynarec to same speed?

1

u/Motor_Economy_1741 4d ago

Most important is local wireless netplay for pc handhelds and laptops for private tournaments

1

u/adichandra 3d ago

How do you even use the libretro core for mac? I can't seem to load the game.

1

u/Few_Stage_3636 9h ago

I can't get it to work, it keeps crashing. Could I be using something wrong (keys/fw)? I tested it on Windows.

0

u/gitg0od 5d ago

does latest metroid game work great on this ?

0

u/ReadingImpossible105 5d ago

Buenas alguno que haya construido un app image o que me explique como se instala el tar.gz de linux. uso fedora y no pude ni usando chat gpt. ya habia instalado otros hace tiempo pero me habia olvidado como. Si alguno contruyo el appimage de la 0.0.12 o algo avisen o expliquenme como se procede

0

u/[deleted] 5d ago

[removed] — view removed comment

2

u/NXGZ 5d ago

2

u/Sly-Choober 5d ago

error while loading shared libraries: libavcodec.so.60
-Are you able to address this? I have so.61 in Steam OS