MSH TAG v1.1 - four players in RetroArch
========================================

Four people, four Marvel heroes, on one PC or online. This download has everything except
RetroArch and your ROM: the MSH TAG core, the four-player installer and a launcher.

RetroArch's own FinalBurn Neo core reads two players for this game and doesn't know the
four-player set ("Romset is unknown"). The launcher always starts the MSH 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 Marvel Super Heroes ZIP in the extracted folder, next to
   PLAY MSH TAG 4P.cmd: msh.zip (the one Fightcade uses is fine, as long as it isn't
   patched), mshu.zip, msha.zip, mshjr1.zip or mshud.zip, with its key file inside.
   Also put your clean Marvel vs. Capcom ZIP (mvsc.zip) there if you have it: double
   teams then show Marvel vs. Capcom's meteor sky (read from your ZIP; nothing from it is
   in this download). Without it the stage stays.

4. Double-click PLAY MSH TAG 4P.cmd.
   The first time, it makes msh4p.zip (the four-player game) from your ZIP, finds
   RetroArch, copies the MSH 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 MSH TAG 4P.cmd.

Coming from v1: keep your clean ZIP next to PLAY MSH TAG 4P.cmd. The launcher sees that
your msh4p.zip was made by v1, renames it msh4p_before_v1.1.zip and makes the v1.1 game.
Online, everyone needs the v1.1 msh4p.zip.


IN THE GAME
-----------
There are no coin or Start buttons: P1 and P2 press HP+HK to join. P1 and P2 pick their
team's two fighters. P3 plays P1's second pick and P4 plays P2's, wherever that fighter is:
coming in on a tag, fighting on point, or beside the point in a double team.
Whoever is on point tags with HP+HK; the teammate takes over the fighter that comes in.
Start is not available, so no taunt and no Infinity Gem cycling in the four-player game.

  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
  L2                all three punches  LT
  R2                all three kicks    RT

Team moves (the gauge goes up to Level 3):
  HP+HK                         tag (also out of a normal or special that hit or was blocked)
  HP+HK while being hit         Counter Switch: 2 levels, or your red life and a tenth of your life
  B, DB, D + HP+HK when blocking crossover counter: 1 level
  L2 while blocking             push block (L2 is all three punches): free
  QCF + MP+MK                   snapback: 1 level
  QCB + HP+HK                   double team: 2 levels
  QCF + HP+HK                   team super: 2 levels
  HP+HK during a super          hyper tag: 1 more level


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


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

Ports 3 and 4 have nothing to map (every button shows ---)
    A two-player file is loaded (msh.zip or msh_tag_v1.1.zip). Four players need
    msh4p.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 msh4p.zip
    Your ZIP isn't a clean 951024 set, it's already patched, or its key file is missing.
    The installer's own message says which.

The installer reports $005E38 (life bar tiles) on a clean retail ROM
    Download this pack (v1.1) and extract it into a fresh folder.
    The old v1 installer misread retail data tables and rejected valid ROMs. This
    pack corrects the table reads and checks, retaining every ROM identity check.
    Run its launcher on your clean original ZIP; that original is only read.

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 msh4p.zip: drag your clean ZIP onto msh-tag-v1.1-4p-preview.cmd (Windows), or run
      python3 msh_tag_4p_patch.py /path/to/msh.zip
   Keep the name msh4p.zip.
2. Put the core in RetroArch: Main Menu > Load Core > Install or Restore a Core, and pick
   fbneo_mshtag_libretro.dll (Windows) or fbneo_mshtag_libretro.so (Linux). Copy
   fbneo_mshtag_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 - MSH TAG), then Load Content > msh4p.zip.

Linux: sh play_msh_tag_4p.sh does the same as the Windows launcher.
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_mshtag_libretro.dylib; put it next to play_msh_tag_4p.sh and run
          sh play_msh_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 msh4p.zip. The
same clean ZIP always gives the same file; different sets (msh and mshu, say) give
different files, so agree on one set, and all make it with mvsc.zip or all without. 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.


TWO PLAYERS
-----------
For two players use the two-player MSH TAG: it plays in Fightcade (msh.zip), in MAME,
and in this core.


WHAT'S IN THIS DOWNLOAD
-----------------------
  PLAY MSH TAG 4P.cmd            the Windows launcher: makes the game, installs the core,
                                 starts RetroArch with both
  msh-tag-v1.1-4p-preview.cmd      the four-player installer for Windows (the launcher runs it)
  msh_tag_4p_patch.py            the same installer in Python 3 (Linux, macOS, Windows)
  play_msh_tag_4p.sh             the launcher for Linux and macOS
  fbneo_mshtag_libretro.dll      the core for Windows (64-bit)
  fbneo_mshtag_libretro.so       the core for Linux (64-bit)
  fbneo_mshtag_libretro.info     its RetroArch info file (the name in Load Core)
  src/                           the core's source patch, the script that applies it, and
                                 build_core.sh
  FBNEO_LICENSE.txt              FinalBurn Neo's license, which applies to the core
No ROM data is included. The installer holds patch data and hashes, and checks that your
ZIP is a clean set before it writes anything.


TESTED -- MSH TAG v1.1, September 29, 2026
------------------------------------------
- Installers: actual clean msh, mshu, msha, mshjr1 and mshud sets pass complete MAME
  member identity checks in both the two-player and four-player installers (10 cases).
  Python and the Windows installer's own PowerShell part (run with PowerShell 7 on Linux)
  write identical members, the key included. Changing any byte the patch relies on is
  refused (39 checks per set, 41 for four players). The 951117 revision, a wrong key, a
  modified program and a wrong requested set are refused with nothing written. The
  original ZIPs are unchanged.
- Gameplay, in MAME 0.264 on the Phoenix mshud and the patched Euro msh:
  24 random two-player fights of 9,000 frames (1,230 tags, 38 double teams, gems): no
  crash, no hang. v1 crashed in 1 of the same 24, and in 1 of 3 arcade runs against
  Thanos's team (v1.1: 3 of 3 clean). The first game after power-on plays one round; a
  draw's final round starts both teams whole; a CPU team beaten with its partner on point
  is marked beaten by its first member; a fighter knocked out while leaving can't be
  tagged back in; Captain America's shield keeps his colors when he tags back in (both
  sides); on the Daily Bugle the reflections keep the stage's colors for every frame of a
  2,300-frame fight with tags (v1: 2,132 frames wrong); a fighter knocked out while its
  partner drops in, with the other team's last fighter going down, gets K.O. (both teams
  out: DOUBLE K.O.); a Soul Gem running at a tag goes on healing the fighter who comes in.
- Four players: the MSH TAG core (v1's Linux build, unchanged) on a v1.1 msh4p.zip made
  from the Euro set: P1 to P4 join, pick and drive their fighters, and ports 3 and 4 tag
  back.
- Still unverified: Windows PowerShell 5.1, cmd.exe and drag-and-drop, the Windows core
  on Windows, the RetroArch UI, Fightcade online play, four physical controllers, real
  hardware, and play on the USA, Asia and Japan sets (their installer outputs are
  checked byte for byte; play was tested on the Euro and Phoenix sets).

The Windows DLL and Linux SO are unchanged from v1: v1.1 changes the ROM patch only.
The launchers now set a v1 msh4p.zip aside and make the v1.1 one (checked on Linux; the
Windows launcher's new step is unverified).


LICENSE
-------
FinalBurn Neo's license applies to the core (FBNEO_LICENSE.txt): free and non-commercial.
The source changes are in src/.
