Pick a rabbit hole

Writing

A missing character. A bad pointer. A convincing citation with the wrong evidence. These are the builds, failures, and fixes behind them.

68 published articles · archive $43

Reading path
Topics
68 articles

2026

68 articles
reference21 min readCPS-2 Reverse Engineering

MvC1 Frame Data for 16 Characters, Measured in the Game and Read From the ROM

Startup, active, recovery and frame advantage for every MvC1 ground normal, each character's command list with its specials and hypers measured, walk and jump values, and the damage formula. Measured in a running game, checked against the ROM's own tables, and downloadable as CSV and JSON.

cps2marvel-vs-capcommvc2
$43
case study7 min readCPS-2 Reverse Engineering

Pick the 9 Colors That Ship in DHC v12.

Every character in DHC v12 ships with 9 colors: the 6 attack buttons (LP, MP, HP, LK, MK, HK) plus 3 Start-button colors. Pick the better of two colors as many times as you like, and make a color of your own for the vote.

cps2marvel-vs-capcomdhc
$42
Featuredcase study5 min readCPS-3 Reverse Engineering

SF3 TAG V4.3: Justin Wong Mode, reproduced bugs and independent fixes

Unofficial SF3 TAG V4.3 preview: matched before/after repairs for bugs shown in Justin Wong’s review, a held post-winner report, chosen CPU teams and explicit Party assistance. Install from your own clean game with paced Fightcade and RetroArch guides.

street-fighter-iii3rd-strikesf3-tag
$41
case study6 min readCPS-2 Reverse Engineering

One-on-one Marvel vs. Capcom

One fighter per side, first-to-two rounds, restored Infinity Gems from Marvel Super Heroes and playable Tomichin. Install from your own clean archives.

cps2marvel-vs-capcommarvel-super-heroes
$40
case study10 min readCPS-2 Reverse Engineering

I Put Strider Into MSHvsSF. Here's the Patch.

Strider Hiryu from Marvel vs. Capcom is playable in arcade Marvel Super Heroes vs. Street Fighter, in the select-screen square that only showed a logo. His MvC code, sprites, sounds, three hypers and ending come out of your own mvsc.zip. One installer for the Euro set Fightcade plays and the USA set.

mshvsfmarvel-super-heroes-vs-street-fighterstrider
$3E
case study44 min readCPS-2 Reverse Engineering

X-Men vs. Street Fighter, Three on Three

XMvsSF 3v3 + DHC v1.1 makes arcade X-Men vs. Street Fighter (1996) three on three, in the style of Marvel vs. Capcom 2: three picks per side in eighteen colours, MP+MK and MP+HK tags to either reserve, Delayed Hyper Combos up to three Hypers long where the motion you enter picks each Hyper, snapbacks that choose who you fight next, CPU teams of three up to Apocalypse, six players with one controller per character, and an optional 512×224 arena. 17,632 bytes of new 68000 code and 89 hooks, with a RetroArch core of its own for Windows, Linux and macOS on Apple silicon, and a two-player preview for Fightcade's own FinalBurn Neo.

x-men-vs-street-fighterxmvsfcps2
$3F
case study18 min readCPS-2 Reverse Engineering

Marvel Super Heroes, Two on Two

MSH TAG makes arcade Marvel Super Heroes (1995) a two-on-two tag game in the style of Marvel vs. Capcom: Infinite: two picks per side in six colors each, HP+HK tags that carry a combo, Counter Switch out of a combo, crossover counters, push blocks, snapbacks that knock the point off the screen, double teams under Marvel vs. Capcom's meteor sky, team supers and hyper tags, two same-size life bars and both heroes' faces per side, red life that heals on the bench, a TIME bar along the bottom in double teams, KO hand-offs, CPU teams, and four players in RetroArch. 24,252 bytes of new 68000 code and 101 guarded program replacements in v1.2, one installer for the 951024 sets.

marvel-super-heroesmshcps2
$3D
case study4 min readCPS-2 Reverse Engineering

