MSH TAG v1 - 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.


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.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 September 27, 2026 pack again 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-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-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.


RETAIL COMPATIBILITY CORRECTION -- September 27, 2026
----------------------------------------------------
- Actual clean msh, mshu, msha, mshjr1 and mshud sets pass complete MAME member
  identity checks and both the two-player and four-player installers (10 cases).
- Python and the exact Windows installer's PowerShell body, run under PowerShell 7
  on macOS, produce identical members, including the matching key, in all 10 cases.
- Every replacement hook is checked in its correct DATA or decrypted opcode view.
  Changing a dependency byte is still refused (380 controls). Wrong-only keys,
  modified programs and unsupported revisions are refused without writing output
  in Python and PowerShell. Original clean ZIP hashes remain unchanged.
- A fresh macOS build of the published MSH TAG core booted actual Euro msh and
  Phoenix mshud outputs in both modes. Ordinary inputs selected two heroes per side
  and tagged out and back on both teams. Four-player return tags used ports 3 and 4.
  All five copied DATA tables matched the clean ROM at fight start and after tags.
- This is bounded compatibility/HUD/tag coverage. The old v1 feature videos and
  broader Phoenix feature tests predate this correction; they are not a complete
  new retail gameplay test matrix.
- Still unverified: Windows PowerShell 5.1/cmd.exe/drag-and-drop, the Windows core on
  Windows, the RetroArch UI, Fightcade online play, four physical controllers,
  real hardware, and native gameplay of USA/Asia/Japan retail builds.

The packaged Windows DLL and Linux SO are unchanged from the original v1.
The correction is in the ROM patch/installer. The fresh macOS core above is a
local diagnostic build of the same published source patch, not an added download.


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