{
  "added_at": "2026-10-28",
  "additional_evidence_urls": [
    "https://github.com/crowded-street/3s-decomp/blob/be9b9bc69dc19822a8eca9ce3e72ba560d5a3835/docs/builde-guide.md",
    "https://github.com/crowded-street/3s-decomp/blob/be9b9bc69dc19822a8eca9ce3e72ba560d5a3835/docs/decompiling.md",
    "https://github.com/crowded-street/3s-decomp/blob/be9b9bc69dc19822a8eca9ce3e72ba560d5a3835/Makefile",
    "https://github.com/crowded-street/3s-decomp/blob/be9b9bc69dc19822a8eca9ce3e72ba560d5a3835/config/anniversary/sfiii.anniversary.yaml",
    "https://github.com/crowded-street/3s-decomp/blob/be9b9bc69dc19822a8eca9ce3e72ba560d5a3835/tools/compare_bytes.py",
    "https://github.com/crowded-street/3s-decomp/blob/be9b9bc69dc19822a8eca9ce3e72ba560d5a3835/cri-progress.md",
    "https://github.com/crowded-street/3s-decomp/blob/be9b9bc69dc19822a8eca9ce3e72ba560d5a3835/src/anniversary/sf33rd/Source/Game/end_20.c#L321-L322",
    "https://github.com/crowded-street/3s-decomp/blob/be9b9bc69dc19822a8eca9ce3e72ba560d5a3835/src/anniversary/sf33rd/Source/Game/MTRANS.c#L1145-L1146",
    "https://github.com/crowded-street/3s-decomp/blob/be9b9bc69dc19822a8eca9ce3e72ba560d5a3835/config/cps3/sfiii3n.yaml",
    "https://github.com/crowded-street/3s-decomp/blob/be9b9bc69dc19822a8eca9ce3e72ba560d5a3835/tools/requirements-python.txt",
    "https://github.com/crowded-street/3s-decomp/blob/be9b9bc69dc19822a8eca9ce3e72ba560d5a3835/.gitmodules",
    "https://github.com/crowded-street/3s-decomp/blob/be9b9bc69dc19822a8eca9ce3e72ba560d5a3835/include/cri/cri_xpts.h",
    "https://github.com/crowded-street/3s-decomp/blob/be9b9bc69dc19822a8eca9ce3e72ba560d5a3835/LICENSE",
    "https://github.com/crowded-street/3s-decomp/commit/be9b9bc69dc19822a8eca9ce3e72ba560d5a3835"
  ],
  "category": "reconstruction-cases",
  "description_en": "Decompiles the PlayStation 2 executable of Street Fighter III: 3rd Strike from Street Fighter Anniversary Collection into C that period Metrowerks and EE GCC compilers rebuild, then compares the rebuilt executable word by word with the user’s original. README reports the game code fully decompiled and the CRI middleware partly so. The separate 3SX native port describes itself as this project’s continuation.",
  "description_zh": "将 Street Fighter Anniversary Collection 中《街头霸王 III：3rd Strike》的 PlayStation 2 可执行文件反编译为 C 源码，用当年的 Metrowerks 与 EE GCC 编译器重新构建，再将重建出的可执行文件与使用者自备的原文件逐字比较。README 报告游戏代码已全部反编译，CRI 中间件部分完成。另有独立的 3SX 原生移植，自称是本项目的延续。",
  "entry_url": "https://awesomerea.org/resources/sfiii-3rd-strike-ps2-decomp-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/sfiii-3rd-strike-ps2-decomp-case/",
  "evidence_url": "https://github.com/crowded-street/3s-decomp/blob/be9b9bc69dc19822a8eca9ce3e72ba560d5a3835/README.md",
  "group": "cases",
  "id": "sfiii-3rd-strike-ps2-decomp-case",
  "json_url": "https://awesomerea.org/resources/sfiii-3rd-strike-ps2-decomp-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/sfiii-3rd-strike-ps2-decomp-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/sfiii-3rd-strike-ps2-decomp-case/index.md",
  "name": "3S Decomp: a byte-compared PS2 decompilation of Street Fighter III: 3rd Strike",
  "name_zh": "3S Decomp：逐字比对的《街头霸王 III：3rd Strike》PS2 反编译重建",
  "reconstruction_method": "matching-decompilation",
  "record_type": "resource",
  "relationship": "independent-reconstruction",
  "requirements": [
    "README reports the game code fully decompiled and the CRI middleware partly decompiled, with most file-system and sound functions the game uses matching; cri-progress.md checks off 497 of the 503 CRI functions it lists. At the reviewed commit, two game functions (sea_write and mlt_obj_trans_rgb_ext) and 39 of 52 CRI C files still include assembly in the PS2 build, and PS2 SDK and GCC library code is out of scope. The output is the PS2 executable, not a PC port.",
    "Building needs THIRD_U.BIN from the user’s own copy of the game; the split configuration records its SHA-1 as cf58495054c31ad852175c66e9ca04d5094f000e, and make split derives the assembly and linker script from it. The decompiling guide also relies on the executable’s DWARF debug data, dumped with decomp-toolkit, for signatures and local variables. A separate split_cps3 target for the CPS3 arcade version needs a user-supplied arcade ROM set and has only a code-segment configuration.",
    "The build guide covers Linux (Debian packages with i386 support, MIPS binutils, and a Python venv with splat64 0.29.0 and spimdisasm 1.35.0) and macOS through the provided Dockerfile. make setup_tools downloads Metrowerks mwccps2 3.0b38 and EE GCC 2.96 from decomp.me’s compiler releases plus the wibo loader for Windows tools; m2c, asm-differ, mwccgap and saturn-splitter are git submodules.",
    "A successful build ends with compare_bytes.py checking the rebuilt executable against the original from offset 0x80 to 0x478A00 and printing “Files match ✅”. That check tolerates 163 listed words in about 20 game and CRI functions, attributed to register and operand swaps, assert line numbers, string encoding, a misplaced nop and a call misalignment, so equivalence is near-byte-level by the project’s own check rather than a whole-file hash. The latest commit removed the GitHub Actions workflows.",
    "LICENSE is AGPL-3.0 for the project’s code. The original executable and game content keep their own rights; include/cri carries headers marked “CRI Middleware SDK” and “Copyright (c) … CRI-MW”, and the vendored zlib keeps its own license."
  ],
  "requirements_zh": [
    "README 报告游戏代码已全部反编译，CRI 中间件部分反编译，游戏所用的大部分文件系统和声音函数已一致；cri-progress.md 所列 503 个 CRI 函数中已勾选 497 个。在所审提交中，PS2 构建仍有两个游戏函数（sea_write 和 mlt_obj_trans_rgb_ext）及 52 个 CRI C 文件中的 39 个包含汇编；PS2 SDK 和 GCC 库代码不在范围内。产物是 PS2 可执行文件，不是 PC 移植。",
    "构建需要使用者从自己的游戏副本中取得 THIRD_U.BIN；拆分配置记录其 SHA-1 为 cf58495054c31ad852175c66e9ca04d5094f000e，make split 据此生成汇编和链接脚本。反编译指南还借助该可执行文件中的 DWARF 调试数据（用 decomp-toolkit 导出）获取函数签名和局部变量。另有面向 CPS3 街机版的 split_cps3 目标，需要使用者自备街机 ROM，目前只有代码段配置。",
    "构建指南涵盖 Linux（需启用 i386 支持的 Debian 软件包、MIPS binutils，以及装有 splat64 0.29.0 和 spimdisasm 1.35.0 的 Python 虚拟环境），macOS 则使用所提供的 Dockerfile。make setup_tools 从 decomp.me 的编译器发布中下载 Metrowerks mwccps2 3.0b38 和 EE GCC 2.96，并下载用于运行 Windows 工具的 wibo；m2c、asm-differ、mwccgap 和 saturn-splitter 是 git 子模块。",
    "构建成功后，compare_bytes.py 将重建的可执行文件与原文件在偏移 0x80 至 0x478A00 范围内比对，并输出 “Files match ✅”。该检查容许约 20 个游戏与 CRI 函数中列明的 163 个字存在差异，原因注明为寄存器与操作数互换、断言行号、字符串编码、一处错位的 nop 和一处调用错位，因此按项目自身的检查，一致性接近字节级，而非整个文件的哈希一致。最新提交移除了 GitHub Actions 工作流。",
    "LICENSE 为 AGPL-3.0，适用于项目代码。原可执行文件和游戏内容仍有各自权利约束；include/cri 中有标注 “CRI Middleware SDK” 及 “Copyright (c) … CRI-MW” 的头文件，内置的 zlib 也保留其自身许可证。"
  ],
  "targets": [
    "game"
  ],
  "url": "https://github.com/crowded-street/3s-decomp",
  "verification": "source-reviewed",
  "verified_at": "2026-10-19"
}
