# Decompilation, reimplementation or recompilation?

Author: DecompHub
Updated: 2026-10-10
Language: en
Canonical: https://decomphub.com/guides/decompilation-reimplementation-recompilation

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](https://www.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](https://docs.scummvm.org/en/latest/help/faq.html), 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](https://github.com/N64Recomp/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](https://app.decomphub.com/explore), use work-type tags as starting points, then verify the upstream goal. The [progress guide](/guides/understanding-decompilation-progress) explains how to compare measurements without collapsing these distinctions.
