案例

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

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

使用条件与局限

  • 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 并不具备。一致只说明两个启动 ELF 相同,不涉及光盘上的其他文件或运行时行为,本合集也未进行任何构建。
  • MIT 适用于项目自身的代码、脚本和文档,不授予对游戏、其数据或索尼与 Team Ico 财产的任何权利;工具链组件保留各自的 GPL 许可。README 声明项目与索尼互动娱乐或 Team Ico 无关,所审来源未确立 AI 或 REA 的参与。

关于此条目

类型
案例
类别
独立重建案例
关联
独立重建项目
目标
游戏

来源复核于

说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。

报告条目过时 建议修正翻译

一手来源

  1. README.md GitHub · nathanialf/ico · 修订 73f7365
  2. docs/LEGAL.md GitHub · nathanialf/ico · 修订 73f7365
  3. docs/BUILDING.md GitHub · nathanialf/ico · 修订 73f7365
  4. docs/TARGETS.md GitHub · nathanialf/ico · 修订 73f7365
  5. docs/PORT.md GitHub · nathanialf/ico · 修订 73f7365
  6. docs/pal/PROGRESS.md GitHub · nathanialf/ico · 修订 73f7365
  7. config/sha1sums.pal.txt GitHub · nathanialf/ico · 修订 73f7365
  8. .github/workflows/pages.yml GitHub · nathanialf/ico · 修订 73f7365
  9. LICENSE GitHub · nathanialf/ico · 修订 73f7365
  10. https://nathanialf.github.io/ico/

同分区更多条目:游戏

游戏分区全部 242 项资源游戏案例(200)