SSF2T TAG v3: two fighters, more room

A ROM-free development patch for Super Turbo: clearer tag handoffs and a true 384-to-512 expanded view. Two-player install guides, Apple Silicon/macOS 26+ S06 core, and four-player status.

super-street-fighter-ii-turbossf2tcps2
$3C
Featuredcase study41 min readCPS-2 Reverse Engineering

XCOTA TAG V5.6: X-Men, Two on Two

XCOTA TAG V5.6 repairs Gambit crouching combos and low attacks, Rogue guard recognition, the reproduced Marrow reset and Gambit KO voice, while retaining the original arcade menu.

x-men-children-of-the-atomxmcotacps2
$3B
Featuredcase study32 min readCPS-2 Reverse Engineering

Cross Fever for arcade XMvsSF, MSHvsSF and Marvel vs. Capcom

Four humans, four fighters, one CPS-2 board — plus MVC1's Duo, with its pose and fly-in, for X-Men vs. Street Fighter and MSHvsSF, under MVC1's meteor sky with MVC1's ∞ meter. Five patches with drag-and-drop installers for your own ROM (MSHvsSF's for both its USA and Euro sets), each with its tested scope stated.

cross-fevercps2marvel-vs-capcom
$3A
Featuredcase study17 min readCPS-2 Reverse Engineering

Strider Hiryu Is Standing Where the Logo Was. Twenty Patches Failed First Because the Sprite Was Animated.

The American Marvel Super Heroes vs. Street Fighter fills one select-screen box with its own logo. It now holds Strider Hiryu — portrait, name plate, bust and standing figure. Getting there meant retracting three confident answers, including one that blamed the graphics ROMs for a crash caused by a bad pointer.

cps2mshvsfmarvel-super-heroes-vs-street-fighter
$39
case study7 min readCPS-2 Reverse Engineering

Capcom Shipped Norimaro in the American Arcade ROM. One Byte Turns Him On.

The US version of Marvel Super Heroes vs. Street Fighter hides Norimaro behind one region-default byte. On a fresh EEPROM initialization it makes him selectable and playable; a carried-over EEPROM overrides it.

cps2mshvsfmarvel-super-heroes-vs-street-fighter
$38
case study18 min readCPS-2 Reverse Engineering

I Put MVC2's Hayato Into Marvel vs. Capcom. Here's v0.

Hayato's historical v0 render probe runs on Hulk's code. The current native import is partial and diagnostic-only: a 654-byte static bundle passes static/CPU checks, but no target candidate or new Mac/MAME runtime exists.

cps2marvel-vs-capcommvc2
$36
case study15 min readCPS-2 Reverse Engineering

I Put MVC2's Sentinel Into Marvel vs. Capcom 1. It Worked on the First Boot.

Sentinel's render probe still runs on Hulk's code. A later pinned audibility run was blocked: 24 source clips decoded, 11 mapped and seated across 42 aux12 events, but no audio was heard and no candidate exists.

cps2marvel-vs-capcommvc2
$37
case study26 min readCPS-2 Reverse Engineering

Inside MvC's Mashable Moves: From the ROM Chip to the Extra Hit

Which MvC supers are mashable, what to press, and how many hits were demonstrated: character verdicts, baseline comparisons, code limits, reproducible evidence and a CPS-2 chip location map.

cps2marvel-vs-capcomreverse-engineering
$35
case study8 min readCPS-2 Reverse Engineering

The Partner Hyper Draws Its Background

DHC v8 is out. The partner handoff's missing background was a stalled Hyper script waiting for an animation event nobody sent; six bytes send it. Level 4 of the meter turns yellow from a tile the game already had. What was verified, at what tier, and the trailer.

cps2marvel-vs-capcomdhc
$34
case study7 min readCPS-2 Reverse Engineering

MvC Had the Digits for Five Super Bars. One Instruction Said Three.

The cap is one byte. Four other tables also assume three. A statically verified five-level patch uses Capcom's existing art; a full-match play test is still pending.

