SUPER STREET FIGHTER II TURBO / CPS-2
Two fighters.
More room.
Super Turbo, with a partner. Tag into a kick, fight side by side in Variable Cross, or call both supers. v3 adds a true expanded view and makes the handoffs more consistent.
ROM-free patches for your own clean World or Japan 940223 set. v2.1 stays available. This is a development preview.
WATCH / JAPANESE NARRATION · ENGLISH SUBTITLES
See the handoff. Follow the code.
Seven minutes, twenty seconds: real gameplay, a trip through the CPS-2 program, and the work behind 384 → 512. The film covers this two-player development preview and its remaining limits.
01 / LEARN THREE INPUTS
Same buttons. Three ways in.
HP is heavy punch. HK is heavy kick. Quarter-circle directions follow the way your fighter is facing. Release HP and HK before another tag press.
TAG / NO FULL GAUGE REQUIRED
Bring your partner in.
HP + HKThe point jumps out. The partner flies toward the opponent with an entry kick. After a normal or special hits or is blocked, the tag can cancel its recovery once hitstop ends.
No whiff, super, air or throw tag cancel.
VARIABLE CROSS / FULL TWO-LEVEL GAUGE
Fight together.
↓ ↙ ← + HP + HKBoth fighters stay on screen while the TIME bar lasts. In two-player mode, one stick drives both fighters. Supers are free during Variable Cross.
TEAM SUPER / FULL TWO-LEVEL GAUGE
Call both supers.
↓ ↘ → + HP + HKThe partner begins the super sequence; the point follows the partner's flash. It uses the existing team-super spend rules.
02 / THE HANDOFF MATTERS
A smaller, more consistent v3.
- Damage and defense survive the handoff. Tag, KO and partner creation retain the intended damage-level setup instead of losing it when an object is cleared.
- Entry protection ends on landing. The airborne partner is protected; the entry kick can be blocked. Grounded play resumes normally.
- Variable Cross changes the stage's colors. The background turns gray while either team is active. Fighters, HUD and effects keep their color.
- Small character fixes. Cammy's Hooligan and Fei Long's Chicken Wing recognition, New Hawk's crouching MP head box, and Ken / New Sagat reversal-super selection. These are fixes, not a general rebalance.
The older character types and Akuma remain selectable. No Old Honda throw-tech change, new moves, pushblock or snapback is claimed.

INSIDE THE BOARD / 16 SHORT CHAPTERS
Follow a button press into the code.
Choose one question. See the cause, the code, and the result. The optional 3D board follows ROM03, ROM04 and ROM07 into the CPU, game memory and display.
Source-based logical illustration, not electrical telemetry. The A/B stack is a reference model; it is not a measured SSF2T board population.
01 / MAP
Seven windows. Three changed files.
CAUSE
A new game behavior needs code redirects and a place for extension routines.
CODE / SOURCE SUMMARY
03–09: seven fixed 512 KiB files 03 + 04: stock hooks and data edits 07: new code, tables and profile marker
Source: freeze4 output manifests / per-rom-change-map-v1.json
RESULT
The same-sized files contain different bytes. Graphics and audio ROM members are unchanged.
EXACT BYTE COUNTS / WORLD 2P EXPANDED · OTHER PROFILES DIFFER
Input, world and control hooks
sfxe.03c164 changed bytes
of a 524,288-byte file
000000..07FFFFCharacter, camera and render hooks
sfxe.04a158 changed bytes
of a 524,288-byte file
080000..0FFFFFTAG, VC, HUD and profile extension
sfxe.0715,478 changed bytes
of a 524,288-byte file
200000..27FFFFBrowse all 16 questions
Default: World 2P expanded. Four-player download remains held. Stock-pace work is deferred to the next release. Use the matched install steps below.
03 / LOOK AT THE EDGES
384 → 512. Not a stretched image.
The expanded profile draws 64 more columns on each side of the original view: 512 × 224 instead of 384 × 224. With the CPS pixel aspect corrected, it displays at 16:9. Fighter geometry stays the same.
STANDARD / 384 × 224 / 4:3

EXPANDED / 512 × 224 / 16:9

