{
  "added_at": "2026-11-02",
  "additional_evidence_urls": [
    "https://github.com/pedro-javierf/NTRGhidra/blob/9e0674c0b36ef9b816dbe7833a68b17327edc1b9/src/main/java/ntrghidra/NTRGhidraLoader.java",
    "https://github.com/pedro-javierf/NTRGhidra/blob/9e0674c0b36ef9b816dbe7833a68b17327edc1b9/src/main/java/ntrghidra/plugin/NTRGhidraPlugin.java",
    "https://github.com/pedro-javierf/NTRGhidra/blob/9e0674c0b36ef9b816dbe7833a68b17327edc1b9/src/main/java/ntrghidra/ARM9.java",
    "https://github.com/pedro-javierf/NTRGhidra/blob/9e0674c0b36ef9b816dbe7833a68b17327edc1b9/fidb/README.md",
    "https://github.com/pedro-javierf/NTRGhidra/blob/9e0674c0b36ef9b816dbe7833a68b17327edc1b9/build.gradle",
    "https://github.com/pedro-javierf/NTRGhidra/blob/9e0674c0b36ef9b816dbe7833a68b17327edc1b9/.github/workflows/build_ntrghidra.yml",
    "https://github.com/pedro-javierf/NTRGhidra/blob/9e0674c0b36ef9b816dbe7833a68b17327edc1b9/LICENSE",
    "https://github.com/pedro-javierf/NTRGhidra/releases/tag/v1.5.1"
  ],
  "category": "game-analysis",
  "description_en": "Ghidra loader and plugin for Nintendo DS programs. It checks the .nds header, maps either the ARM9 or the ARM7 binary at its RAM address together with the console's memory regions and I/O register labels, decompresses SDK-compressed ARM9 code and overlays, and fills the overlays the user selects at import, while an optional overlay-manager plugin swaps overlays in and out afterwards. The repository also keeps a small Ghidra Function ID database of NitroSDK 3.0 routines for function identification.",
  "description_zh": "面向 Nintendo DS 程序的 Ghidra 加载器与插件。它校验 .nds 文件头，把 ARM9 或 ARM7 二进制映射到其内存地址，并建立主机的内存区域和 I/O 寄存器标签；经 SDK 压缩的 ARM9 代码和覆盖模块（overlay）会被解压，导入时用户选中的覆盖模块会载入内容，可选的覆盖模块管理插件还能在导入后切换各覆盖模块。仓库另附一个小型 Ghidra Function ID 数据库，收录 NitroSDK 3.0 例程，用于识别函数。",
  "entry_url": "https://awesomerea.org/resources/ntrghidra/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/ntrghidra/",
  "evidence_url": "https://github.com/pedro-javierf/NTRGhidra/blob/9e0674c0b36ef9b816dbe7833a68b17327edc1b9/README.md",
  "group": "tools",
  "id": "ntrghidra",
  "json_url": "https://awesomerea.org/resources/ntrghidra/record.json",
  "kind": "tool",
  "markdown_url": "https://awesomerea.org/resources/ntrghidra/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/ntrghidra/index.md",
  "name": "NTRGhidra",
  "name_zh": "NTRGhidra Nintendo DS 程序 Ghidra 加载器",
  "record_type": "resource",
  "relationship": "foundation",
  "requirements": [
    "Latest release at review: v1.5.1, published 2026-03-24 as NTRGhidra-build.zip for Ghidra 12.0.4, and its tag is the reviewed master commit; earlier releases were built for individual Ghidra 10.x and 11.x versions, and the README names 12.0.4 as the latest supported Ghidra version. The zip installs from the Ghidra project window's File → Install Extensions, and the overlay manager is enabled separately under CodeBrowser's File → Configure → Miscellaneous. The README says the project is looking for maintainers and contributors.",
    "Source builds need a Ghidra installation: build.gradle applies Ghidra's buildExtension.gradle from GHIDRA_INSTALL_DIR, the README describes an Eclipse build with the GhidraDev extension, and a GitHub Actions workflow builds the zip with Gradle on every push and attaches it to new releases. The repository has no tests; src/test holds only a placeholder README.",
    "Input is a .nds file the user supplies; the repository contains no ROMs or BIOS files. On import the loader rejects files whose header CRC does not match, asks whether the file is a commercial Nintendo SDK title or homebrew, and asks whether to load the ARM9 or the ARM7 code; commercial titles must carry the expected Nintendo logo CRC and have their ARM9 binary decompressed. The overlay manager re-reads overlays only from the original file at its import path, or from a substitute whose MD5 and SHA-256 match it.",
    "The fidb folder holds nitrosdk3.0.fidb, a 2 KB Function ID database that its README describes as hashes of NitroSDK 3.0.0 functions from commercial games, covering crt0 and file-system routines in ARM code but not Thumb; the loader does not apply it automatically. The loader names its format Nintendo DS (NTR) and DSi (TWL), and the source carries DSi register and memory-region lists, but import maps only the DS ARM9 and ARM7 lists, and CRT0 autoload handling is marked as a TODO.",
    "Apache-2.0. The README credits GBATEK for DS technical information and Gericom's Every File Explorer for the original header and ARM9 decompression code."
  ],
  "requirements_zh": [
    "审阅时最新版本为 v1.5.1，于 2026-03-24 以 NTRGhidra-build.zip 形式发布，适用于 Ghidra 12.0.4，其标签即所审阅的 master 提交；更早的版本分别针对各个 Ghidra 10.x 和 11.x 版本构建，README 写明当前支持的最新 Ghidra 版本为 12.0.4。该 zip 需在 Ghidra 项目窗口的 File → Install Extensions 中安装，覆盖模块管理器则需另在 CodeBrowser 的 File → Configure → Miscellaneous 中启用。README 称项目正在寻找维护者和贡献者。",
    "从源码构建需要已安装的 Ghidra：build.gradle 会从 GHIDRA_INSTALL_DIR 引入 Ghidra 的 buildExtension.gradle，README 介绍的是借助 GhidraDev 扩展在 Eclipse 中构建，GitHub Actions 工作流则在每次推送时用 Gradle 构建 zip，并在创建新版本时附加到发布页。仓库没有测试，src/test 中只有一份占位 README。",
    "输入为使用者自行提供的 .nds 文件；仓库不含任何 ROM 或 BIOS 文件。导入时，加载器会拒绝文件头 CRC 不符的文件，并询问该文件是使用任天堂 SDK 的商业游戏还是自制程序，以及要载入 ARM9 还是 ARM7 代码；商业游戏须带有预期的任天堂标志 CRC，其 ARM9 二进制会被解压。覆盖模块管理器只会从导入时路径上的原始文件，或 MD5 与 SHA-256 均与之一致的替代文件中重新读取覆盖模块。",
    "fidb 文件夹中的 nitrosdk3.0.fidb 是一个 2 KB 的 Function ID 数据库，其 README 称收录的是商业游戏中 NitroSDK 3.0.0 函数的哈希，涵盖 ARM 代码中的 crt0 和文件系统例程，尚不支持 Thumb；加载器不会自动应用它。加载器将支持的格式命名为 Nintendo DS（NTR）和 DSi（TWL），源码中也有 DSi 寄存器和内存区域列表，但导入时只映射 DS 的 ARM9 和 ARM7 列表，CRT0 自动加载（autoload）处理也标为待办。",
    "采用 Apache-2.0 许可。README 致谢 GBATEK 提供的 DS 技术资料，以及 Gericom 的 Every File Explorer 提供最初的文件头与 ARM9 解压代码。"
  ],
  "targets": [
    "game"
  ],
  "url": "https://github.com/pedro-javierf/NTRGhidra",
  "verification": "source-reviewed",
  "verified_at": "2026-10-20"
}
