Guide
Decomp vs recomp: how fan PC ports work
Every native PC port of a console game starts from the same problem: the game only exists as machine code for one console. Fans solve it in a few ways. Of the 324 ports on PlayPorted, 198 are recomps, 77 are decomps, 38 are rebuilt engines and 11 are source ports.
The short answer
A decomp rewrites the game's code by hand until it compiles back into the exact original game, then ports that code to PC. A recomp runs the original machine code through a tool that translates it into C or C++ automatically. Decomps take years and give the cleanest result. Recomps can appear within weeks and keep getting better as the tools improve.
| Decomp | Recomp | |
|---|---|---|
| How it's made | People write C that compiles to the same bytes as the original | A tool translates each machine instruction into C or C++ |
| Time to first release | Usually years | Weeks to months once the tools support the console |
| Readable source | Yes, with names and structure | Mostly generated code |
| Mods and new features | Easiest, since the code can be changed freely | Common, through patches and mod loaders |
| Game data | Neither includes the game. Both need files from a copy you own. | |
Decompilation
Decompilers start from the game's binary and rewrite it function by function in C. A function counts as done only when it compiles to exactly the same bytes as the original, which is why teams publish a "matching" percentage. Once the whole game matches, it can be compiled for modern systems, and the port can add widescreen, high frame rates and mods directly in the code.
Examples: Ship of Harkinian (The Legend of Zelda: Ocarina of Time), 2 Ship 2 Harkinian (The Legend of Zelda: Majora's Mask), OpenGOAL (Jak and Daxter: The Precursor Legacy), sm64ex (Super Mario 64).
Static recompilation
A static recompiler reads the game's machine code ahead of time and translates it into C or C++, which is then compiled for PC. The graphics and sound chips are replaced by a modern renderer and audio layer. Tools like N64Recomp for the Nintendo 64 and ReXGlue for the Xbox 360 made this practical, which is why recomps make up most new ports.
Examples: Zelda64 Recomp (The Legend of Zelda: Majora's Mask), Unleashed Recompiled (Sonic Unleashed), Banjo: Recompiled (Banjo-Kazooie), Starfox64Recomp (Star Fox 64).
Rebuilt engines and source ports
A rebuild is a new engine written from scratch that loads the original game's data, without using its code. A source port builds on code the developers released themselves, as id Software did for Doom and Quake.
Examples: OpenLara (Tomb Raider), Cannonball (OutRun), OpenRCT2 (RollerCoaster Tycoon 2), Chocolate Doom (Doom), vkQuake (Quake), OpenJK (Star Wars Jedi Knight: Jedi Academy).
Browser ports
Any of these can be compiled to WebAssembly so the game runs in a web page. You load your own game files and they stay on your computer. PlayPorted lists 24 of them on the browser ports page.
Which one should I play?
Pick by status, not method. A playable recomp is a better experience today than an unfinished decomp. Each port's page on PlayPorted shows its status, systems and last release. The N64 list and the consoles page are good places to start.