cps2marvel-vs-capcomreverse-engineering
$33
Featuredcase study26 min readAI Engineering Notes

Your AI Read the Repo. It Still Missed the Blocker.

Old write-ups made unfinished ports sound ready. I built a read-only MCP server with 21 tools to retrieve the current evidence without granting permission to run or publish.

genaimcpai-agents
$32
case study70 min readCPS-2 Reverse Engineering

I Always Picked Rogue as My Helper. She Took Hulk's Chair.

I wanted to play as the helper I always picked. Rogue took Hulk's slot, but borrowed machinery still blocks a finished fighter—and the download stays withheld.

cps2marvel-vs-capcomxmvsf
$31
case study6 min readCPS-2 Reverse Engineering

Six Buttons. More Than Two Colors.

An interactive CPS-2 palette workshop: keep the button index, follow every reader, measure existing ROM space, and build complete color banks without expanding the game.

cps2marvel-vs-capcommvc2
$30
case study21 min readCPS-2 Reverse Engineering

Why Can Wolverine Chain That Combo and Ryu Can't? It's 48 Bytes.

MvC's own rank table explains the difference. I built a training tool to read those rules live; the code passes headless checks, with a real Fightcade smoke test still ahead.

cps268000reverse-engineering
$2F
case study7 min readCPS-2 Reverse Engineering

Storm and Magneto Can Fight in MvC. Watch Where the Proof Stops.

Lightning Storm lands ten hits. Magneto runs seven gameplay segments. The footage is real; diagnostic setup and unfinished parity keep it from being a release claim.

cps2reverse-engineeringxmvsf
$2E
Featuredcase study45 min readCPS-2 Reverse Engineering

Delayed Hyper Combo for arcade Marvel vs. Capcom

DHC v11: eighteen color choices, six native match-report pages and focused DHC repairs. Classic/REMIX, three bars, original artwork and labeled historical videos remain. ROM-free community release with explicit native-test limits.

cps2marvel-vs-capcomdhc
$2B
guide6 min read

A Marvel vs. Capcom 3 Stage Has to Fit in 1,632 KB. Now Port It.

That is Dreamcast MvC2's measured texture budget. The decoded stage format and conversion plan show what must be cut; a converted stage has not booted yet.

mvc2mvc3dreamcast
$2C
case study66 min readCPS-2 Reverse Engineering

I Found the Perfect Table for Storm's Portrait. The Game Never Read It.

A 90-second control killed the theory. Following the renderer instead produced permanent Storm and Magneto icons in a 2,736-byte MvC ROM patch.

cps2reverse-engineeringxmvsf
$2D
case study30 min readCPS-2 Reverse Engineering

MvC Doesn't Count Past 99. I Made It Show 999 Without Growing the ROM.

The stock counter really saturates; it isn't hiding extra hits. A separate display counter reaches 999 while the gameplay counter and ROM size stay unchanged.

cps2marvel-vs-capcomreverse-engineering
$29
case study17 min readCPS-2 Reverse Engineering

Storm Fits Inside Jin. I Measured That Before Writing a Byte.

Storm needs 12,329 tiles. Jin frees 12,873. That 544-slot margin is the difference between a stock-size plan and another expansion—and only the start of the audit.

cps2reverse-engineeringxmvsf
$2A
Featuredcase study15 min readCPS-2 Reverse Engineering

MvC Kept Making Me Delete a Fighter. I Added Another Column.

The 1998 select screen rendered 20 visible boxes in an instrumented proof. The current ten-table, 2,018-byte relocation is a non-emitting plan; no new character ID is installed or enabled.

cps2reverse-engineeringmarvel-vs-capcom
$28
reference41 min readCPS-2 Reverse Engineering

The Character Looked Finished. The Test Harness Said No.

Five fighters passed the editor checks. That did not prove they could fight. The gates that catch wrong builds, misleading screenshots, and missing move behavior.

cps2reverse-engineeringmshvsf
$27
reference11 min readCPS-2 Reverse Engineering

