Case study

Pokémon Platinum: a checksum-matched Nintendo DS decompilation

Reconstructs the US Nintendo DS release of Pokémon Platinum as C source that rebuilds revision 1 by default and revision 0 on request. The default make target runs Meson checks of the code binaries, filesystem and complete ROM against SHA-1 manifests. README still calls the project work in progress; its contributing guide says the code is entirely C but much of it remains obfuscated, leaving documentation and tooling as the main work.

Requirements and limitations

  • README calls this a WIP decompilation of US Pokémon Platinum. CONTRIBUTING.md states that the repository is 100% C code, although much of it is obfuscated, so current work is mainly documentation and tooling; at the reviewed commit asm/ holds only macro includes beside 1,013 C files in src/. Outputs are pokeplatinum.us.nds ROM images, not a PC port.
  • The documented build reads no original ROM: graphics, sound, text and data sources, including some prebuilt data, are committed under res/. Revision 1, the default, has SHA-1 0862ec35b24de5c7e2dcb88c9eea0873110d755c; ROM_REVISION=0 builds revision 0, SHA-1 ce81046eda7d232513069519cb2085349896dec7, which INSTALL.md describes as the original North American retail version with a GTS level-range display error that a later shipment patched. README links both No-Intro records.
  • INSTALL.md covers WSL2 (recommended), WSL1, MSYS2, macOS and Debian, Arch and Fedora Linux; packages include an ARM GCC toolchain, bison, flex, Ninja, Python 3, libpng and 32-bit libc, and macOS also needs Wine. The Makefile clones Meson 1.12.0 and downloads the metroskrew 0.1.3 release, which its repository describes as a relinked Linux port of the proprietary Windows Metrowerks ARM compiler; Meson fetches pinned NitroSDK, NitroSystem, NitroDWC, NitroWiFi and libvct subprojects. make debug builds a GDB-enabled ROM, for which INSTALL.md points to an overlay-aware binutils-gdb fork.
  • make runs Meson tests that check shared, revision-specific and ARM7 binaries, the filesystem and the complete ROM against SHA-1 manifests; make rom skips the checksum when code is modified. CI installs metroskrew and runs make check for the default revision. Matching hashes establish identity for the listed US images, not gameplay coverage; this collection did not build them.
  • The repository has no top-level license file and GitHub detects none; some bundled tools carry their own licenses, and the metroskrew and ntrtwl SDK repositories declare no license on GitHub. SDK libraries and original game content remain subject to their rights holders. The reviewed sources establish no AI or REA use, and no runtime reproduction is claimed.

About this entry

Type
Case study
Category
Independent reconstruction cases
Relationship
Independent reconstruction project
Targets
Game

Sources reviewed

The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.

Primary sources

  1. README.md GitHub · pret/pokeplatinum · Revision 1dc13dc
  2. INSTALL.md GitHub · pret/pokeplatinum · Revision 1dc13dc
  3. CONTRIBUTING.md GitHub · pret/pokeplatinum · Revision 1dc13dc
  4. Makefile GitHub · pret/pokeplatinum · Revision 1dc13dc
  5. meson.build GitHub · pret/pokeplatinum · Revision 1dc13dc
  6. meson.options GitHub · pret/pokeplatinum · Revision 1dc13dc
  7. platinum.us/rom_rev1.sha1 GitHub · pret/pokeplatinum · Revision 1dc13dc
  8. platinum.us/rom_rev0.sha1 GitHub · pret/pokeplatinum · Revision 1dc13dc
  9. .github/workflows/build.yml GitHub · pret/pokeplatinum · Revision 1dc13dc
  10. subprojects GitHub · pret/pokeplatinum · Revision 1dc13dc
  11. res GitHub · pret/pokeplatinum · Revision 1dc13dc
  12. https://github.com/mid-kid/metroskrew/releases/tag/0.1.3