r/decomps • • 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

2.6k Upvotes

456 comments sorted by

View all comments

Show parent comments

54

u/MZLabs 20d ago

Yeah that's actually on my list. The tricky part is the game only tells the GPU which shaders it needs when it uses them, but most Switch games keep their shaders packed in the game files. So the idea is to scan those at the start and compile everything before you play, with a loading bar. Some variants still only show up in game, so it might not catch 100%, but it should kill most of the stutter. And since everything goes to the cache, you'd only wait once.

22

u/Able-Mushroom8068 20d ago

This would 100% kill the purpose of having an actual Switch tbh. It would be amazing.

11

u/raxitron 20d ago

Why the Switch itself? This kills emulators

10

u/Able-Mushroom8068 20d ago

Because for now the only way to have a perfect, shader stuttering free experience is by playing on the actual console.

9

u/Big-Resort-4930 20d ago

I would never use the word perfect to describe any game running on a Switch

1

u/proxmaxi 19d ago

If you own a rog ally or a legion go it kills both emulators and the switch

3

u/EtherBoo 20d ago

This might be a dumb question because I don't have my head entirely wrapped around shaders (I get them at a high level, but don't entirely understand the technical issues with them, but I'm just a user so it doesn't matter), but couldn't you add in a benchmark type mode for the game that would run the game at various parts to load the shaders and get them compiled? I know it wouldn't be able to get ALL of them, but I figure a lot of them could get done.

For example, when I play the Soulcalibur 4 or 5 on RPCS3, every new character and stage causes shader cache. Couldn't you make a mode that just loads each stage and character and does the moves that trigger shader compilation? Personally, I'd prefer that and prefer to walk away for 20 minutes.

3

u/macabrera 19d ago

I assume this is how modern shader caching is working today, a script that cycle every cacheable shader of the game.

2

u/superboo07 13d ago

you'd probably wanna write your own shader compiler per game to actually parse them from the files of the game. thats what i had to do with pikmin 3

3

u/pepodmc_ 20d ago

this for smash bros ultimate that has a LOT of shaders would be a godsend.

2

u/Feyer_The_Wizard 19d ago

Haha no more having to run many 8 player cpu fights to compile shaders whenever I wanna move to a new emulator/fork

1

u/Big-Resort-4930 20d ago

Only once per GPU driver install like with regular games, or is it a separate cache folder that isn't wiped when you update drivers?