SSF2T TAG v2 - four players in RetroArch
========================================

Two teams of two in Super Street Fighter II Turbo, one player per fighter, on one PC or
online. This download has everything except RetroArch and your ROM: the SSF2T TAG core,
the four-player installer and a launcher.

RetroArch's own cores can't run it: they read two players for this game and don't know
the four-player set ("Romset is unknown"). The launcher always starts the SSF2T TAG core,
so you never pick a core yourself.


WINDOWS: START HERE
-------------------
1. Install RetroArch. It's free: https://www.retroarch.com > Download > Windows >
   Installer. Keep the folder it suggests (C:\RetroArch-Win64).

2. Unzip this download: right-click it > Extract All. RetroArch can't open the zip.

3. Put your clean ssf2t.zip in the extracted folder, next to PLAY SSF2T TAG 4P.cmd.
   The one Fightcade uses works (all 23 ROMs and ssf2t.key), as long as it isn't patched.

4. Double-click PLAY SSF2T TAG 4P.cmd.
   The first time, it makes ssf2t4p.zip (the four-player game) from your ssf2t.zip,
   finds RetroArch, copies the SSF2T TAG core into it and starts the game.
   If Windows says it protected your PC: More info > Run anyway.

5. Give each player a controller. Plug them all in first. In RetroArch press F1, then:
      Settings > Input > RetroPad Binds > Port 1 Controls > Device Index
   and pick player 1's pad. Do the same for Port 2, Port 3 and Port 4.
   Ports 1 and 3 are one team, ports 2 and 4 the other.
   Main Menu > Configuration File > Save Current Configuration keeps it.
   Press F1 again to go back to the game.

Next time, just double-click PLAY SSF2T TAG 4P.cmd.


IN THE GAME
-----------
No coins and no Start button: HP+HK joins (and challenges the CPU in the middle of a
one-player game). P1 and P2 pick their team's first fighter, P3 and P4 the second; the
same fighter twice is fine. Whoever picked a fighter drives it whenever it's on screen.
Nobody on port 3 or 4: that team's first player plays both, as in the two-player game.

In a fight:
  HP+HK            tag: the partner flies in at the opponent and kicks. Right after a
                   normal or special that hit or was blocked, HP+HK cancels it into the tag.
  QCB + HP+HK      with the gauge full: Variable Cross. The partner jumps in and both
                   fight until the TIME bar over the super bar runs out; the partner's
                   own player drives it, specials and supers too.
  QCF + HP+HK      with the gauge full: team super. Both fighters do their supers.

  RetroPad button  arcade button     on an Xbox pad
  Y                light punch       X
  X                medium punch      Y
  L                heavy punch       LB
  B                light kick        A
  A                medium kick       B
  R                heavy kick        RB


CHECK THAT IT'S THE RIGHT CORE
------------------------------
RetroArch's title bar, and the bottom line of its menu, say "(SSF2T TAG)". If they say
"FinalBurn Neo" without "(SSF2T TAG)", or another core's name, that's one of RetroArch's
own cores: close RetroArch and start with PLAY SSF2T TAG 4P.cmd.


IF SOMETHING'S WRONG
--------------------
"Romset is unknown"
    One of RetroArch's own cores is running, or the game file was renamed. Start with
    PLAY SSF2T TAG 4P.cmd. The four-player game must be called ssf2t4p.zip.

Ports 3 and 4 have nothing to map (every button shows ---)
    The two-player game is loaded (ssf2t.zip or ssf2t_tag_v2.zip). Four players need
    ssf2t4p.zip, which the launcher makes.

One player's controller doesn't move anybody
    That port has no controller. Set its Device Index (step 5).

The launcher says the installer didn't make ssf2t4p.zip
    Your ssf2t.zip isn't the clean, complete World 940223 set, or it's already patched.
    Use an unpatched one with all 23 ROMs and ssf2t.key. The installer's message says
    which file it didn't recognize.

The launcher can't find RetroArch
    Drag retroarch.exe, or its folder, into the launcher's window and press Enter. It
    remembers the place.


WITHOUT THE LAUNCHER, AND ON LINUX AND MACOS
--------------------------------------------
1. Make ssf2t4p.zip: drag your clean ssf2t.zip onto ssf2t-tag-v2-4p-preview.cmd
   (Windows), or run the Python patcher that's in this folder:
      python3 ssf2t_tag_4p_patch.py /path/to/ssf2t.zip
   Keep the name ssf2t4p.zip.
2. Put the core in RetroArch: Main Menu > Load Core > Install or Restore a Core, and pick
   fbneo_ssf2t_libretro.dll (Windows) or fbneo_ssf2t_libretro.so (Linux). Copy
   fbneo_ssf2t_libretro.info into RetroArch's info folder (Settings > Directory > Core
   Info shows where), so the core shows up under its name.
3. Load Core > Arcade (FinalBurn Neo - SSF2T TAG), then Load Content > ssf2t4p.zip.

Linux: sh play_ssf2t_tag_4p.sh does the same as the Windows launcher (it makes
       ssf2t4p.zip with the Python patcher the first time).
macOS: there's no ready-made macOS core yet. Open Terminal in the src folder and run
          sh build_core.sh
       It needs Xcode's command line tools (xcode-select --install). It builds
       fbneo_ssf2t_libretro.dylib and puts it next to play_ssf2t_tag_4p.sh.
       Then run  sh play_ssf2t_tag_4p.sh


FOUR PLAYERS ONLINE
-------------------
Parsec (the easiest): one player hosts. The host sets everything up as above and shares
the screen with Parsec. The three guests connect with Parsec and plug in their pads;
Parsec gives each of them a pad on the host's PC. The host sets Port 1 to their own pad
and Ports 2, 3 and 4 to the guests' pads, then saves the configuration. Only the host
needs the core and the ROM. For the least delay: the host on a wired connection,
RetroArch fullscreen, Vsync on.

RetroArch netplay: everyone needs this same download and makes their own ssf2t4p.zip
(the same clean ssf2t.zip always gives the same file). Before joining, each player turns
on Settings > User Interface > Show Advanced Settings, then sets Settings > Network >
Request Device to YES for their own port only (P1 port 1, P3 port 3, and so on). The host
uses Main Menu > Netplay > Host; the others join from Netplay > Refresh Netplay Host List.


WHAT'S IN HERE
--------------
PLAY SSF2T TAG 4P.cmd           the Windows launcher
play_ssf2t_tag_4p.sh            the Linux / macOS launcher
ssf2t-tag-v2-4p-preview.cmd     the four-player installer (Windows)
ssf2t_tag_4p_patch.py           the same installer in Python (any OS)
fbneo_ssf2t_libretro.dll        the SSF2T TAG core for Windows (64-bit)
fbneo_ssf2t_libretro.so         the SSF2T TAG core for Linux (x86-64)
fbneo_ssf2t_libretro.info       the core's name and details for RetroArch's menus
FBNEO_LICENSE.txt               FinalBurn Neo's license (non-commercial)
src/                            how the core is built: FinalBurn Neo's libretro source at a
                                pinned commit plus make_ssf2t_core.py's changes

The core is FinalBurn Neo (https://github.com/libretro/FBNeo) with three changes, all in
src/make_ssf2t_core.py: the four-player input list, the ssf2t4p game entry, and loading
that set's patched ROMs by name. Nothing here contains ROM data or the CPS-2 key.
Preview: four RetroPads through this core were tested with a scripted libretro frontend,
not in RetroArch itself; Windows, netplay and Parsec are untested.
