I put Strider Hiryu from Marvel vs. Capcom into Marvel Super Heroes vs. Street Fighter. He's in the bottom middle square of the select screen, the one that only showed the game's logo.
It's a patch for your own ROMs, not a ROM. The installer takes your clean MSHvsSF zip and your clean mvsc.zip and builds the patched game from them. Strider's sprites, sounds and code come out of your mvsc.zip. The download carries only two small pictures made from MvC art that the installer can't rebuild from your zip: the select-screen icon and his ending pictures, about 24 KB.
33hypersOuroboros, Legion and Ragnarok, with his MvC inputs
4242sound commandshis voice, effects and music, read from your mvsc.zip
1919chips changedof the set's 21, built on your own PC from your two zips
11installerdrag your two zips onto it; your zips stay as they are
v1, preview. The clips below were recorded on the v1 preview build 834ab7b8 (the USA set). The USA release differs from it only in four branch instructions on the select screen, so gameplay is the same. Every gameplay check so far is a diagnostic run, in MAME or in a headless build of Fightcade's FBNeo core. Windows PowerShell 5.1, real Windows, Fightcade online play and real hardware are untested. Every clip on this page went through a flash limiter and passed an automated flash check.
$NEW · start here
v1 preview build · the select screen
Where is he?
Bottom row, middle square of the select screen. That square only showed the game's logo. In the Japanese game it's Norimaro. The punch buttons pick Strider's first colour, the kick buttons his second.
v1 preview build · Ame no Murakumo
Is it MvC's Strider?
Yes. His moves, his hypers, his voice and his ending are the ones from Marvel vs. Capcom, and his code is MvC's code. The installer reads all of it from your own mvsc.zip.
v1 preview build · Ryu tags in
Does he tag?
Yes. Pick a partner like you always do. HP+HK tags, QCF+HP+HK is a Variable Combination with both hypers at once, and Variable Counter works too.
$01
Watch the trailer.
Three minutes: the select screen, his moves, the same inputs in MvC and MSHvsSF, the tag team, his hypers and his ending. Music: Moment 37 (Less Power Mix), by morphus56k.
STRIDER HIRYU joins Marvel Super Heroes vs. Street Fighter | MvC → MSHvSF CPS-2 port (trailer)YouTube ↗
The game's own full-screen flashes are dimmed in this video, and it passed an automated flash check (general and red flashes, three per second or fewer). All footage is from MAME with ordinary inputs; the ending and the CATCH EDIT screen come from the game's secret test menu.
$02
What he does.
Eight pieces. Every clip says which build it shows and how it was recorded.
v1 preview build · MAME · ordinary inputs
01
01SELECT
Bottom row, middle.
Move the cursor down to the square that used to show the logo. Strider's portrait, his big picture, his standing pose and his name are all there. Pick him with a punch button or a kick button for his two colours, then pick his partner.
His normals and specials are his Marvel vs. Capcom ones, run by his MvC code, with his MvC inputs: Ame no Murakumo is QCF+P, the teleport B,D,DB+K, Gram F,D,DF+P and Excalibur QCF+P in the air.
Top: stock MvC Euro 980123 · bottom: v1 preview build · MAME · same inputs
03
03SAME INPUTS
Same inputs as MvC.
Top: stock Marvel vs. Capcom. Bottom: MSHvsSF with this patch. Both get the same inputs on the same frames. I compared 47 input sequences this way in diagnostic runs (cloud MAME 0.264): 46 gave the same actions as MvC, and P2 reacted the same in all 47.
His three hypers, with MvC's inputs. Ouroboros is QCF+PP, Legion QCF+KK and Ragnarok F,D,DF+PP. Each one costs a level, like in MvC. The clip starts each hyper after its flash.
QCF+HP+HK with two levels. Both cut-ins play, then Strider's Legion and his partner's hyper go off together. The clip skips the stretch where the background strobes.
His name is on every screen: the select screen, the life bar, the versus and win screens and continue. He wins with his MvC win quotes.
v1 preview build · shown with the secret test menu's ending test · MAME
08
08ENDING
His MvC ending.
His ending is his Marvel vs. Capcom one: three pictures and his last line, Target terminated. Mission complete. The pictures had to be re-coloured for MSHvsSF, so the installer can't rebuild them from your zip, and they come in the download. The clip shows the ending through the secret test menu: I haven't cleared the arcade mode with him yet.
$03
Install it.
Drag your two zips onto the installer. It writes a new patched zip next to them and never touches your originals. No terminal needed.
PREVIEW · v1 · WINDOWS INSTALLER
One installer, your two zips
It takes your clean MSHvsSF zip, mshvsf.zip (Euro 970625) or mshvsfu.zip (USA 970827), and your clean mvsc.zip (Marvel vs. Capcom, Euro 980123). It checks every file of both before it writes anything, refuses a set that's already patched or changed, and prints the new file's SHA-256 so two players can compare.
What you need: the installer, your own clean MSHvsSF zip and your own clean mvsc.zip, both with all 21 files, key file included, and Fightcade, MAME or FBNeo. The .cmd makes a patched zip; that zip is what the emulator plays. On macOS or Linux, use the patch package instead.
Watch both zips drop onto the installer, the checks, Strider's data move from the MvC chips to the MSHvsSF chips, and the new zip go into Fightcade's ROMs folder as mshvsf.zip, or choose the still guide. The console lines are the installer's own. The select screen at the end is from the v1 preview build. Windows · Strider in MSHvsSF v1.
01Put three files in one folder.Your clean mshvsf.zip (or mshvsfu.zip), your clean mvsc.zip (Marvel vs. Capcom, Euro 980123) and strider-mshvsf-v1-preview.cmd. Both zips need all 21 files, key file included, as MAME's sets have them.
02Drag both zips onto the installer.Select the two zips and drop them on the .cmd, in any order. It checks every file, builds the new set and writes mshvsf_strider_v1.zip next to your zip. Wait for the SHA-256 line, then press a key to close the window.
03Copy it where your emulator looks.Fightcade: back up Fightcade\emulator\fbneo\ROMs\mshvsf.zip, copy mshvsf_strider_v1.zip into that folder and rename the copy mshvsf.zip. MAME and FBNeo: see below.
04Pick Strider.Bottom row, middle square. Punch buttons give his first colour, kick buttons his second. Test offline first.
Which zip do you have?
Your zip
Plays in
The installer writes
Its SHA-256
mshvsf.zip · Euro 970625The set Fightcade plays, and MAME's parent.
The same clean zips always give the same file, on every PC: the installer stores the new zip without compression, so its SHA-256 is fixed. If yours matches the one in this table, you have the right file.
Fightcade, MAME or FBNeo. The patched zip goes where the emulator looks, under the set's own name.
Fightcade (Euro mshvsf only)Back up Fightcade\emulator\fbneo\ROMs\mshvsf.zip. Copy mshvsf_strider_v1.zip into that folder and rename the copy mshvsf.zip. Both players need the same file: compare the SHA-256 the installer printed. Spectators and replays need the patched file too (a spectator receives the host's live state).
MAMEMake a new folder. Copy the patched zip into it, renamed after its set (mshvsf.zip or mshvsfu.zip), and put qsound_hle.zip next to it. Start it from a command prompt: mame mshvsf -rompath "<that folder>" (mame mshvsfu for the USA set). MAME's own game list refuses patched sets, because their checksums changed. The command line runs them.
MAME savestatesNever load a savestate made on the original game into the patched one. MAME's savestates carry the decrypted program, so the old state undoes the patch until you restart. Savestates made on the patched game are fine.
FBNeoRename the patched zip after its set. FBNeo's game list shows a patched set as unavailable, because its CRCs changed: tick Show unavailable to see it. When it starts, FBNeo lists the new CRCs in a warning; close it and the game runs. Keep a patched mshvsfu.zip away from a clean mshvsf.zip in the same folder: FBNeo would load the parent's clean files, whose CRCs match what it expects, instead of the patched ones.
Fightcade's FBNeo never saves or loads the board's EEPROM, and at the start of a match it can load a start-up savestate. Neither matters here: Strider's square is unlocked by the select-screen code itself. I checked that in Fightcade's FBNeo core, built headless from its source (a diagnostic run, not Fightcade itself): on both sets, after a fresh boot and after savestates made on the original game, Strider was selectable and playable. Fightcade's own front end and online play are untested.
If something's wrong
What you see
Why
What to do
Refused: mvsc.zip has no mvsc.key (or mshvsf.zip has no mshvsf.key)
Strider's MvC code is encrypted, and the key file in the zip decrypts it. Some older sets don't have that file.
Use a current set with all 21 files, key file included. Current MAME, FBNeo and Fightcade all need the key to run the game, so a set that runs in them has it.
Refused: … is not the clean file, or does not match the clean … file
A file in that zip was changed: another patch, a hack or a bad copy.
Use an unmodified set. The message names the file it checked.
Refused: … is already patched: it is this patch's output
You dropped the installer's own output, or a renamed copy of it.
Use your clean zip. The output never needs patching twice.
Refused: mvsc.zip not found
The installer needs both zips and found only one.
Put your clean mvsc.zip next to your MSHvsSF zip, or drag both onto the installer at once.
Refused: … is the mshvsfj set (MSHvsSF Japan 970707), or … it is another revision
It takes the Euro 970625 and USA 970827 sets, and Marvel vs. Capcom Euro 980123 only.
Use one of those sets. The message says which set it found.
The select screen still shows the logo
The emulator loaded the original game, or MAME loaded a savestate made on the original.
Check that the patched copy has the set's name (mshvsf.zip) and is in the folder the emulator reads. In MAME, restart without loading the old savestate.
MAME: "Required ROM/disk images for the selected system are missing or incorrect"
MAME's game list checks checksums, and the patched files have new ones.
Start it from a command prompt with -rompath, as above. If it still stops, look for qsound_hle.zip in that folder.
Fightcade: your opponent's game has no Strider, or the match goes out of sync
Only one of you has the patched file, or your files differ.
Both players patch a clean mshvsf.zip the same way and compare the SHA-256 the installer printed. The same inputs always give the same file.
FBNeo: the set is missing from the game list, or a warning says a file "has a CRC of … (correct is …)"
FBNeo checks each file's CRC, and the patched files have new ones. It still runs them.
Tick Show unavailable in the game list to see the set. Close the warning and the game starts.
FBNeo: the patched USA set starts without Strider
A clean mshvsf.zip is in the same folder, and FBNeo loaded the parent's matching files.
Keep the patched mshvsfu.zip in a folder of its own.
Windows says it protected your PC
Windows marks files downloaded from the internet.
Click More info, then Run anyway. Or right-click the .cmd, choose Properties and tick Unblock.
The fine printmacOS and Linux · what's in the download · what it checks · split and merged sets
macOS and LinuxUnzip the patch package. It has a Python patcher that writes the same file as the Windows installer: python3 strider-mshvsf-v1-preview/strider_mshvsf_patch.py mshvsf.zip mvsc.zip. It needs Python 3.8 or newer and nothing else. --out DIR writes the new zip somewhere else.
What's in the downloadCopy instructions (which bytes, tiles and sound samples to take from your own files, and where they go), the patch's own code and tables, and two pictures made from Marvel vs. Capcom art that can't be rebuilt from your zip: the select-screen icon, downscaled, and his three ending pictures, re-coloured into 25 palettes. About 24 KB. No ROM file of either game.
What it checksEvery file of both zips: size, CRC32 and SHA-1 against the clean sets. Every file it builds: SHA-1 against the expected result, before it writes anything. It stops and says why in one line when a zip is patched, changed, incomplete or another set. It writes a .receipt.json next to the new zip with the sizes and hashes of everything it read and wrote.
Split and merged setsA split mshvsfu.zip that holds only the USA files works next to your clean mshvsf.zip, and a merged mshvsf.zip that also holds the USA files works too. The zips can come from any zip tool: the files inside are checked one by one.
$05
What doesn't work yet.
Known limits of this version, in plain words.
Strider is never a CPU opponent. His square isn't in the pool the arcade mode picks opponents from.
The six colour buttons give MvC's two Strider colours: punches the first, kicks the second.
Up close, right after a forward walk straight into the motion, MSHvsSF reads his QCF+LK, QCF+HK and DP+LK as typed. MvC reads the first two as DP+K and the third as a normal. Stock Ryu reads them the same way in both games, so the difference is in the port.
His sounds are checked in the build's data only. The cloud MAME I tested with has no sound output.
Not tested yet: Windows PowerShell 5.1 itself, real Windows, Fightcade's own front end and online play, real hardware.
$06
Share it.
One line and the link. Copy it, or post it straight to X.
ready to post
Strider Hiryu from Marvel vs. Capcom is playable in arcade Marvel Super Heroes vs. Street Fighter, in the square that only showed a logo. A free patch: drag your own two zips onto it.
HOW IT WORKSHow MvC's Strider runs on MSHvsSF's engine, where his code, sprites and sounds go, how the square opens, what the installer checks, and what got tested.+
Strider Hiryu is in Marvel Super Heroes vs. Street Fighter now. He's the bottom
middle square of the select screen, the one that only showed the game's logo. He
plays the way he plays in Marvel vs. Capcom, because it's the same code: the
installer takes his code, his sprites and his sounds out of your own mvsc.zip
and puts them into your own MSHvsSF zip.
This is the part under the hood. How I found that square is in two earlier
posts: Norimaro and the one byte, and
Strider's face in the square. Back
then the square had his face and nothing else. Now he's playable.
What's in v1
The square. Bottom row, middle. It's the slot the Japanese game gives
Norimaro, slot $22. The punch buttons pick Strider's first colour, the kick
buttons his second.
His moves. His MvC normals and specials, run by his MvC code, with his MvC
inputs: Ame no Murakumo (QCF+P), the teleport (B,D,DB+K), Gram (F,D,DF+P),
Excalibur (QCF+P in the air), and two kick specials, QCF+K and QCB+K.
His hypers. Ouroboros (QCF+PP), Legion (QCF+KK) and Ragnarok (F,D,DF+PP),
a level each.
The team moves. Tag, Variable Combination and Variable Counter, the same
as for everyone else in MSHvsSF.
His voice and sounds. 42 sound commands: his voice, his effects and his
theme, with 630,613 bytes of sampled sound.
His name everywhere. The select screen, the life bar, the versus and win
screens, continue and attract mode. He wins with his MvC win quotes.
His ending. His three MvC ending pictures and his last line: "Target
terminated. Mission complete."
Stock USA 970827: the logo square.v1 preview build: Strider in the same square.
Same inputs, same Strider
The first thing I wanted to know was whether he plays like MvC's Strider, not
something that looks like him. So I recorded the same inputs in both games and
compared them frame by frame.
Stock Marvel vs. Capcom Euro 980123.MSHvsSF, v1 preview build: same input, same frame.
In diagnostic runs (cloud MAME 0.264, headless, not my pinned MAME), I played
47 input sequences into both games. In 46 of them Strider did the same actions
in the same order. The one that differs, a QCF+PP, has one extra idle moment
before the hyper starts. Player 2 reacted the same way in all 47.
Blocking matches too, in the same diagnostic runs: the guard starts on the same
frame as in MvC, and blocking all 47 sequences, at range and up close, throws no
error. One pushback differs, and stock Ryu shows the same difference between the
two games, so that one is MSHvsSF's own.
His code
In MvC, Strider is his own block of 68000 code and data. The patch moves that
block into MSHvsSF instead of rewriting him:
16,722 bytes of his MvC code, relocated to $3F1000, near the top of
MSHvsSF's program space, in the 10b chip.
11 child and victim blocks: the code for the things he spawns, and for
the fighters on the other end of his moves.
1,302 bytes of bridge code at $3D4000. These are small shims for the
places where MvC's code expects something at an MvC address, and MSHvsSF keeps
it somewhere else.
CPS-2 programs are encrypted. The board decrypts its program as it runs it,
with a key each game has. MAME's sets keep that key in a 20-byte file inside the
zip, mvsc.key for MvC. The installer uses the key in your own mvsc.zip to
decrypt Strider's code from MvC's 03 and 04 chips, the same way the board
does. MSHvsSF's 10b chip is outside its game's encrypted range, so his code
goes there as plain bytes. The download carries none of that code.
Inside the game he lives where every MSHvsSF fighter lives: player 1 at
$FF3800, player 2 at $FF3C00, the partners at $FF4000 and $FF4400. His
sprites go into object RAM at $708000, his colours into palette RAM at
$914000, and his sound commands into the QSound chip's shared RAM at
$618000.
The crash on block
The candidate before this one crashed when the other player blocked one of
Strider's cypher moves. On a blocked hit, MSHvsSF looks up the guard spark in a
table of 16 entries at $018C84. His cypher moves use spark numbers past the
end of that table, so the game read past it and crashed.
The fix is one more shim, shim_guardspark. It has MSHvsSF's 16 entries plus
MvC's guard sparks for the cypher moves. In the diagnostic runs, the crash
replay now runs to its end, and all 47 sequences blocked at range and up close
throw no error.
His sprites, effects and sounds
10,905 sprite tiles, at fixed places in MSHvsSF's graphics chips
(13m to 20m): the space Norimaro's art used. His slot is Strider's now, so
Norimaro's tiles aren't needed.
60 effect scripts and 683 effect tiles for his effects.
42 sound commands and 630,613 bytes of sampled sound, in the sound chips
(11m and 12m).
On either set, the installer's own log line counts every tile it writes:
12,078. That's his sprites and effects, plus his portraits and pictures for the
select screen, the versus and win screens, the life bar and his ending.
His sounds are checked in the build's data only: the cloud MAME I tested with
has no sound output. If something sounds wrong, tell me in the poll below.
How the square opens
The USA game hides slot $22 behind a flag in work RAM, $FFFF31. In
the first post I turned that flag on with
one byte in a table of region defaults. That byte is only read when the game
sets up a new EEPROM, the memory where the board keeps its settings. A saved
EEPROM from before the patch kept the square locked.
This release doesn't use that byte. Four branch instructions in the
select-screen code, at $009E58, $00AB90, $06CEC0 and $06CFB8, skip the
flag, so the square is open no matter what the EEPROM says.
The Euro 970625 set has no such flag. It locks the square with a byte of its
ROM header, $0000CD, instead. The Euro build forces the same four branches at
their Euro addresses, $009E5A, $00AB94, $06CEE8 and $06CFE2, so on both
sets the square opens in the code, not in the EEPROM.
That matters for Fightcade. Fightcade's FBNeo never saves or loads the CPS-2
EEPROM (those lines are commented out in its source, marked "@FC"), and at the
start of a match it can load a start-up savestate, savestates\mshvsf_fbneo.fs,
if the client ships one. With the unlock in the select-screen code, neither
matters.
I checked that in Fightcade's FBNeo core, built headless from its source
(fightcade-fbneo c959501). This is a diagnostic run of the core, not of
Fightcade itself. On both sets, after a fresh boot, and after savestates made on
the original game at two points, Strider was selectable and playable, with no
exceptions. On the USA set, the build before the fix failed the savestate case.
Fightcade's own front end and online play are untested.
MAME is different in one way. Its savestates carry the decrypted program, so a
savestate made on the original game, loaded into the patched one, puts the old
code back until you restart. Make your savestates on the patched game.
What changes, chip by chip
On either set, the installer's output differs from the clean set in 2,018,896
bytes on 19 of its 21 files. On the USA set, that's the 2,018,888 bytes of the
preview build the clips show, plus the eight bytes of the four select-screen
branches. The files it changes are the sound program (01, 02), the program (03, 04, 05, 06,
07, 09, 10b), the samples (11m, 12m) and all eight graphics chips.
What the installer does
The installer is one .cmd file for Windows. It holds a PowerShell script and
the recipe: which bytes, tiles and samples to copy from which of your files to
where, plus the patch's own code and tables. The patch package has the same
recipe with a Python patcher, for macOS and Linux. Both write the same bytes.
It finds your two zips: the ones you dropped on it, or the ones next to it.
It checks every file of both, 21 and 21: size, CRC32 and SHA-1 against the
clean sets. A patched, changed or incomplete set is refused with one line
that says why.
It builds the new set in memory, then checks every file it built against
the SHA-1 it should have.
It writes mshvsf_strider_v1.zip (or mshvsfu_strider_v1.zip) next to your
zip, and a .receipt.json with the sizes and hashes of everything it read
and wrote. Your zips are not changed.
The new zip is stored, not compressed. Compression can differ between tools and
machines, and stored bytes can't, so every correct output has the same SHA-256
on every PC. The installer prints it, and the install section above lists the
one each set should give. Two Fightcade players compare theirs, and if they
match, they have the same file.
The download holds no ROM file of either game. Two pieces of MvC art are in it,
because the installer can't rebuild them from your zip: his select-screen icon,
downscaled, and his three ending pictures, re-coloured into 25 palettes. That's
about 24 KB. Everything else of Strider comes from your mvsc.zip.
His name, and the secret menu
The secret test menu's CATCH EDIT: 11 STRIDER HIRYU. v1 preview build, menu switched on for the recording.
His name is right in places players don't usually look, too. In the game's
secret test menu, CATCH EDIT lists him as 11 STRIDER HIRYU, and the KAO TEST
has his row. In 146 attract-mode shots of the diagnostic runs, Norimaro showed
up nowhere.
What got tested
All of these are diagnostic runs, in cloud MAME 0.264, headless and unpinned,
unless the line says otherwise:
Moves: 47 input sequences against MvC with the same inputs: 46 give the
same actions, player 2 reacts the same in all 47.
Blocking: guard starts on MvC's frame, and every move blocked at range and
after a walk-in throws no error.
Team: tag out and back in, Variable Combination with both cut-ins and both
hypers, Variable Counter forward and back.
His name: select screen, life bar, versus and win screens, win quotes,
continue and 146 attract shots, with no Norimaro anywhere.
His ending: his three pictures and his line, through the secret test
menu's ending test. I haven't cleared the arcade mode with him yet.
The Euro set: the same checks on the Euro build, in the same kind of
runs: 46 of the 47 sequences the same (the same QCF+PP), blocking, the three
hypers, team moves, win screen, ending and CATCH EDIT. Its attract mode
matches the stock Euro game frame for frame, 9,000 frames and 141 shots.
Fightcade's FBNeo core (a diagnostic build from its source, not
Fightcade): both sets, fresh boot and savestates made on the original game,
Strider selectable and playable.
The installers: the Windows installer's PowerShell part under PowerShell 7
and the Python patcher write the same output, byte for byte, for both sets.
Not tested yet: Windows PowerShell 5.1 itself, real Windows, Fightcade's
own front end and online play, and real hardware. His audio is checked in the
data only.
Known limits
Strider is never a CPU opponent. Slot $22 isn't in the pool the arcade mode
picks opponents from.
The six colour buttons land on MvC's two Strider colours.
Up close, right after a forward walk straight into the motion, MSHvsSF reads
his QCF+LK, QCF+HK and DP+LK as typed. MvC reads the first two as DP+K and the
third as a normal. Stock Ryu reads them the same way in both games, so the
difference is in the port. It isn't fixed yet.
On the USA set, the first attract-mode demo fight starts one frame later
than on the stock game, so the demo fights play out differently from there.
The clips on this page were recorded on the v1 preview build 834ab7b8, on the
USA set. The USA release differs from it only in the four select-screen
branches above, so the gameplay is the same.
If you play him, the poll below is where I read what to fix next.
Community input · Next release
Help shape the next Strider in MSHvsSF update
Choose up to 3 priorities. No account needed.
Community signals
Unavailable
Feedback guides the roadmap. Votes do not confirm bugs or commit a change to the next release.
Copies public poll choices and counts for your own workflow. Private notes are excluded. Copying sends nothing to another service.