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.

56 published articles · archive $37

Reading path
Topics
56 articles

2026

56 articles
case study18 min readCPS-2 Reverse Engineering

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

Hayato's Dreamcast art, animation records, collision boxes and palettes now render inside stock Marvel vs. Capcom, driven by Hulk's character code. The v0 video, what the render probe measures, the palette rule the hardware forced, and everything that is still not there: no Hayato moves, no download.

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

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

The biggest character in Marvel vs. Capcom 2 now renders inside stock Marvel vs. Capcom on Hulk's character code, from the first build of the port harness that Hayato proved out. The v0 video, the census, the 2,819-tile margin, why every Dreamcast-only character has been silent until now, and everything still missing: no Sentinel moves, no sound, no download.

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 study25 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 study71 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 study48 min readCPS-2 Reverse Engineering

MvC Gave You Two Colors. I Gave Every Button Its Own.

Six buttons, 21 selectable fighters, 126 captured choices. The downloadable palette patch follows your pick from select to fight; v2 fixes remain in v8 testing.

cps2marvel-vs-capcomxmvsf
$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
case study8 min readCPS-2 Reverse Engineering

Direct Hyper Cancel: The Next Chapter for Arcade MvC

v8 is out: REMIX and ARCADE in one patch-only installer, with the partner handoff drawing its background, five Hyper levels with a yellow level 4, six colors and the expanded hit display. The release receipt says which checks ran on this build and at what tier.

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 study16 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 now renders 20 visible boxes. Five new spaces, no erased stock routes—and the names, portraits, and fighters that still have to fill them.

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 study19 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 study136 min readCPS-2 Reverse Engineering

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

I wanted Cable with six buttons. His art, four-shot rifle, and imported voice now run in MvC1; his native behavior is still unfinished. The road back from Dreamcast.

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 study35 min read

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

Thousands of replay records held his habits. An eight-frame alignment error forced the memorial AI to start over before it could claim to play like him.

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
reference18 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