# 《ICO》反编译：逐字节一致的 PAL 与日版 PlayStation 2 启动 ELF

> 以同一套源码和游戏原用的编译器版本，重建《ICO》PAL 版（SCES-50760）与日版（SCPS-11003）PlayStation 2 光盘的启动 ELF，并检查载入的每个字节以及整个 ELF 文件都与光盘的 SHA-1 一致。73 个只含数据的归档成员在构建时由使用者自己的 ELF 生成，因此大部分只读数据仍取自光盘而非源码。另有独立分支面向美版、韩版和 2001 年 8 月原型版，本目录收录的 ICO PC 移植即是这套源码的分叉。

- 类型：案例
- 目标：游戏
- 类别：独立重建案例
- 关联：独立重建项目
- 来源复核于：2026-10-19
- 收录于：2026-11-02
- 原始资源：<https://github.com/nathanialf/ico>
- 一手来源：<https://github.com/nathanialf/ico/blob/73f7365df143bc1ff48771af479fd68c66550d19/README.md>
- 目录页面：<https://awesomerea.org/zh/resources/ico-matching-decomp-case/>
- 记录 JSON：<https://awesomerea.org/resources/ico-matching-decomp-case/record.json>
- 英文版：[English](https://awesomerea.org/resources/ico-matching-decomp-case/index.md)

## 使用条件与局限

- 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 无关。

## 一手来源

1. <https://github.com/nathanialf/ico/blob/73f7365df143bc1ff48771af479fd68c66550d19/README.md>
2. <https://github.com/nathanialf/ico/blob/73f7365df143bc1ff48771af479fd68c66550d19/docs/LEGAL.md>
3. <https://github.com/nathanialf/ico/blob/73f7365df143bc1ff48771af479fd68c66550d19/docs/BUILDING.md>
4. <https://github.com/nathanialf/ico/blob/73f7365df143bc1ff48771af479fd68c66550d19/docs/TARGETS.md>
5. <https://github.com/nathanialf/ico/blob/73f7365df143bc1ff48771af479fd68c66550d19/docs/PORT.md>
6. <https://github.com/nathanialf/ico/blob/73f7365df143bc1ff48771af479fd68c66550d19/docs/pal/PROGRESS.md>
7. <https://github.com/nathanialf/ico/blob/73f7365df143bc1ff48771af479fd68c66550d19/config/sha1sums.pal.txt>
8. <https://github.com/nathanialf/ico/blob/73f7365df143bc1ff48771af479fd68c66550d19/.github/workflows/pages.yml>
9. <https://github.com/nathanialf/ico/blob/73f7365df143bc1ff48771af479fd68c66550d19/LICENSE>
10. <https://nathanialf.github.io/ico/>

## 同分区更多条目：游戏

- [《王国之心 358/2 Days》：逐字节一致的 Nintendo DS 反编译重建](https://awesomerea.org/zh/resources/kingdom-hearts-days-matching-decomp-case/index.md) · 案例
- [LEGO Island：源码重建与单独记录的精确重构建](https://awesomerea.org/zh/resources/lego-island-decomp-case/index.md) · 案例
- [《姆吉拉的假面》：生成一致美版 N64 ROM 的反编译重建](https://awesomerea.org/zh/resources/zelda-mm-decomp-case/index.md) · 案例
- [《马力欧卡丁车 Wii》：进行中的 PAL 版一致性反编译](https://awesomerea.org/zh/resources/mario-kart-wii-decomp-case/index.md) · 案例
- [《马力欧卡丁车：双重冲刺!!》：调试版 GameCube 一致性反编译](https://awesomerea.org/zh/resources/mario-kart-double-dash-decomp-case/index.md) · 案例
- [Mario Party 4：美版 GameCube 一致性反编译重建](https://awesomerea.org/zh/resources/mario-party-4-decomp-case/index.md) · 案例

## 关于此条目

说明已依据一手来源复核。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
