Case study
MinecraftLCE: an early-stage Minecraft: Nintendo Switch Edition decompilation
Decompiles Minecraft: Nintendo Switch Edition v1.0.17, a Legacy Console Edition release, into C++ that is compared function by function with the original executable using a patched Clang 4.0.1 and the open-ead Switch decompilation tools. The README explains the choice of the Switch build for its matchable Clang toolchain and type information, with names ported from the symbol-bearing Wii U Edition. At the reviewed commit the function list marks about 11% of functions decompiled, most of them matching; the result cannot run the game.
- Targets
- Game
- Category
- Independent reconstruction cases
- Relationship
- Independent reconstruction project
- Sources reviewed
Requirements & limits
- README describes a work-in-progress decompilation of Minecraft: Nintendo Switch Edition v1.0.17 that cannot be used to play the game. At the reviewed commit data/mcswitch_functions.csv lists 57,972 functions: 6,279 matching, 224 non-matching and 51,469 not yet decompiled, the 11.217% that a workflow writes into the GitHub description. Matched functions are checked individually; there is no whole-executable rebuild.
- Supply the main NSO executable from your own Minecraft: Nintendo Switch Edition v1.0.17 update; the Wii U Edition’s Minecraft.Client.rpx (Patch 35, v560) is recommended only for porting symbols. README says these executables will never be provided in the repository and no game assets are included.
- Documented for Linux or WSL (with macOS also intended): Python 3.6+, Ninja, CMake 3.13+, ccache, llvm-objdump, libncurses5, a Rust toolchain and the listed Python modules. tools/setup.py converts the executable, downloads Clang 4.0.1 from the LLVM releases and applies the committed libc++ patches; submodules supply open-ead’s nx-decomp-tools, nnheaders and musl and the stb image library, and lib/ vendors libpng and zlib.
- tools/check compares compiled functions with the original and tools/common/progress.py summarises the function list. CI lints, compiles the project without the game and publishes progress counted from the committed function list, so matching status is project-reported.
- No license file is present and GitHub detects none; Minecraft belongs to Microsoft and Mojang, and vendored libraries keep their own licenses. README says Microsoft-licensed Java Edition mappings cannot be used and notes that projects whose research was not clean-room have been taken down.
About this entry
The description was reviewed against primary sources.
Primary sources
- README.md GitHub · GRAnimated/MinecraftLCE · Revision 959e150
- docs/BUILDING.md GitHub · GRAnimated/MinecraftLCE · Revision 959e150
- docs/CONTRIBUTING.md GitHub · GRAnimated/MinecraftLCE · Revision 959e150
- data/mcswitch_functions.csv GitHub · GRAnimated/MinecraftLCE · Revision 959e150
- tools/setup.py GitHub · GRAnimated/MinecraftLCE · Revision 959e150
- tools/config.toml GitHub · GRAnimated/MinecraftLCE · Revision 959e150
- .gitmodules GitHub · GRAnimated/MinecraftLCE · Revision 959e150
- .github/workflows/test-compile.yml GitHub · GRAnimated/MinecraftLCE · Revision 959e150
- .github/workflows/update-progress.yml GitHub · GRAnimated/MinecraftLCE · Revision 959e150
More in Games
- Ocarina of Time: decompilation with MD5-checked ROM builds for 16 versions · Case study
- Paper Mario: matching Nintendo 64 decompilation for four releases · Case study
- Paper Mario: The Thousand-Year Door: an early matching GameCube decompilation · Case study
- Perfect Dark: matching Nintendo 64 decompilation · Case study
- Petari: a matching Super Mario Galaxy decompilation · Case study
- Phantom Hourglass: an early-stage matching Nintendo DS decompilation · Case study