You Can Steer Maximum Spider's Victim. But You Can't Pick the Landing.

Left and right can flip the fifth hit's launch—until geometry and the corner win. A stock-ROM experiment explains the rule, and why Zangief's 360 is different.

cps2reverse-engineeringmarvel-vs-capcom
$26
Featuredcase study43 min readCPS-2 Reverse Engineering

I Gave Gold War Machine Onslaught's Boss Beam.

Mega Optic Blast is now a two-level air super in MvC. Making the stolen beam playable meant fixing its input, palette, damage, and the landing after the light goes out.

cps2reverse-engineeringmarvel-vs-capcom
$23
case study20 min readCPS-2 Reverse Engineering

Magneto Was Fighting in MvC. The Debug Menu Couldn't See Him.

His fight tree and Captain America's editor tree told different stories. The missing-animation mystery, the real tile bill, and a gameplay reel that still isn't full parity.

cps2reverse-engineeringxmvsf
$24
Featuredcase study66 min readCPS-2 Reverse Engineering

Marvel vs. Capcom Promised Mega Man Magnetic Shockwave. I Put It Back in the Arcade Game.

The ending says YOU GOT MAGNETIC SHOCKWAVE. The arcade game never lets you use it. I restored the PlayStation-only reward with Onslaught's own arcade attack.

cps2reverse-engineeringmarvel-vs-capcom
$25
Featuredcase study14 min readCPS-2 Reverse Engineering

Mega Man Is on Neo Geo. The Cartridge Has No Idea.

He appears in SVC Chaos through a custom emulator bridge, with source frames and attack experiments. The ROM, reactions, helpers, and sound still belong to Zero.

megamansvc-chaoszero
$21
Featuredcase study17 min readCPS-2 Reverse Engineering

The Crossover Capcom and SNK Never Built: SVC Zero on CPS‑2

Zero's face and name are in Marvel vs. Capcom. Underneath, Mega Man still owns most of the machinery. The crossover prototype exposes what a sprite swap cannot fix.

svc-chaoszeroneo-geo
$22
case study15 min readCPS-2 Reverse Engineering

MvC's Infinites Had No Escape. I Added a Combo Breaker.

A Mega Crash-style burst and a hold-to-parry prototype share one damage hook. Finding it exposed a trusted harness that had read the wrong memory for months.

cps2marvel-vs-capcomreverse-engineering
$20
case study1 min readCPS-2 Reverse Engineering

Bringing 3rd Strike into MvC: Part 2, Ken Stands Up (merged into the full write up)

This part has been merged into the single full write up, which carries it forward to the current state of the project.

cps2cps3street-fighter-iii
$1E
Featuredcase study47 min readCPS-2 Reverse Engineering

3rd Strike on CPS-2? Ken Exposed the Real Bottleneck.

Ken's sprites run inside Marvel vs. Capcom. The animation tables were the trap: 35 visual routes are now authored, but his Hadouken still throws Gambit's card.

cps2cps3street-fighter-iii
$1F
case study1 min readCPS-2 Reverse Engineering

Bringing 3rd Strike into MvC: Part 1, Getting the Pixels Out (merged into the full write up)

This part has been merged into the single full write up, which carries it forward to the current state of the project.

cps2cps3street-fighter-iii
$1D
Featuredcase study139 min readCPS-2 Reverse Engineering

I Wanted Cable Without MvC2. So I Put Him in MvC1.

Cable's historical Ryu-slot v33 build ran in MvC1, but that donor lineage is retired. The current native-$32 branch is a structural-only v17 head with all 52 gameplay lanes still open.

cps2mvc2naomi
$1B
reference12 min readCPS-2 Reverse Engineering

One Dreamcast Character Does Not Fit In An Entire Saturn

An average Dreamcast MvC character is larger than a Saturn's total memory, expansion cart included. The supposedly easy port fails before the first line of code.

sega-saturndreamcastsh-4
$1C
case study7 min readCPS-2 Reverse Engineering

MvC's ROM Was Full. I Gave the Emulator a Megabyte the Board Never Had.

