{
  "added_at": "2026-11-02",
  "additional_evidence_urls": [
    "https://github.com/nathanialf/ico/blob/73f7365df143bc1ff48771af479fd68c66550d19/docs/LEGAL.md",
    "https://github.com/nathanialf/ico/blob/73f7365df143bc1ff48771af479fd68c66550d19/docs/BUILDING.md",
    "https://github.com/nathanialf/ico/blob/73f7365df143bc1ff48771af479fd68c66550d19/docs/TARGETS.md",
    "https://github.com/nathanialf/ico/blob/73f7365df143bc1ff48771af479fd68c66550d19/docs/PORT.md",
    "https://github.com/nathanialf/ico/blob/73f7365df143bc1ff48771af479fd68c66550d19/docs/pal/PROGRESS.md",
    "https://github.com/nathanialf/ico/blob/73f7365df143bc1ff48771af479fd68c66550d19/config/sha1sums.pal.txt",
    "https://github.com/nathanialf/ico/blob/73f7365df143bc1ff48771af479fd68c66550d19/.github/workflows/pages.yml",
    "https://github.com/nathanialf/ico/blob/73f7365df143bc1ff48771af479fd68c66550d19/LICENSE",
    "https://nathanialf.github.io/ico/"
  ],
  "category": "reconstruction-cases",
  "description_en": "Rebuilds the boot ELFs of ICO’s PAL (SCES-50760) and Japanese (SCPS-11003) PlayStation 2 discs from one source tree with the game’s original compiler versions, and checks that every loaded byte and the whole ELF file match the disc’s SHA-1. The 73 data-only archive members are generated at build time from the user’s own ELF, so most read-only data still comes from the disc rather than from source. Separate branches target the USA, Korean and August 2001 prototype builds, and the catalog’s ICO PC port is a fork of this tree.",
  "description_zh": "以同一套源码和游戏原用的编译器版本，重建《ICO》PAL 版（SCES-50760）与日版（SCPS-11003）PlayStation 2 光盘的启动 ELF，并检查载入的每个字节以及整个 ELF 文件都与光盘的 SHA-1 一致。73 个只含数据的归档成员在构建时由使用者自己的 ELF 生成，因此大部分只读数据仍取自光盘而非源码。另有独立分支面向美版、韩版和 2001 年 8 月原型版，本目录收录的 ICO PC 移植即是这套源码的分叉。",
  "entry_url": "https://awesomerea.org/resources/ico-matching-decomp-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/ico-matching-decomp-case/",
  "evidence_url": "https://github.com/nathanialf/ico/blob/73f7365df143bc1ff48771af479fd68c66550d19/README.md",
  "group": "cases",
  "id": "ico-matching-decomp-case",
  "json_url": "https://awesomerea.org/resources/ico-matching-decomp-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/ico-matching-decomp-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/ico-matching-decomp-case/index.md",
  "name": "ICO decompilation: byte-identical PAL and Japanese PlayStation 2 boot ELFs",
  "name_zh": "《ICO》反编译：逐字节一致的 PAL 与日版 PlayStation 2 启动 ELF",
  "reconstruction_method": "matching-decompilation",
  "record_type": "resource",
  "relationship": "independent-reconstruction",
  "requirements": [
    "README reports every section of both targets identical to its base ELF; .rodata is about 9.5% from source and 90.5% generated from the disc, and .data about 73% from source. The Japanese build is an earlier link of the same program, kept as VERSION_JPN blocks in the shared PAL-based tree, while kor, ntsc and aug6 are separate single-target branches not yet merged into main. The output is a PS2 boot ELF and ROM image, not a PC port.",
    "Each target needs the user’s own disc image, the PAL .iso or the Japanese .bin/.cue, from which the build extracts the boot ELF and checks it against config/sha1sums. docs/LEGAL.md excludes disc images, boot ELFs, assets, data tables and bulk symbol or map tables from the repository, and forbids leaked SDKs and leaked source as inputs. It says the Sony runtime libraries reconstructed under sce/ were written from the shipped instructions using the SDK’s public naming, and the newlib and libgcc members follow their published source.",
    "Builds on 64-bit Linux with 32-bit libraries and multilib gcc, Python 3, mips-linux-gnu-objcopy and network access on the first run. tools/setup.sh fetches ee-gcc 2.9-991111-01 and the SCE ee-as from decomp.me’s compiler releases, builds GNU ld 2.10 with two patches and builds a patched ps2dev dvp-as for the five VU1 microprograms; README says nothing comes from a Sony SDK.",
    "./build.sh ends with tools/check_elf.py --gate, which compares every allocated section with the base ELF by address and requires the whole-file SHA-1 to match; progress badges and the dashboard are regenerated from the built ELF and link map. The only CI workflow publishes that dashboard, and building needs a disc that CI does not have.",
    "MIT covers the project’s own code, scripts and documentation and grants no rights in the game, its data or Sony and Team Ico property; the toolchain components keep their GPL licences. README states the project is unaffiliated with Sony Interactive Entertainment or Team Ico."
  ],
  "requirements_zh": [
    "README 报告两个目标的每个段都与其基准 ELF 一致；其中 .rodata 约 9.5% 来自源码、90.5% 由光盘生成，.data 约 73% 来自源码。日版是同一程序较早的一次链接，以 VERSION_JPN 代码块保存在共享的、以 PAL 版为基础的源码树中；kor、ntsc 和 aug6 则是尚未并入 main 的独立单目标分支。产物是 PS2 启动 ELF 和 ROM 镜像，而非 PC 移植。",
    "每个目标都需要使用者自己的光盘镜像，即 PAL 版 .iso 或日版 .bin/.cue；构建会从中提取启动 ELF，并对照 config/sha1sums 校验。docs/LEGAL.md 规定仓库不得包含光盘镜像、启动 ELF、素材、数据表以及成批的符号表或映射表，并禁止以泄露的 SDK 或源码作为输入。该文档称 sce/ 下重建的索尼运行库是依据发售版中的指令编写的，命名沿用 SDK 的公开名称，newlib 与 libgcc 成员则依照其公开源码。",
    "在 64 位 Linux 上构建，需要 32 位库和 multilib gcc、Python 3、mips-linux-gnu-objcopy，首次运行还需联网。tools/setup.sh 从 decomp.me 的编译器发布中获取 ee-gcc 2.9-991111-01 和 SCE ee-as，构建打了两个补丁的 GNU ld 2.10，并为五个 VU1 微程序构建打过补丁的 ps2dev dvp-as；README 称这些工具均不来自索尼 SDK。",
    "./build.sh 最后运行 tools/check_elf.py --gate，按地址比较每个已分配的段与基准 ELF，并要求整个文件的 SHA-1 一致；进度徽章和进度面板依据构建出的 ELF 与链接映射重新生成。唯一的 CI 工作流只发布该面板，构建所需的光盘 CI 并不具备。",
    "MIT 适用于项目自身的代码、脚本和文档，不授予对游戏、其数据或索尼与 Team Ico 财产的任何权利；工具链组件保留各自的 GPL 许可。README 声明项目与索尼互动娱乐或 Team Ico 无关。"
  ],
  "targets": [
    "game"
  ],
  "url": "https://github.com/nathanialf/ico",
  "verification": "source-reviewed",
  "verified_at": "2026-10-19"
}
