UMK3 TAG turns arcade Ultimate Mortal Kombat 3 into a two-on-two tag game. You pick two fighters, swap them with HP+HK, and call the one on the bench in for an assist with LP+LK, like in Marvel vs. Capcom. It runs on the stock umk3 driver in MAME and FinalBurn Neo. The patch only changes the two program chips, U54 and U63. Every other ROM in your set is copied as it is.
This is v0.4, the first build I'm putting on the site. It fixes the bugs I hit in v0.3, and it finishes Rain: the purple ninja Ed Boon slipped into the arcade game in 1995 without ever making him playable.
Ed Boon wanted a purple ninja in UMK3 and ran out of time
Rain has always been in arcade UMK3. You just never got to play him. He shows up for about a second of the attract mode, running at Shao Kahn, and that's it.
In a 2011 interview on the PlayStation Blog, Boon explained where he came from. He was looking for a ninja color nobody had used yet, and he was a big Prince fan, so: purple, Rain. The game was already finished and there was no time to build a real character, so he hacked in that short attract-mode bit instead. The life bar didn't have the word "Rain" ready either, so he put it together by hand out of the game's own letters.

Midway made him a real character later. In the 16-bit ports of UMK3 and in Mortal Kombat Trilogy he has his own moves: Lightning, the Mind Control Orb and the Super Roundhouse, plus a fatality where lightning keeps hitting the other fighter until they explode.
The v0.3 build of UMK3 TAG came with a feature list called "Ed Boon's unfinished UMK3 wishes". It had no sources, and I couldn't find Boon asking for most of what was on it: tag teams, Kameos, Fatal Blows, brutalities for everyone. Those are in UMK3 TAG because I wanted them, not because he did, so the list is gone. What I could source is Rain, and one line of text in the ROM.
The arcade ROM has said RAIN WINS since 1995, and v0.4 prints it
The Cutting Room Floor lists the unused text in the arcade ROM. One of the lines is RAIN WINS, at offset 0x33E2A, sitting next to the real winner lines. The game never shows it, because the table it uses to pick the winner line never points there.
Here's the byte math, so you can check it yourself. The two program chips are interleaved: U54 holds the even bytes and U63 the odd ones. The TMS34010 addresses memory in bits, and the program starts at $FF800000, so offset 0x33E2A is bit address $FF800000 + 0x33E2A × 8 = $FF99F150. The winner-line table at $FF99E610 has no entry for it.
v0.4 changes six bytes where the game picks the winner line. The stock code calls a routine and shifts the result to index that table. v0.4 jumps to new code instead:
If the winning side's active fighter is Rain, the new code hands back $FF99F150, the original 1995 string. Chameleon and Khameleon get their own CHAMELEON WINS and KHAMELEON WINS lines in new space instead of the base ninja's name. Everyone else goes through the stock table like before.
The receipt for this one is simple. The test core records which ROM bytes the game reads. After Rain's fatality in v0.4, the game reads all nine bytes of RAIN WINS at 0x33E2A. Run the same match on v0.3 and it never touches them.