A native import needed more space than the game's fragmented gaps could supply. Four emulator changes opened a contiguous megabyte—offline, beyond stock hardware.

cps2rom-expansion68000
$1A
Featuredcase study33 min readCPS-2 Reverse Engineering

Capcom Hid a Character Laboratory Inside CPS-2. We Automated It.

Retail CPS-2 ROMs still contain Capcom's HIT, CATCH, AI, and art tools. I automated the hidden lab—and made it reject character ports that only look finished.

cps2reverse-engineeringmarvel-vs-capcom
$19
Featuredessay12 min readCPS-2 Reverse Engineering

The Reverse Engineer Was a Fleet of Claude Agents. The Editor Was Me.

Claude agents built an entire working subsystem for the wrong explanation. The real fix was two bytes. How I decide which AI-generated evidence deserves to survive.

cps2reverse-engineeringai-directed
$18
Featuredcase study13 min readCPS-2 Reverse Engineering

Shuma-Gorath's Sprites Weren't Encrypted. My Tool Had Scrambled Them.

A false compression diagnosis nearly sent the port into weeks of codec work. Fixing the read exposed 11,587 tiles and a path to running his real code in MvC.

cps2reverse-engineeringmarvel-vs-capcom
$17
case study13 min readCPS-2 Reverse Engineering

I Put the Collapsing NYC Stage in MvC. The Crash Wasn't the Stage.

The street and subway render inside the wrong game. A character bug froze the fight, a second bug moved the underground into the sky, and some art still won't fit.

cps2reverse-engineeringmshvsf
$15
reference42 min readCPS-2 Reverse Engineering

Capcom Left the Arcade's Data on a Saturn CD. I Checked Every Sprite.

All 57,370 sprite records round-trip exactly, and character tables match the arcade byte for byte. Four wrong answers later, a running match settled the animation tree.

sega-saturnsh-2reverse-engineering
$16
Featuredcase study62 min readCPS-2 Reverse Engineering

Marvel vs Capcom Had No Room for a 24th Character. I Added Two.

The game had 23 character slots. Dark Sakura and Shuma-Gorath run beyond them, with their own code—and every table past the old limit waiting to break something.

cps268000reverse-engineering
$13
Featuredcase study9 min read

I Blamed the Fighting-Game AI. My Test Harness Was Lying.

The HUD decoded every button wrong, an anti-air hid behind if False, and the policy lost control of most frames. A historical audit of the bugs around the model.

machine-learningimitation-learningbehavioral-cloning
$14
case study23 min readCPS-2 Reverse Engineering

I Put Ryu's Brain in Dark Sakura. Then I Had to Rip It Out.

Borrowing Ryu's state machine made Dark Sakura fight in MvC1. It also trapped her in his rules. The playable shortcut I retired before building the native port.

cps268000reverse-engineering
$12
reference4 min readAI Engineering Notes

Your AI Changed the Colors. Your Edits Disappeared.

One more prompt should not erase a human correction. The artifact IDs, revision checks, and approval rules an impressive AI demo tends to leave out.

genaireacttypescript
$11
reference4 min readAI Engineering Notes

Your New AI Model Looks Smarter. It Might Be a Downgrade.

A prettier answer can hide a worse production system. Compare against the model you already run, inspect the failures, and make the judge prove itself too.

genaillmevals
$10
reference4 min readAI Engineering Notes

The Citation Is Real. The Answer Is Wrong.

A manual's storage limit becomes an operating limit, with a perfect footnote. Why real quotes and valid schemas still aren't proof.

genaillmcitations
$0F
reference4 min readAI Engineering Notes

Your Agent Has Every Tool. It Still Picks the Wrong One.

A growing catalog turns similar tools into a selection trap. Search first, fetch one schema, and test what the smaller prompt still gets wrong.

genaillmai-agents
$0D
reference2 min read

AI Engineering Notes: Where the Demo Falls Apart

