{
  "added_at": "2026-10-18",
  "additional_evidence_urls": [
    "https://github.com/pret/pokeheartgold/blob/5bb4b3b4961cbf0f8a42360c58a3c045d8535069/INSTALL.md",
    "https://github.com/pret/pokeheartgold/blob/5bb4b3b4961cbf0f8a42360c58a3c045d8535069/Makefile",
    "https://github.com/pret/pokeheartgold/blob/5bb4b3b4961cbf0f8a42360c58a3c045d8535069/meson.build",
    "https://github.com/pret/pokeheartgold/blob/5bb4b3b4961cbf0f8a42360c58a3c045d8535069/heartgold.us/rom.sha1",
    "https://github.com/pret/pokeheartgold/blob/5bb4b3b4961cbf0f8a42360c58a3c045d8535069/soulsilver.us/rom.sha1",
    "https://github.com/pret/pokeheartgold/blob/5bb4b3b4961cbf0f8a42360c58a3c045d8535069/CONTRIBUTING.md",
    "https://github.com/pret/pokeheartgold/blob/5bb4b3b4961cbf0f8a42360c58a3c045d8535069/.github/workflows/build.yml",
    "https://github.com/pret/pokeheartgold/blob/5bb4b3b4961cbf0f8a42360c58a3c045d8535069/tools/devtools/get_metroskrew.sh",
    "https://github.com/pret/pokeheartgold/tree/5bb4b3b4961cbf0f8a42360c58a3c045d8535069/subprojects",
    "https://github.com/pret/pokeheartgold/tree/5bb4b3b4961cbf0f8a42360c58a3c045d8535069/files",
    "https://github.com/mid-kid/metroskrew/releases/tag/0.1.3"
  ],
  "category": "reconstruction-cases",
  "description_en": "Rebuilds the US Nintendo DS releases of Pokémon HeartGold and SoulSilver from a work-in-progress disassembly in which part of the code has been decompiled to C. Each default build checks the ARM9 and ARM7 binaries, the filesystem and the complete ROM against per-game SHA-1 manifests. README warns that, because decompilation is incomplete, edits that change code or data layout can crash the game.",
  "description_zh": "以进行中的反汇编项目重建美版 Nintendo DS《宝可梦 心金／魂银》，其中部分代码已反编译为 C。每次默认构建都会按各游戏的 SHA-1 清单校验 ARM9 与 ARM7 二进制、文件系统及完整 ROM。README 提醒，由于反编译尚未完成，改变代码或数据布局的修改可能导致游戏崩溃。",
  "entry_url": "https://awesomerea.org/resources/pokemon-heartgold-soulsilver-disassembly-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/pokemon-heartgold-soulsilver-disassembly-case/",
  "evidence_url": "https://github.com/pret/pokeheartgold/blob/5bb4b3b4961cbf0f8a42360c58a3c045d8535069/README.md",
  "group": "cases",
  "id": "pokemon-heartgold-soulsilver-disassembly-case",
  "json_url": "https://awesomerea.org/resources/pokemon-heartgold-soulsilver-disassembly-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/pokemon-heartgold-soulsilver-disassembly-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/pokemon-heartgold-soulsilver-disassembly-case/index.md",
  "name": "Pokémon HeartGold and SoulSilver: a work-in-progress, checksum-matched DS disassembly",
  "name_zh": "《宝可梦 心金／魂银》：校验一致的进行中 DS 反汇编项目",
  "reconstruction_method": "matching-decompilation",
  "record_type": "resource",
  "relationship": "independent-reconstruction",
  "requirement_facets": [
    "scope",
    "prerequisites",
    "prerequisites",
    "testing",
    "license"
  ],
  "requirements": [
    "README calls this a work-in-progress disassembly of the US releases; it warns that symbol names and code structure can change, and that edits altering the size or layout of any function or data structure can crash the game because the ROM is not fully decompiled. At the reviewed commit asm/ still holds 283 assembly files beside 406 C files in src/, and CONTRIBUTING.md describes NONMATCHING C kept beside the inline-assembly versions used for matching builds. Outputs are pokeheartgold.us.nds and pokesoulsilver.us.nds, not a PC port.",
    "The documented build reads no original ROM: the DS filesystem’s graphics, model, text and data files are committed under files/. The target images are identified by SHA-1 (HeartGold 4fcded0e2713dc03929845de631d0932ea2b5a37, SoulSilver f8dc38ea20c17541a43b58c5e6d18c1732c7e582), and README links their No-Intro records. Only the contributor asmdiff tool refers to a user-supplied base ROM.",
    "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 builds HeartGold and make soulsilver builds SoulSilver.",
    "make runs Meson tests after building that check the ARM9 main binary, ARM7 binary, filesystem and complete ROM against SHA-1 manifests; the Makefile tells modders they may drop that check after their first build. CI builds and checks both games and runs a progress calculation on pushes. Matching hashes establish identity for these two US images.",
    "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. CONTRIBUTING.md prohibits LLM-generated contributions apart from narrow, disclosed exceptions."
  ],
  "requirements_zh": [
    "README 称其为美版的进行中反汇编项目；提醒符号名与代码结构可能变化，并因 ROM 尚未完全反编译，改变任何函数或数据结构大小或布局的修改都可能使游戏崩溃。在所审提交中，asm/ 仍有 283 个汇编文件，src/ 中有 406 个 C 文件；CONTRIBUTING.md 说明 NONMATCHING 的 C 实现与一致性构建所用的内联汇编版本并存。产物为 pokeheartgold.us.nds 和 pokesoulsilver.us.nds，不是 PC 移植。",
    "文档所述的构建不读取原 ROM：DS 文件系统中的图像、模型、文本和数据文件提交在 files/ 下。目标镜像以 SHA-1 标识（心金 4fcded0e2713dc03929845de631d0932ea2b5a37，魂银 f8dc38ea20c17541a43b58c5e6d18c1732c7e582），README 链接其 No-Intro 条目。只有贡献者使用的 asmdiff 工具会用到使用者自备的原 ROM。",
    "INSTALL.md 涵盖 WSL2（推荐）、WSL1、MSYS2、macOS 以及 Debian、Arch 和 Fedora Linux；所需软件包括 ARM GCC 工具链、bison、flex、Ninja、Python 3、libpng 和 32 位 libc，macOS 另需 Wine。Makefile 会克隆 Meson 1.12.0，并下载 metroskrew 0.1.3 发行版，其仓库称之为通过重新链接移植到 Linux 的专有 Windows 版 Metrowerks ARM 编译器；Meson 拉取固定版本的 NitroSDK、NitroSystem、NitroDWC、NitroWiFi 和 libvct 子项目。make 构建心金，make soulsilver 构建魂银。",
    "make 构建完成后运行 Meson 测试，按 SHA-1 清单校验 ARM9 主程序、ARM7 程序、文件系统及完整 ROM；Makefile 说明改版作者可在首次构建后去掉这项检查。CI 构建并校验两款游戏，推送时还会计算进度。哈希一致确认这两个美版镜像的一致性。",
    "仓库没有顶层许可证文件，GitHub 也未识别出许可证；部分附带工具有各自的许可证，metroskrew 及 ntrtwl 的 SDK 仓库在 GitHub 上均未声明许可证。SDK 库和原游戏内容仍受其权利人约束。CONTRIBUTING.md 禁止由大语言模型生成的贡献，仅有少数需完整披露的例外。"
  ],
  "targets": [
    "game"
  ],
  "url": "https://github.com/pret/pokeheartgold",
  "verification": "source-reviewed",
  "verified_at": "2026-10-18"
}
