Star on GitHubStar1.1k stars

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.

Report an outdated entry Suggest a translation fix

Primary sources

  1. README.md GitHub · GRAnimated/MinecraftLCE · Revision 959e150
  2. docs/BUILDING.md GitHub · GRAnimated/MinecraftLCE · Revision 959e150
  3. docs/CONTRIBUTING.md GitHub · GRAnimated/MinecraftLCE · Revision 959e150
  4. data/mcswitch_functions.csv GitHub · GRAnimated/MinecraftLCE · Revision 959e150
  5. tools/setup.py GitHub · GRAnimated/MinecraftLCE · Revision 959e150
  6. tools/config.toml GitHub · GRAnimated/MinecraftLCE · Revision 959e150
  7. .gitmodules GitHub · GRAnimated/MinecraftLCE · Revision 959e150
  8. .github/workflows/test-compile.yml GitHub · GRAnimated/MinecraftLCE · Revision 959e150
  9. .github/workflows/update-progress.yml GitHub · GRAnimated/MinecraftLCE · Revision 959e150

More in Games

All 318 entries in GamesGames case studies (239)

↑↓ move↵ open⌘↵ new tab