Rain's Lightning, orb and fatalities work now
In v0.3 you could pick Rain, but his moves were broken. Lightning and the orb played an animation and drew nothing, so they looked like ordinary knock-ups. His "custom fatality" ran the brutality code. v0.4 rebuilds all three, using Trilogy's Rain as the model, and adds the parts of his Trilogy kit that were still missing: steering the orb and his second fatality.
| Move | Input | What you see in v0.4 | v0.3 |
|---|---|---|---|
| Lightning | Down+Back+HP | Rain throws his fist up and a bolt of Midway's own lightning comes down onto the opponent. It launches on hit. | Animation only, no bolt |
| Mind Control Orb | Down+Forward+LP | A water orb crosses the screen. If it touches, it bursts and the opponent floats for 46 frames so you can follow up. Hold a direction while they float and you move them. Blocked, it does chip damage. | Animation only, no orb |
| Super Roundhouse | Back+HK | Same as v0.3 | Worked |
| Deadly Uppercut | Down+Forward+HP at FINISH HIM, up close | He uppercuts the opponent off the top of the screen and they come back down in pieces | Didn't exist |
| Lightning fatality | Down+Forward+HP at FINISH HIM, from about half a screen | Both arms up, six strikes of the same bolt 11 frames apart, a last bolt, then the explosion | Ran the brutality |
| Babality | Down+Back+LK at FINISH HIM | The stock Babality routine | None |
These are button chords like the rest of UMK3 TAG, not Trilogy's motions. The move lists out there don't even agree on all of Trilogy's inputs, and chords are what everything else in this hack uses.
The two fatalities share one chord and the distance picks which one comes out. That's how Trilogy splits them too: the Deadly Uppercut is a close one there (Forward, Forward, Down, HP) and the lightning works from half a screen (Down, Down, Back, Forward, HK). Here, 90 pixels or closer gets the uppercut and 91 to 180 gets the lightning.
No new graphics went in, and none were needed. My first try drew the bolt and the orb as flat colored rectangles, and they looked hacky next to Midway's sprites. But the arcade graphics ROMs already have real lightning in them: Nightwolf's lightning fatality (Back, Back, Down, HP) calls a bolt down from the sky. Rain's Lightning plays the four full-bolt frames of that animation (frame lists $FF86B520 to $FF86B6C0) with the bolt's own palette at $FFDCCC10.
The orb is Reptile's forceball. Its flight frames ($FF944620 to $FF9446A0) are the orb, and its burst ($FF9446E0 to $FF944820) is the splash when it connects. The only new thing is two water-blue palettes, and those live in the program ROM. The graphics ROMs stay byte for byte. The receipt: the test core logs every ROM byte the game reads, and when Rain throws these moves it reads every one of those stock frame lists.
The bolt draws over the fighters and under the timer and the WINS text, the way Nightwolf's bolt does. To get that, the HUD gets drawn a second time after the effect, but only while a bolt or an orb is on screen.



The orb steers now, the way the 16-bit UMK3 move list puts it: "move opponent: B/D/F/U". While the opponent is in the air inside the bubble, the caster's joystick moves them 3 pixels a frame left or right (kept inside the camera window), 2 up and 3 down. That code is called from the effect pass, which only runs while a bolt, an orb or a bubble is on screen, so an ordinary fight frame runs the same instructions as before. The receipt casts the orb five times from the same state: holding Left ends the float 84 pixels left of where it ends with no input, Right 52 pixels right (the edge of the screen stops it). Holding Up peaks the float 11 pixels higher, and Down 22 pixels lower.
Trilogy's other Rain fatality is the Deadly Uppercut. He uppercuts the opponent and the body comes back down in slices, stacked in the wrong order. Those slices are art the arcade ROMs don't have. So here the uppercut is his own crouching uppercut, animation 0x0B, and the opponent's process switches to the game's uppercut-flight frames, animation 0x1E. I read both numbers from the fighters' own processes during a normal Down+HP on the test core. The opponent rises 12 pixels a frame off the top of the screen, and the body-chunk burst the other finishers use (create_fx 0x0C) comes down instead of the slices.

What's still missing from Trilogy's Rain is his chain kombos. He still has Scorpion's. On the test core, HP, HP, HK and HK, HK, LK land three hits each, and his Trilogy HP, HP, LP stops at two. Building his own means working out the game's hit-reaction routines first. His Animality and Friendship would need art that isn't in the arcade graphics ROMs.
Round 1 shows Rain before FIGHT now
v0.3 had a bug you saw every match. Before FIGHT, the bars and colors showed the ninjas the secret ones are built on, SCORPION and REPTILE, and only switched to Rain and Chameleon once the fight started.
v0.4 builds the names, the colors and the four team bars during the round intro. On the test core, every sample of the intro has the team HUD up and the same purple on Rain's body as 30 frames after FIGHT. On v0.3, the same frames show Scorpion's yellow and the stock HUD.

