{
  "added_at": "2026-10-28",
  "additional_evidence_urls": [
    "https://github.com/crowded-street/3sx/blob/bdc2cd351aad35d7e251a5a6d63a3368bd31cbaa/docs/building.md",
    "https://github.com/crowded-street/3sx/blob/bdc2cd351aad35d7e251a5a6d63a3368bd31cbaa/docs/statcheck.md",
    "https://github.com/crowded-street/3sx/blob/bdc2cd351aad35d7e251a5a6d63a3368bd31cbaa/docs/config.md",
    "https://github.com/crowded-street/3sx/blob/bdc2cd351aad35d7e251a5a6d63a3368bd31cbaa/docs/resources.md",
    "https://github.com/crowded-street/3sx/blob/bdc2cd351aad35d7e251a5a6d63a3368bd31cbaa/CMakeLists.txt",
    "https://github.com/crowded-street/3sx/blob/bdc2cd351aad35d7e251a5a6d63a3368bd31cbaa/build-deps.sh",
    "https://github.com/crowded-street/3sx/blob/bdc2cd351aad35d7e251a5a6d63a3368bd31cbaa/src/port/resources.c",
    "https://github.com/crowded-street/3sx/blob/bdc2cd351aad35d7e251a5a6d63a3368bd31cbaa/src/arcade/rom/rom.c",
    "https://github.com/crowded-street/3sx/tree/bdc2cd351aad35d7e251a5a6d63a3368bd31cbaa/src/port",
    "https://github.com/crowded-street/3sx/tree/bdc2cd351aad35d7e251a5a6d63a3368bd31cbaa/src/bin2obj",
    "https://github.com/crowded-street/3sx/blob/bdc2cd351aad35d7e251a5a6d63a3368bd31cbaa/tools/fcade-replays/README.md",
    "https://github.com/crowded-street/3sx/blob/bdc2cd351aad35d7e251a5a6d63a3368bd31cbaa/.agents/skills/compare-cps3-code/SKILL.md",
    "https://github.com/crowded-street/3sx/blob/bdc2cd351aad35d7e251a5a6d63a3368bd31cbaa/.agents/skills/compare-cps3-code/agents/openai.yaml",
    "https://github.com/crowded-street/3sx/blob/bdc2cd351aad35d7e251a5a6d63a3368bd31cbaa/.github/workflows/build_linux.yml",
    "https://github.com/crowded-street/3sx/blob/bdc2cd351aad35d7e251a5a6d63a3368bd31cbaa/.github/workflows/build_psp.yml",
    "https://github.com/crowded-street/3sx/blob/bdc2cd351aad35d7e251a5a6d63a3368bd31cbaa/.github/workflows/release.yml",
    "https://github.com/crowded-street/3sx/blob/bdc2cd351aad35d7e251a5a6d63a3368bd31cbaa/THIRD_PARTY_NOTICES.txt",
    "https://github.com/crowded-street/3sx/blob/bdc2cd351aad35d7e251a5a6d63a3368bd31cbaa/LICENSE",
    "https://github.com/crowded-street/3sx/releases/tag/rolling-pre-release",
    "https://github.com/crowded-street/3sx/milestone/1"
  ],
  "category": "reconstruction-cases",
  "description_en": "Builds Street Fighter III: 3rd Strike as native C for Windows, macOS and Linux, continuing the 3s-decomp PS2 decompilation, with SDL3 for video, input and audio and GekkoNet for rollback netplay. README stresses that it is neither a recompilation nor emulation. The port needs the player’s own PS2 game files and works toward arcade-accurate balance, which an optional Statcheck build tests against CPS3 RAM states recorded from Fightcade replays.",
  "description_zh": "延续 3s-decomp 的 PS2 反编译成果，将《街头霸王 III：3rd Strike》构建为可在 Windows、macOS 和 Linux 上运行的原生 C 程序，以 SDL3 处理画面、输入和声音，以 GekkoNet 实现回滚联机。README 强调它既不是重编译，也不是模拟。移植版需要玩家自备 PS2 游戏文件，并以接近街机版的平衡性为目标；可选的 Statcheck 构建会用 Fightcade 对战录像中记录的 CPS3 内存状态来检验这一点。",
  "entry_url": "https://awesomerea.org/resources/3sx-third-strike-native-port-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/3sx-third-strike-native-port-case/",
  "evidence_url": "https://github.com/crowded-street/3sx/blob/bdc2cd351aad35d7e251a5a6d63a3368bd31cbaa/README.md",
  "group": "cases",
  "id": "3sx-third-strike-native-port-case",
  "json_url": "https://awesomerea.org/resources/3sx-third-strike-native-port-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/3sx-third-strike-native-port-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/3sx-third-strike-native-port-case/index.md",
  "name": "3SX: a native Street Fighter III: 3rd Strike port continuing the PS2 decompilation",
  "name_zh": "3SX：延续 PS2 反编译的《街头霸王 III：3rd Strike》原生移植",
  "reconstruction_method": "port",
  "record_type": "resource",
  "relationship": "independent-reconstruction",
  "requirements": [
    "README calls 3SX a native port and a continuation of 3s-decomp, explicitly neither a recompilation nor emulation. At the reviewed commit the game code under src/sf33rd has no remaining INCLUDE_ASM stubs, and src/port supplies SDL3 platform, input and sound layers, including its own ADX decoder. This is a modified port: its goals include fixing balance regressions the PS2 version introduced, and the arcade-balance option is marked work in progress. The only release is a rolling pre-release rebuilt from main, and goals such as stable PC play and the arcade ROM as sole dependency remain on the 1.0 milestone.",
    "Play requires a legally obtained PS2 copy of Street Fighter III: 3rd Strike or Street Fighter Anniversary Collection: a startup wizard reads the user’s disc image, or SF33RD.AFS from it is placed in the resources folder, and release builds compare that file with a SHA-256 in resources.c. The arcade-balance option also needs the user’s sfiii3nr1.zip CPS3 ROM set. The tree ships no game archives, but src/bin2obj carries large C data tables from the decompilation.",
    "Prebuilt rolling releases cover Windows, macOS, and x86_64 and arm64 Linux. Source builds use CMake 3.24+ with Clang, after MSYS2 MinGW64 packages on Windows, the listed Ubuntu packages or Xcode Command Line Tools on macOS; build-deps.sh fetches and builds SDL3, SDL_net, GekkoNet, libcdio, minizip-ng and TF-PSA-Crypto. CMake and CI also carry a PSP branch built with Docker tooling.",
    "Pull-request CI only builds the Windows, macOS, Linux and PSP targets. Arcade accuracy is checked with the optional Statcheck build: tools/fcade-replays, described as a reverse-engineering helper for Fightcade’s replay stream, downloads replays; a custom FBNeo fork records per-frame CPS3 RAM dumps; and Statcheck stops at the first mismatch in health, positions, stun, super-art meter, timer or round phase. The reviewed tree publishes no Statcheck results.",
    "The repository carries an agent skill with a Codex interface file. It directs a coding agent to compare local functions with a CPS3 program through a read-only Ghidra MCP server, mark each function’s parity and add CPS3 behaviour behind the arcade-balance flag. LICENSE is AGPL-3.0. THIRD_PARTY_NOTICES lists GPLv3+ libcdio with zlib, BSD-2-Clause, MIT and Apache-2.0 components, the game and its assets keep their own rights, and README says the project does not condone piracy."
  ],
  "requirements_zh": [
    "README 称 3SX 是原生移植、是 3s-decomp 的延续，并明确表示它既不是重编译也不是模拟。在所审提交中，src/sf33rd 下的游戏代码已没有残留的 INCLUDE_ASM 占位，src/port 提供基于 SDL3 的平台、输入和声音层，包括自行实现的 ADX 解码器。这是经过修改的移植版：其目标包括修复 PS2 版引入的平衡性退化，而街机平衡选项仍标注为进行中。唯一的发布是随 main 分支重建的滚动预发布版；稳定的 PC 体验、以街机 ROM 作为唯一依赖等目标仍列在 1.0 里程碑中。",
    "游玩需要合法取得的 PS2 版《街头霸王 III：3rd Strike》或 Street Fighter Anniversary Collection：启动向导读取使用者的光盘镜像，或将其中的 SF33RD.AFS 放入 resources 文件夹；发布版构建会将该文件与 resources.c 中的 SHA-256 比对。街机平衡选项还需要使用者自备的 sfiii3nr1.zip CPS3 ROM。仓库不含游戏归档文件，但 src/bin2obj 中有来自反编译项目的大型 C 数据表。",
    "滚动预发布版提供 Windows、macOS 以及 x86_64 和 arm64 Linux 的预编译程序。源码构建使用 CMake 3.24+ 与 Clang：Windows 需先安装 MSYS2 MinGW64 软件包，Linux 需列出的 Ubuntu 软件包，macOS 需 Xcode 命令行工具；build-deps.sh 会下载并构建 SDL3、SDL_net、GekkoNet、libcdio、minizip-ng 和 TF-PSA-Crypto。CMake 和 CI 还包含借助 Docker 工具构建的 PSP 分支。",
    "拉取请求的 CI 只构建 Windows、macOS、Linux 和 PSP 目标。与街机版的一致性由可选的 Statcheck 构建检查：tools/fcade-replays（自述为分析 Fightcade 录像数据流的逆向辅助工具）下载录像，定制的 FBNeo 分支记录逐帧的 CPS3 内存转储，Statcheck 在体力、位置、晕眩值、超必杀槽、计时器或回合阶段首次不一致时停止。所审代码树未公布 Statcheck 结果。",
    "仓库包含一个附带 Codex 界面文件的智能体技能，指示编程智能体通过只读的 Ghidra MCP 服务器，将本地函数与 CPS3 程序对比，标注每个函数的一致程度，并在街机平衡开关下加入 CPS3 行为。LICENSE 为 AGPL-3.0。THIRD_PARTY_NOTICES 列出 GPLv3+ 的 libcdio，以及 zlib、BSD-2-Clause、MIT 和 Apache-2.0 许可的组件；游戏及其素材各自保留权利，README 表示项目不纵容盗版。"
  ],
  "targets": [
    "game"
  ],
  "url": "https://github.com/crowded-street/3sx",
  "verification": "source-reviewed",
  "verified_at": "2026-10-19"
}
