Decompilation, reimplementation or recompilation?

By DecompHub · Updated · English

Choose a project by its intended output. Reconstructed source, a compatible replacement and a native executable can all be valuable, but they answer different questions. A shared game title does not make their progress measures interchangeable.

Matching decompilation

The goal is reconstructed source that compiles to the same machine code as a specified original build. Compiler version, settings and target revision matter. The decomp.me FAQ explains this comparison at function level. A successful scratch is evidence about that comparison, not a completion score for the entire program.

Choose this route when you want to study the original program’s structure or contribute matching code. Check what a report counts: bytes, functions, selected modules or another explicitly defined scope.

Reimplementation and compatibility

A reimplementation recreates behavior or interfaces without requiring an identical executable. Its success is better assessed through documented functionality and tests. ScummVM, for example, replaces supported game executables while using their game data. Compatibility is specific to the supported target and version.

Choose this kind of project when you need a usable replacement or want to improve behavior on supported systems. Do not turn a compatibility claim into a binary-matching percentage.

Static recompilation

Static recompilation translates an existing program’s instructions ahead of execution for a different environment. N64Recomp documents a workflow for N64 code and native executables; a complete target-specific port still needs integration around the translated code.

This can enable native play without first completing a manually reconstructed source project. It does not automatically explain the original source-level design. Read the target project’s own requirements rather than assuming the generic tool supports any game without additional work.

Disassembly and ports

Disassembly represents machine instructions as assembly. It can support analysis or reconstruction without producing high-level C or C++ source. A port adapts a program to another platform and may build on a decompilation, reimplementation or recompilation. The labels can overlap because they describe different stages of work.

In the catalogue, use work-type tags as starting points, then verify the upstream goal. The progress guide explains how to compare measurements without collapsing these distinctions.