Keeping the bars up through KO cost frames, so I took that back
My first v0.4 build kept the team HUD up through KO, FINISH HIM and Mercy too, so a secret ninja's name could never flash. It looked fine, but it slowed down the game's own sequences: round transitions took 7 more frames and Mercy took 15 more. UMK3 runs at about 54.7 frames a second, so 15 frames is more than a quarter second, and two older checks (Mercy timing and the CPU's tag timing) started failing.
So v0.4 only draws the team HUD during a fight and during the round intro. Outside of that it does what v0.3 did: the stock HUD takes over at the end of a round and for Mercy. When it does, the secret ninja's stock name is hidden, so the bar never says SCORPION for Rain. It shows no name instead, which is still on my list.
On a fight frame with no bolt or orb on screen (and tournament rules off), the code that runs is exactly what the first v0.4 build ran there. When I added even two instructions per frame in that path, the incoming partner landed a frame later and an old tag test caught it. That happened again with the lightning: my first way of getting it under the HUD was a hook in the game's HUD pass, and that hook alone made the tag-in land a frame late. So the HUD redraw only runs while an effect is up.
The other v0.3 bugs are fixed too
| v0.3 problem | v0.4 |
|---|---|
| Forward Kameo with Sub-Zero dropped the ice on your own partner | Forward drops the Ice Shower on the opponent ($FF9D7A90) and back is the Ice Clone wall ($FF9D7550). They were swapped. |
| Kung Lao's Kameo forward throw turned the background black and froze him | It uses his Teleport ($FF9D7750). No corruption in the v0.4 recording. |
| The brutality's hit counter said 2 HITS | The game's own combo readout says 11 HITS |
| Rain's custom fatality looked like the brutality | He has both Trilogy fatalities now |
| The round intro and the win line used the base ninja's name | Fixed, see above |

Three things players kept asking for
I went through what people have asked for in arcade UMK3 over the years: forum threads, the changelogs of other UMK3 hacks, and the patch notes of the newer official collection. Most of it was already in UMK3 TAG. Three things changed for v0.4.
A kombo limit under tournament rules. The known infinites, like Kabal's fireball and spin loops, Stryker's gun, Shang Tsung's eruption juggles and the corner crouch loops, all keep one fighter in one combo without letting them recover. With tournament rules on (Block+Up on the VS screen), no strike connects once the game's own unrecovered-hit count for that fighter reaches 12, until they recover. Finishers are exempt, and it's off by default. The receipt sets the count to 11, 12 and 20 before one ordinary HP: 11 still hits, 12 and 20 don't, and without tournament rules all three hit. I haven't replayed each infinite against it, and a relauncher that resets the game's count would get past it.
Babalities for the hidden fighters. Ermac and Classic Sub-Zero never had one in the arcade game, and neither did the fighters UMK3 TAG adds. Down+Back+LK at FINISH HIM now runs the stock Babality routine ($FFAC1550) for Ermac, Classic Sub-Zero, Human Smoke, Noob Saibot, Rain, Chameleon and Khameleon. It goes through the game's own finisher launch, so the game's usual checks still apply. Kabal's own Babality still works, and the chord does nothing for the regular fighters.
Training mode is gone. Earlier builds had one on the VS screen (Block+Down). This is an arcade game, so I took it out. Block+Down on the VS screen does nothing now.
Everything from the earlier builds is still in v0.4
Rain is the headline, but most of UMK3 TAG is the tag game underneath, and that carries over. The 17 verification groups in the table further down re-check it on v0.4.
- 23 fighters on clean NVRAM, with Mileena, Ermac and Classic Sub-Zero unlocked from a cold boot, plus Noob Saibot with his own moves, Rain, Chameleon and Khameleon.
- MvC1-style bars: the point fighter on the full bar, the partner on a slim bar under it, and red life that heals while they sit on the bench.
- Both fighters on a team have to go down to lose the round. On a timeout, team health decides it.
- CPU teams through the arcade ladder, with Motaro and Shao Kahn as solo bosses.
- Engine fixes: charge moves survive the tag and assist chords, Jax and Sektor work the same on the P2 side, throws reveal invisible fighters, Kung Lao's spin and Kitana's fan lift can't loop forever, Shang Tsung morphs work on clean NVRAM, Nightwolf's reflect works in 2-on-2, and Mercy and fatalities clean up stray projectiles.
How to play v0.4
- Pick your team. Two different fighters per side. Noob Saibot has his own square. For the other secret ninjas, hold Up and press Run when you pick: on Scorpion you get Rain, on Reptile or Human Smoke you get Chameleon, and on Kitana, Jade or Mileena you get Khameleon. Up+Block works too.
- Tag:
HP+HK. Your partner comes in with a homing jump kick. The one leaving backflips out in a win pose and can't be hit on the way out. - Assist (Kameo):
LP+LK. Your partner flies in, does a move and leaves. In Modern controls, hold Forward, Back, Up or Down with it for their other moves. - Kombo Breaker: Forward+Block while you're getting hit. Your partner cuts in.
- Team Fatal Blow (Modern): Block+LP+LK at low health, once a match.
- Brutality: Block+Run+HP up close at FINISH HIM.
- Babality for the hidden fighters: Down+Back+LK at FINISH HIM.
- Modern extras. Tag Kombo: Forward+HP+HK in the middle of an attack (uses your Run meter). Snapback: Block+HP+HK with a full Run meter. EX special: add Run to a special's last button. Air Kombo: jump punch an airborne opponent, then HP, then HK.
- Modern is the default. Block+Start on the select screen switches your side to Classic: plain six buttons, no Kameo directions, no Fatal Blow, none of the Modern extras.
- On the VS screen: Up or Down picks the stage (16 of them, including the hidden Blue Portal), Block+Up turns on WaveNet tournament rules (with the kombo limit), and Start skips straight to the fight.
- Beat both fighters on a team to win the round. Best two of three.

To install it:
- Extract the zip into its own folder, and keep a backup of your clean rev 1.2
umk3.zip. - On Windows, drag
umk3.zipontoBUILD UMK3 TAG PREVIEW.cmd. On a Mac or Linux, runpython3 patch_umk3_tag.py --development /path/to/umk3.zip. - Load
output/umk3.zipfrom a separate ROM folder with the stockumk3driver. Don't mix patched and unpatched sets between two players online.
The patcher checks every ROM in your set by size, CRC32 and SHA-256 and refuses anything that isn't a clean rev 1.2 set. It never changes your original zip.
What I checked on v0.4, and what I didn't
Every number here comes from the v0.4 image itself (93e2f771…ccd0). Receipts from v0.1 to v0.3 don't count for this build. All of it is in RELEASE.json.
| Check | Where it ran | Result |
|---|---|---|
| Python patcher rebuilds the exact v0.4 ROM set from a clean one, and refuses a set with one byte changed | Linux, Python 3 | PASS |
| All 17 verification groups: tags, assists, HUD, select, KO, Mercy, CPU, projectiles, throws and the rest | Headless Wolf Unit core (FBNeo) | 3,054 / 3,054 |
| Rain's moves, RAIN WINS and the round intro, from a cold boot with ordinary input | Headless Wolf Unit core | 6 / 6 |
| Kombo limit, hidden-fighter Babalities, orb steering and both of Rain's fatalities | Headless Wolf Unit core | 10 / 10 |
| v0.3 feature checks, re-run on v0.4 | Headless Wolf Unit core | 35 / 35 |
| v0.2 feature checks, re-run on v0.4 | Headless Wolf Unit core | 43 / 43 |
| Frame timing against v0.3 | Headless Wolf Unit core | Intro +0, round transition +1 to +2, Mercy +1 |
Windows patcher (BUILD UMK3 TAG PREVIEW.cmd), any PowerShell version | Not run on v0.4 | UNVERIFIED |
| Stock Fightcade client, real controllers, a real Wolf Unit board, two machines online | Not run on v0.4 | UNVERIFIED |
The Windows patcher hasn't been run on this release yet, on any version of PowerShell. If it fails for you on Windows, the Python patcher in the same zip does the same job. Keep your clean umk3.zip, run the patched one from its own folder, and make sure both players have the same build before playing online.
What's still open
- The VS screen and HUD portraits for Rain, Chameleon and Khameleon still use the base ninja's art. New art would mean changing graphics ROMs.
- After a round ends, a secret ninja's bar shows no name.
- Rain still has Scorpion's chain kombos instead of his Trilogy ones, and no Animality or Friendship.
- The kombo limit hasn't been played against each known infinite, and a relauncher that resets the game's hit count gets past it.
- Kung Lao's spin Kameo can still end in the spin pose on top of your point fighter.
- From round 2 on, the round-win medallion draws under the partner's name on the reserve bar.
Sources: the 2011 PlayStation Blog interview with Ed Boon, The Cutting Room Floor on arcade UMK3 for the unused text, Mortal Kombat Warehouse for Rain's home-version moves and Nightwolf's fatality input, the SuperCombo wiki on Trilogy's Rain for his fatalities, and the UMK3 Super NES move list for steering the orb.