Case study
3SX: a native Street Fighter III: 3rd Strike port continuing the PS2 decompilation
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.
Requirements & limits
- 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, and this collection built or ran nothing.
- 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; the reviewed files do not say how much code was written this way, and no REA use is established. 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.
About this entry
- Type
- Case study
- Category
- Independent reconstruction cases
- Relationship
- Independent reconstruction project
- Targets
- Game
Sources reviewed
The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.
Primary sources
- README.md GitHub · crowded-street/3sx · Revision bdc2cd3
- docs/building.md GitHub · crowded-street/3sx · Revision bdc2cd3
- docs/statcheck.md GitHub · crowded-street/3sx · Revision bdc2cd3
- docs/config.md GitHub · crowded-street/3sx · Revision bdc2cd3
- docs/resources.md GitHub · crowded-street/3sx · Revision bdc2cd3
- CMakeLists.txt GitHub · crowded-street/3sx · Revision bdc2cd3
- build-deps.sh GitHub · crowded-street/3sx · Revision bdc2cd3
- src/port/resources.c GitHub · crowded-street/3sx · Revision bdc2cd3
- src/arcade/rom/rom.c GitHub · crowded-street/3sx · Revision bdc2cd3
- src/port GitHub · crowded-street/3sx · Revision bdc2cd3
- src/bin2obj GitHub · crowded-street/3sx · Revision bdc2cd3
- tools/fcade-replays/README.md GitHub · crowded-street/3sx · Revision bdc2cd3
- .agents/skills/compare-cps3-code/SKILL.md GitHub · crowded-street/3sx · Revision bdc2cd3
- .agents/skills/compare-cps3-code/agents/openai.yaml GitHub · crowded-street/3sx · Revision bdc2cd3
- .github/workflows/build_linux.yml GitHub · crowded-street/3sx · Revision bdc2cd3
- .github/workflows/build_psp.yml GitHub · crowded-street/3sx · Revision bdc2cd3
- .github/workflows/release.yml GitHub · crowded-street/3sx · Revision bdc2cd3
- THIRD_PARTY_NOTICES.txt GitHub · crowded-street/3sx · Revision bdc2cd3
- LICENSE GitHub · crowded-street/3sx · Revision bdc2cd3
- https://github.com/crowded-street/3sx/releases/tag/rolling-pre-release
- https://github.com/crowded-street/3sx/milestone/1
More in Games
- re4: a byte-identical decompilation of the Resident Evil 4 GameCube debug build · Case study
- Super Smash Bros. Brawl: an early matching Wii decompilation · Case study
- re-plants-vs-zombies: decompiling and modernizing Plants vs. Zombies GOTY · Case study
- Sonic Advance 1 & 2: a matching GBA decompilation with widescreen ports · Case study
- Paleblood: a functional decompilation of Bloodborne with its own runtime · Case study
- Pikmin 2: a fully matched GameCube decompilation across five releases · Case study