XCOTA TAG v1 (preview) -- 2v2 tag teams for X-Men: Children of the Atom (CPS-2)
==============================================================================

What it does
------------
- Each player picks two X-Men on the select screen. The first pick starts the fight.
  While you pick, "1:" and "2:" under your name show the team so far.
- Press HP+HK together (standing, walking or crouching) to tag, Marvel vs. Capcom style:
  your fighter leaps backward off your side of the screen, then your partner flies in
  from that edge with a flying kick and says their line when they land. The kick is a
  real attack (it hits if the opponent is close), and the partner can be hit once on
  screen. The main life bar always belongs to the fighter on screen; the small bar
  under it is the partner on the bench.
- When a fighter is knocked out and the partner is still standing, the partner flies in
  from the back edge.
  The match is one round: the first team to lose both fighters loses. On time over, the
  team with more total health wins.
- Against the CPU, every stage opponent gets a partner. Juggernaut and Magneto still fight
  alone. The arcade ladder, the bosses and the endings are the game's own.

Supported sets (clean and unmodified, one set per ZIP)
------------------------------------------------------
  xmcota     Euro 950331 (the MAME parent)
  xmcotau    USA 950105
  xmcotaj    Japan 950105
  xmcotar1d  Euro 950105, Phoenix Edition
Non-merged or split ZIPs are fine, with or without the key file. Merged ZIPs (several
revisions in one file), already-patched files and other revisions are refused.

How to patch
------------
Windows:      drag your clean ZIP onto xcota-tag-v1-preview.cmd
macOS/Linux:  python3 xcota_tag_patch.py /path/to/xmcota.zip

Either one writes <set>_tag_v1.zip and <set>_tag_v1.zip.receipt.json beside the input.
Your input ZIP is only read. Then:
  1. Keep your clean ZIP where it is.
  2. Copy <set>_tag_v1.zip into a separate emulator ROM folder and rename the copy to
     <set>.zip (for example xmcotau.zip).
  3. A split set (xmcotar1d usually is) also needs the parent xmcota.zip in that folder.
  4. MAME needs the key file inside the ZIP (xmcota.key, xmcotau.key, xmcotaj.key, or
     phoenix.key for xmcotar1d). If your ZIP had none, the patcher says so; add the one
     from your MAME set to the renamed copy.
MAME will report the changed ROMs as wrong checksums. That is expected for any patch.

What is in this package
-----------------------
  xcota-tag-v1-preview.cmd   Windows installer (runs the embedded PowerShell script)
  xcota_tag_patch.py         the same patch for macOS/Linux/Windows (Python 3.8+)
  xcota_tag_v1.spec.json     the patch itself: clean-member hashes, replacement bytes
                             and offsets, patched-member hashes
No ROM data is included. The replacement bytes are the new code (about 3 KB in the
05 program ROM, which was empty there) and twelve short jumps into it in the 03
program ROM. Nothing makes network requests.

How it was tested (and what was not)
------------------------------------
All four sets were built and run in MAME 0.264 (headless, scripted inputs, in a cloud
container; not pinned): 31 scripted scenarios per set passed, including tags for all ten
characters on both sides (the fighter leaves the screen, the partner enters from that
edge, kicks, lands on screen and speaks), a tag whose kick connects, a tag after the
sides have crossed, KO hand-offs, the round ending while a fighter is leaving or
entering, time over with team totals, mirror colours, continue, a challenger joining,
the attract demo, and the whole arcade ladder to the ending with a tag on each stage. The Python patcher passed its refusal tests (patched, corrupt, missing,
unexpected, duplicate and merged members, existing output). The Windows installer's
PowerShell was syntax-checked but has NOT yet been run on Windows. Netplay/Fightcade and
real hardware were not tested.

Known limits in this preview
----------------------------
- HP+HK is also Storm's flight and Iceman's Ice Avalanche. On the ground, with the
  partner standing, it tags instead; in the air, or with the partner knocked out, those
  moves work as before.
- The CPU does not tag on its own; its partner comes in on a KO.
- X-Men: Children of the Atom has no tag lines, so the partner says the line its
  character says on winning a round.
- The camera holds still while a fighter is off screen (about half a second).
- Akuma through the secret code was not tested.
