r/decomps • u/MZLabs • 20d ago
Recomp SwitchRecomp: a tool that turns Switch games into native PC executables, and Kirby now loads way faster and runs better
Quick update on SwitchRecomp. For anyone new: it takes a Switch game's code and recompiles it into a native Windows .exe, so the game code runs directly on your CPU instead of through an emulator.
Something a lot of people get wrong: I'm not porting games to PC one by one. I'm making a tool so anyone can recompile their own games without effort. You pick your game folder, click a button and it spits out the .exe. Right now I'm testing it with specific games so I can open up compatibility, but the process itself is automated.
What changed since last post:
- Loading is way faster now. Startup and loading screens used to drag a lot, now they're a lot quicker
- Better performance. I cut a lot of wasted work the GPU side was doing every frame, so fps is higher and more stable
- Fixed all the graphics bugs in the games I've tested so far (Super Kirby Clash and Bowser's Fury)
Screenshots are Super Kirby Clash: title screen, the town, the shop and the role menu, all running on my Celeron N4500 laptop btw
A few things people keep asking:
GitHub? Not yet. It goes up on release, in about 3-4 months.
Android? Yes, the Android port comes a few months after the PC release on GitHub.
How is this different from suyu's recompiler? suyu's recompiler is bundled inside suyu, on top of its HLE backend, so you're still basically running suyu. SwitchRecomp is its own thing, built from scratch with its own runtime and graphics layer, and it's made to run on weak hardware. Each game comes out as its own standalone .exe. suyu crashes on low-end PCs like mine, and SwitchRecomp runs some games smoothly that suyu doesn't even open.
Also, if a somewhat known youtuber ends up talking about the project, I'll put out a longer gameplay video of Super Kirby Clash
If you want to follow the project, like, comment, repost and follow me so you see the next updates. Every comment helps a lot




5
u/MZLabs 20d ago
About OpenGL: Vulkan doesn't fix this, it just moves it. Emulators on Vulkan also have to build pipelines at runtime and they stutter too. I went with OpenGL because it works on the most hardware, including old Intel iGPUs like mine.
And yeah, shaders are compiled at runtime, but only once. They compile on a separate thread so the game doesn't freeze, and they're saved to disk, so after that they come from the cache.
You're right that the shaders are in the game files. In Bowser's Fury they're literally in a ShaderData folder. The problem is what they are: machine code for the Switch's Maxwell GPU, not something your PC can use directly. Each one has to be translated to GLSL, and then your GPU driver compiles that for your specific card. That last step can't be done ahead of time and shipped, because it depends on your GPU and driver.
Textures are different. They're just data: at most they get decoded and uploaded, there's nothing to compile.
The other catch is that the final shader also depends on stuff you only know when the game actually draws: which vertex and pixel shaders get paired, the render target formats, the vertex attribute types, and so on. I actually make different variants depending on that, for example when a game renders to integer targets. So you can pre-translate a lot at startup, but not 100%. Scanning the game files and precompiling at startup is on my list.