The agent picks the wrong tool, a real citation supports a false claim, and the next prompt erases your edit. Four failure stories and one MCP system built in the arcade lab.

genaillmai-agents
$0E
Featuredcase study36 min read

Alan Is Gone. I'm Trying to Keep His Fighting Style Alive.

Thousands of replay records held his habits. The six-checkpoint diagnostic is complete, but schema12 remains non-training, the action legend is unverified, and no current checkpoint is promoted as Alan-like.

ai-for-goodmachine-learningbehavioral-cloning
$0C
reference30 min read

I Tried to Add Armored Spider-Man. MvC Fought Back.

Three table formats, a 13-state selector, and a 116-byte interrupt hook. Why adding one secret character became an engine investigation—and why the plan changed.

reverse-engineeringrom-hackingcps2
$05
reference15 min readCPS-2 Reverse Engineering

85 References. No Roster Entry. What Was MvC Hiding?

An unused character ID leads to four guarded load paths. The trail looked like a missing fighter; the later audit showed why it wasn't a ready-made slot.

binary-forensicsreverse-engineeringcps2
$06
reference19 min readCPS-2 Reverse Engineering

I Expanded MvC to 148MB. Most of It Was Unreachable.

Bigger ROM files fooled the diagnostics. Making the extra graphics visible took a custom emulator mapper—and cost standard Fightcade compatibility.

hardware-limitscps2rom-expansion
$07
reference20 min read

I Took Marvel vs. Capcom Apart. Here's What Was Hiding Inside.

Secret developer tools, unused character routes, stolen boss attacks, and fighters in games they never shipped in. The complete CPS-2 research trail, including the dead ends.

cps2reverse-engineeringseries-index
$08
reference22 min readCPS-2 Reverse Engineering

I Blamed MvC's Graphics. The Bug Was One Missing '@'.

A diagnostic menu painted garbage no amount of memory clearing could fix. The text renderer was still drawing because nobody had told it to stop.

systems-engineeringassemblyreverse-engineering
$09
reference36 min readCPS-2 Reverse Engineering

I Put MvC2's Jazz in MvC1. It Played Three Times Too Fast.

Five tracks, 122 audio banks, and a custom FBNeo core made the sound-test demo possible—after a signed integer turned the soundtrack into a speedrun.

audio-engineeringcps2qsound
$0A
reference3 min read

Selected Work: The Games I Couldn't Leave Alone

A friend's fighting style, characters stranded in the wrong game, and tools that catch my own bad conclusions. Start with the projects that made me keep going.

portfoliomachine-learningsystems-engineering
$0B
Featuredessay11 min readCPS-2 Reverse Engineering

What If Your Emulator Could Run 100 Training Matches at Once?

A design for turning FBNeo into a fighting-game lab: Metal rendering, live debugging, and parallel AI training on Apple Silicon. The architecture before the benchmark.

machine-learningsystems-architecturemetal-api
$00
reference8 min read

Every MvC1 Secret Character Code, Down to the Byte

Six directional codes, their exact byte patterns, and the character IDs behind them—including the unused number that sent the investigation sideways.

binary-forensicspattern-analysisstate-machines
$01
essay15 min readCPS-2 Reverse Engineering

I Thought Capcom Redrew the Sprites. I Was Comparing the Wrong Bytes.

A near-zero tile match looked like incompatible artwork. Reproducible ROM analysis exposed the bad assumption—and made the correction testable.

reverse-engineeringdocumentationautomation
$02
essay8 min readCPS-2 Reverse Engineering

I Added the Secret Character Entry. MvC Never Even Looked.

A two-byte search exposed three hidden-character table formats—and a hardcoded position check that kept the selector away from the new entry.

reverse-engineeringbinary-analysisembedded-systems
$03
essay9 min readCPS-2 Reverse Engineering

116 Bytes, Once a Frame: Sneaking New Behavior into MvC

An abandoned Armored Spider-Man experiment found a way around the selector: ROM injection, palette writes, and a VBlank hook the state machine never expected.

systems-engineeringbinary-analysisstate-machines
$04