The camera moves.
The camera and its clamps work with the wider viewport. The stage's own world boundaries stay the same.
The background keeps up.
Tile streaming and parallax cover the additional columns. HUD anchors and partner entry trajectories follow the expanded view.
Objects leave safely.
Projectile retirement follows the visible edges, with cleanup around the 60-slot object pool. This is not an unlimited projectile mode.
Choose the expanded ROM profile and matched S06 core, then reload the content. Changing a frontend aspect-ratio setting does not add these columns; geometry is not a live toggle.
04 / PICK THE EMULATOR FIRST
Two paths. Keep their filenames separate.
Both patch packages check your own clean input and create a separate output. Extract the package before running its installer. Never patch an earlier TAG output. No game ROM or decryption key is distributed.
Keep the original game's name.
Use the standard two-player patch for the regular 384-column view. Expanded and four-player profiles require the matched custom core.
2P standard patch ↓- Start with your clean 940223 ZIP.
ssf2t.zip(World), orssf2xjr1.zip(Japan). Keep a backup outside the emulator folder. - Run the standard installer.Windows: drag the ZIP onto the extracted
.cmd. macOS/Linux: run the included Python patcher with your ZIP path. - Rename only a copy of the output.
ssf2t_tag_v3.zip → ssf2t.zip, orssf2xjr1_tag_v3.zip → ssf2xjr1.zip. - Put it in the emulator's ROM folder.Back up that folder's clean ZIP first. For the Japan clone, keep the clean parent
ssf2t.zipalongside it for shared graphics and sound. - Test locally before anything else.Offline core and MAME diagnostics are not proof of Fightcade online compatibility. Online play is unverified.
Use the matched S06 core.
This walkthrough uses World 2P expanded. The supplied binary targets macOS 26 or later on Apple Silicon. Older macOS versions and Windows/Linux binaries are not validated or included.
Matched S06 gameplay and replay footage is validated through the libretro harness. The existing local RetroArch 1.10.3 configuration did not successfully present the game; this GUI walkthrough remains unverified.
- Patch a clean full World set.Expanded inputs must include the full verified set, not just a compact clone.
- Run the extracted Python patcher.
python3 ssf2t-tag-v3-2p-expanded-preview.py "/path/to/ssf2t.zip"
The output isssf2tw3.zip. Keep that exact filename. - Load the supplied core.RetroArch → Load Core →
fbneo_ssf2t_libretro.dylib. It is the SSF2T TAG v3 S06 core, not the stock FBNeo core. - Load the patched content.Load Content →
ssf2tw3.zip. Bind directions and all six attack buttons. Expanded content should display at 16:9. - Use saves from this profile.Changing profile or program revision requires a reload and fresh saves. Earlier formats and mismatched content states are refused.
World or Japan? Here are the exact names.
The last column is for the matched RetroArch core. Standard Fightcade/MAME instead uses the original set name shown above.
| Set | Profile | Patcher output | RetroArch content |
|---|---|---|---|
| World | 2P · standard | ssf2t_tag_v3.zip | ssf2tv3.zip |
| Japan | 2P · standard | ssf2xjr1_tag_v3.zip | ssf2xjv3.zip |
| World | 2P · expanded | ssf2tw3.zip | same name |
| Japan | 2P · expanded | ssf2xjw3.zip | same name |
| World | 4P · standard · held | ssf2t4v3.zip | same name |
| World | 4P · expanded · held | ssf2t4w3.zip | same name |
What four-player mode will require · download held
P1 + P3 vs P2 + P4. Four-player profiles are World only, with standard or expanded view, and require the matched core and all four input ports. P3/P4 own each team's second member.
A fresh HP+HK press joins or challenges when that side is outside its human fight. During a fight, HP+HK tags. If a partner has no separate human owner, the first player's stick drives both fighters during Variable Cross.
The current four-player development archive has a known controller sampling issue affecting the combined HP+HK input. Its download is held until a separate correction is checked. These names explain the layout; they are not a release recommendation.
Download hashes and what is included
ssf2t-tag-v3-2p-standard-preview-patch.zip
161,140 bytes · SHA-25691332ec7d864fb0bbecdefc853e9399294802c404a5a785c5942f59458f01201
ssf2t-tag-v3-2p-expanded-preview-patch.zip
162,888 bytes · SHA-25692efd70d467f420cb78a5354650289300bb3105b1e1e2a5b7881d15e2833beeb
ssf2t-tag-v3-matched-core-macos-arm64-preview.zipec5085979e52f99ed7280b41e387a2588ae76a2ffe7f96061294f45f5513e574
Patch packages contain the Python patcher, Windows installer, patch specification and README. The separate core package contains the S06 binary validated through the libretro harness, rebuild recipe and licenses. It targets macOS 26 or later on Apple Silicon. No ROM, key or raw saved state is included.
05 / GET UNSTUCK
If something doesn't load.
The patcher rejects my ZIP.
Use a clean supported 940223 input with the required members and key already inside your own archive. Do not rename a patched output to hide its identity, remove the checks, or patch over v2.1. The refusal preserves your original.
RetroArch says the game is unknown.
Load the supplied S06 core, then use the exact content filename in the table. Standard 2P outputs need the RetroArch rename; expanded outputs do not. A stock FBNeo core does not know these custom drivers.
I selected 16:9 but the view is still cropped.
Load the expanded profile, not the standard ROM with a stretched frontend setting. Reload content after changing profiles. Only the expanded program and matched core draw 512 columns.
An old save refuses to load.
Make a new save with the matching program, profile and S06 core. Cross-profile, different-program and older-format refusals are intentional. Keep the old core and old saves together if you need v2.1.
I am on Windows or Linux.
The patchers are included, but the supplied custom core targets macOS 26 or later on ARM64. Standard 2P has the offline Fightcade/MAME path above. Expanded and 4P require a suitable custom core build; no tested Windows DLL or Linux shared object is supplied.
I am on an older macOS version.
The supplied Apple Silicon binary is built for macOS 26 or later. Older systems need a core rebuilt for their deployment target; that path is unverified. The standard 2P patch and its offline Fightcade/MAME route are separate from this custom-core download.
RetroArch opens a black window.
Check macOS 26 or later, the exact S06 core and the content filename above. Our existing RetroArch 1.10.3 configuration loaded the core module but did not present gameplay. Native frontend success remains unverified; include your app version, video driver and a verbose log when reporting this problem.
The game pace feels different.
That is a known limitation, not an installation error. Stock pace parity is deferred to the next release. Do not change emulator clocks to make this preview appear validated.
06 / KEEP YOUR PREVIOUS SETUP
v2.1 stays available.
The v3 development patch does not replace your existing files or require you to abandon the earlier preview. Keep each version in its own folder.
What the tests do and do not establish
The canonical v3/S06 diagnostics include all six original profiles, 48 seeded runs of 60,000 frames, and 11,904 paired completed-frame replays comparing serialized state, CPU, physical object banks, RAM, RGB and PCM. That replay scope uses 48 kHz, interpolation 1 and low-pass off. It does not establish arbitrary callback-time restores, rewind, rollback, online play or physical hardware behavior.
The later four-player input report is a separate functional limitation and holds its download despite those earlier checks. Competitive balance and full stock pace are not established. The private performance experiments are not the downloadable two-player build.
How I built it · engineering notes
Why the handoff needed work
I wanted two-on-two Super Turbo without replacing the game underneath it. Each side picks two fighters, including the same fighter twice. HP+HK tags; red health recovers on the bench; the CPU gets a partner too.
The awkward part is ownership. A partner becomes a stock fighter object, receives input, lands, gets hit and eventually leaves. v3 keeps damage and defense setup across that handoff, ends entry protection on landing, and retains a blockable entry kick. Cammy, Fei Long, New Hawk, Ken and New Sagat get narrow recognition or selection fixes. This is not a broad competitive rebalance.
With a full two-level gauge, quarter-circle back + HP+HK starts Variable Cross. Quarter-circle forward + HP+HK starts a team super. Directions are relative to facing; release both heavy buttons before the next press. During Variable Cross, the stage turns gray and the fighters keep their color.
Follow the code through the board
The interactive board guide breaks the implementation into sixteen short questions: which program files changed, why the +$58 level word survives a clear, how Variable Cross selects gray stage colors, and how camera, tile streaming and the custom core agree on 512 columns. Start with the static cause–code–result cards; load the local 3D board only if you want the camera and chip views. It pauses offscreen and offers held views for reduced motion.
The width is in the game
Expanded is 512×224 instead of 384×224: 64 extra columns per side. The CPS pixel aspect makes that a 16:9 display. It is not a crop or a frontend stretch.
That means changing camera clamps, background tile streaming, parallax, HUD anchors, partner entry trajectories and projectile retirement. The stage itself keeps its original world boundaries. Object cleanup still works within the 60-slot pool. The expanded program needs the matched S06 core; switching geometry means loading another profile and reloading content.
Install without mixing versions
The standard 2P patch and expanded 2P patch take your own clean World or Japan 940223 archive. The patchers write a separate copy and refuse unsupported inputs. No ROM or key is included.
For Fightcade/MAME, use standard 2P. Copy the patched output as ssf2t.zip or ssf2xjr1.zip after backing up the clean emulator file. The Japan clone needs its clean ssf2t.zip parent alongside it. Fightcade online is unverified.
For RetroArch World expanded, run python3 ssf2t-tag-v3-2p-expanded-preview.py "/path/to/ssf2t.zip", then load ssf2tw3.zip with the supplied Apple Silicon S06 core (macOS 26 or later). Japan expanded is ssf2xjw3.zip. Standard 2P RetroArch outputs must be renamed: ssf2t_tag_v3.zip to ssf2tv3.zip, or ssf2xjr1_tag_v3.zip to ssf2xjv3.zip. Earlier or different-profile saves require the matching old core or fresh saves.
The core binary targets macOS 26.0. Older macOS systems need an appropriately rebuilt core and remain unverified. The matched S06 libretro footage is validated, but our existing RetroArch 1.10.3 GUI configuration loaded the core module without successfully presenting gameplay. That frontend attempt is not a successful installation demo.
Four-player World profiles use P1+P3 versus P2+P4, but their download is held for a controller sampling correction. Do not treat the old four-player diagnostic passes as validation of that correction.
Keep the limits visible
The stock-pace fix is deferred to the next release. The v3 development download does not claim perfect stock pace, verified online play, rewind, rollback or hardware support. Competitive balance still needs human playtesting. The v2.1 package remains available.
S06 preserves audio, graphics latches and displayed palette state that earlier save formats missed. The completed-frame replay proof has explicit audio and frontend settings; it is not a promise that every possible save timing is interchangeable. Keep the exact core, content profile and saves together.
Earlier previews: v2 and v2.1
These are historical results for the earlier previews, not extra v3 validation. v2 added Variable Cross, team supers, homing entries, tag cancels, duplicate picks and a four-player profile. v2.1 added Japan 940223 support while preserving the World program produced by v2. The v2 video shows that earlier build.
The Japan clone uses its own six program files and ssf2xj.key, with shared graphics, audio and the seventh program file supplied by the World parent. The earlier code/data comparison found no World/Japan difference at a hook site or in the payload’s occupied AI-table regions. The v3 patch still verifies its own supported clean input; a renamed ZIP does not establish compatibility.
The v2.1 record contains 41 Japan scenarios on each of FBNeo and MAME (82 passes), eight seeded 60,000-frame runs and 113 installer cases. The v2 record separately contains 41 scenarios on each backend, five four-player scenarios on each backend, and sixteen seeded runs split between two-player and four-player profiles. Those older headless outcomes do not validate v3’s current four-player input behavior or prove Fightcade online, a native RetroArch frontend or physical hardware support.
The historical v2 four-player setup remains separate from this page’s two-player v3 downloads. Keep its original core and saves together. The current v3 four-player package is held for the controller sampling correction.
Work note
The aim is readable, playable Super Turbo with a partner. The board guide shows program-file changes and high-level execution flow. Its glowing chips illustrate the explanation; they are not measurements of electrical activity and do not imply that the physical CPU, graphics or sound chips were replaced.
This is an unaffiliated fan modification. Super Street Fighter II Turbo and its characters belong to their respective owners. The download contains patch data; you supply your own lawful game dump.
Windows installers have PowerShell 7 diagnostic coverage; native Windows PowerShell 5.1 and physical hardware remain unverified. The two-player downloads are development previews; four-player v3 downloads remain held.
