Gold War Machine already looks like a boss character, so giving him first-form Onslaught's Mega
Optic Blast feels almost inevitable. The implementation is less obvious. The visible beam is a
linked family of stock class-$B4 objects, the body is Gold's native airborne medium-punch
choreography, and the palette is shared engine state that can be overwritten mid-super.
The first working version proved the route. Combined v3 makes it a playable move: a short punch piano works, the super costs two levels, Duo Team Attack locks it out, hit and chip are deliberately balanced, only Gold loses OTG, and the final lit pose hands off to stock unlit recovery and natural air physics instead of floating motionless.
Combined v3 is the only current player build
There is no standalone Gold v5 player CMD or standalone Gold v5 Discord package. The sole current
player product is MVSC-MEGAMAN-GWM-COMBINED-v3.cmd, built in one pass from an exact clean encrypted
Euro parent. Older standalone and Combined names are historical evidence, not alternate current
downloads. Never stack an old installer into Combined v3.
| Combined v3 player artifact | Final identity |
|---|---|
| Windows installer | Download MVSC-MEGAMAN-GWM-COMBINED-v3.cmd |
| CMD bytes | 37,330 |
| CMD SHA-256 | c2af03214b5c4c8e41554fc1c479b5a14d45fa1d6fe4066396b4aea025eabd72 |
| ROM-free Discord transport | Download MVSC-MEGAMAN-GWM-COMBINED-v3-DISCORD.zip |
| Discord ZIP bytes | 17,374 |
| Discord ZIP SHA-256 | 3a80cd4ac781e8483ca892a4d3a7005022008f398b6ae643910a86468a3f33f7 |
| Compact evidence binder | freeze-manifest.json, SHA-256 b608b4b1c43c85ea5dca1a595ec880da90c66962c452f1ee9c4286dce8b493bb |
| Installer gate | installer-gate.json, SHA-256 91dbc6278f242fe772b0cbecb43484517c558afc8ab8bece4f4e451103cc8f4b |
| Release ledger | release-ledger.json, SHA-256 8aa4b8ca9a32767ff443817aeff853ae0a1c86c98d3b0529f8335cb12af95d7f |
| Semantic composition fingerprint | af80e769d61bd7d260f618b76648a8ca8d707fd7c3c8554579f48c1a04bace14 |
| Full ROM-free audit mirror | PUBLIC-MIRROR.md |
Run the final CMD beside your own clean mvsc.zip:
& ".\MVSC-MEGAMAN-GWM-COMBINED-v3.cmd" ".\mvsc.zip"It writes mvsc_megaman_gwm_combined_v3.zip, includes and downloads no ROM, preserves the input,
and refuses a patched, stacked, reordered, duplicated, missing, extra or mislabeled set.
For online play, both peers need identical case-sensitive ordered member data and a room/emulator that accepts modified CRCs. Stock member sizes and no graphics expansion do not guarantee that a Fightcade room will accept the set. This is unofficial and has no claimed Capcom or Fightcade support. The one current Discord announcement lives in the Mega Man companion article, so there is not a second standalone Gold message to drift out of sync.
What Combined v3 fixes
The input accepts a controller piano without becoming sloppy
Gold's command remains airborne QCF + any two punches in either a normal jump or a true
down-up super jump. At the terminal stage, v5 accepts all three punch pairs together or a short
one-update roll when at least two punches are held and at least one punch has a new press edge. It
preserves the native direction-release window. Singles, QCB, stale-held pairs, release-only pairs
and an active repeat state +$B0=$2A reject.
Ground QCF+2P remains Proton Cannon. Plain air MP remains Gold's ordinary plasma. Ordinary War
Machine ($02) is unchanged; every custom path requires Gold fighter id $0028.
The beam costs two full levels and cannot run inside Duo
One level now rejects before custom state, beam allocation or palette lease. Two levels accept and
pay exactly 2→0; hit and guard cannot refund the shooter. The commit adapter at $3F26B6 calls the
native hyper commit wrapper and reaches stock meter spend with d0=1, producing the required
second debit without inventing a separate meter store.
On a one-level attempt, native QCF parser progress occurs during the motion, then the final
+$1C8..+$1CD record returns to 000000000000; meter remains 1→1, with no custom state, B4
object or palette lease. Duo is a separate earlier gate: its real countdown check rejects before
parser consumption, so that lane truly leaves the parser unchanged.
Variable Cross is not identified by fighter +$B0. Its authoritative per-side countdown words are
$FF4034 for P1 and $FF4036 for P2, selected by fighter +$02. During a real QCB+HP+HK Duo,
the custom recognizer checks that timer before touching its six-byte parser record. The measured
reject leaves meter, parser, custom action, B4 allocation and palette lease unchanged.
Hit damage is 52 and guarded chip is 7
The donor's 17 standing/air contacts dealt 45 total damage from shared Dmg $06 rows. Gold v5
substitutes owner-private clones with Dmg $07 before common collision math caches the row. The
result is 17 contacts and 52 total damage without editing native Onslaught's $0F78D2/$0F78F2.
On guard, 13 contacts used to produce 13 chip. Subtype B is naturally no-chip. For subtype A, guard
contacts alternate between the ordinary private row and a private +$16 bit-1 clone; only the
guard path advances parity. Seven guarded contacts pay one point, six skip it. All hit contacts stay
active, so the hit total remains 52.
Gold's beam does not OTG
This policy is Gold-specific. When the target is genuinely prone in state $08, step $0004, the
owner-scoped wrapper marks the custom Gold B4 object so the engine skip at $0D711E ignores that
attacker. The frozen true-prone lane records zero Gold B4 contacts. Standing, crouching and airborne
controls still connect, and native Onslaught is untouched.
Mega Man's Magnetic Shockwave intentionally follows the opposite policy: it preserves the original move's OTG behavior. Combined v3 distinguishes the two owners rather than imposing a global rule.
The ending is unlit and immediately returns to natural falling
The old cooldown fix turned off the chest light but held Gold in a private motionless countdown,
which produced the choppy “two falling frames, then float” report. V5 removes that manual loop. On
the first frame with no marked B4 object, it releases the palette lease, selects Gold's stock unlit
air-MP recovery group $02 / subaction $12, clears the private hold metadata, and calls the native
return-to-air path.
| Lane | Last B4 | First stock unlit | Vertical motion resumes | Landing |
|---|---|---|---|---|
| right-facing normal jump | age 186 | age 187 | age 189 | observed |
| left-facing true super jump | age 203 | age 204 | age 205 | observed |
The first unlit frame provides the requested cooldown/finish read, but Gold no longer sits there. Gravity resumes immediately through the stock air system.
Missing beam graphics are not reproduced from a clean accepted parent
Reports #1–4 showed missing or corrupted beam graphics on local archives, but both reported local
ROMs were also known to be corrupted and the defect did not appear in the patch delta. Gold v5
writes only mvc.10, mvce.03a and mvce.04a. Every graphics member mvc.13m through mvc.20m
is byte-identical between the installer-accepted canonical parent and the tested candidate.
Treat a missing segment as a real patch regression only after the final installer accepts the exact canonical parent and the same clean-parent reproduction still shows it. Do not use a previously patched, corrupt, reordered or relabeled archive as the graphics oracle.
There is a separate visual limitation: the large white/cyan oval or apparent “cutout” at beam
contact is native class-$B4 Onslaught composition. Removing its live subtype slices produced
invisible damage or rectangular gaps. Combined v3 keeps that coherent stock donor presentation. It
is not evidence that graphics data was omitted from the patch.
Compact release evidence
| Claim | Bounded case / observation | Evidence identity | Component fingerprint | Status |
|---|---|---|---|---|
| two-level accept | meter 2→0, custom B4 accepted | 1d846d90a1a4b6d7edec645d06871e6608e99bc7c9523c7762f1683047e97e9e | payload 5888cd0154a204a3c8d6eca385eb01dc335f510909f889b5983740985d56cfd5 | PASS |
| one-level reject | native QCF parser progresses during the motion, final +$1C8..+$1CD=000000000000; meter 1→1; no custom state/B4/lease | a1faf6c296b201eacd0bda57631536631395ed287769bd44db0741d4cf886de8 | same payload | PASS |
| real Duo reject | parser/meter/B4/lease unchanged | d77efd0edba6f65d0b577462a199fe9838b495d9377ae9d093e407e99858b056 | $FF4034/$FF4036 gate | PASS |
| real stale-held pair reject | LP+MP held in current/previous at stage $08, newPunch=$00; no custom/B4/debit/lease | right 7c9cdf0532fba6822955b18c456055b5188432a3ac213dcce9b28aa30838acee; left c4ebb8a01733cecdb1e3116ae9fd08b803b750e3b4c92e24f113288d371ad54f | harness 431c30e8886dab412d1a530edd29e9d3ae37b19b16513b2c18e610c12cd46885 | PASS |
| hit balance | 17 contacts, 52 damage, no refund | 7102d7e44d3b8a9bf8d57b12adc249d60b17ff7c5a6b59c4eefa587bd2d7c85e | private Dmg $07 | PASS |
| guard balance | 13 contacts, 7 chip, no refund | 781c7c1c480402bb6faee730f0ce55519a917e70f68ed1c812dae5e9bbb21a08 | guard parity +$1CF bit1 | PASS |
| Gold no-OTG | true prone $08/$0004, zero B4 contacts | bafefcea60f55f10035921d986422c817380f59e15b5953272fd7d9378eada24 | owner-scoped skip | PASS |
| crouch / air contacts | crouch PASS; air 17 contacts/52 | 2d0de2307c6fbb1c3b61027b4f73bc435a669833c95a7b45521ecb51392e80ca / 7807d8dab631e2823ce346f6ed0859acf74bfc2602da4e25f4b268bc803a5130 | same private rows | PASS |
| natural recovery | normal and true-superjump fall/land lanes | dbd784be941b3299cf80605f35e861b8af6c57f2b7a191cf4d70599363fa6df9 / 0f5779eebd82c4345ee6ca461ad6b4cb7c9401655e032253ff54e54c4b7fd037 | stock $02/$12 | PASS |
| air-normal cancel window | real LK→HK enters $1A00; hyper accepted age 29 | 5f1e84115407959ba765ab91e539e53e5de6768166a5330d1d973c05e05a4e88 | whiff action-window oracle | PASS / qualified |
| graphics unchanged | all eight mvc.13m..20m byte-identical | 23ce24cbefed11f2d391bf45b7b7593a04a6c6ea2af70b828584a73fdb7bdbaf | no graphics writes | PASS |
| Combined v3 composition | exact clean parent + one shared meter owner | 8aa4b8ca9a32767ff443817aeff853ae0a1c86c98d3b0529f8335cb12af95d7f | af80e769d61bd7d260f618b76648a8ca8d707fd7c3c8554579f48c1a04bace14 | PASS / FROZEN |
| public CMD/transport | Windows gate + ROM-free inventory | 91dbc6278f242fe772b0cbecb43484517c558afc8ab8bece4f4e451103cc8f4b / b608b4b1c43c85ea5dca1a595ec880da90c66962c452f1ee9c4286dce8b493bb | c2af03214b5c4c8e41554fc1c479b5a14d45fa1d6fe4066396b4aea025eabd72 / 3a80cd4ac781e8483ca892a4d3a7005022008f398b6ae643910a86468a3f33f7 | PASS / FROZEN |
The frozen Gold component identities are source
97197eb0986b66960de86383dc80d1b8034af4920bb8c7d2de145173de191e62, 2,168-byte payload
5888cd0154a204a3c8d6eca385eb01dc335f510909f889b5983740985d56cfd5, resource
6252bae7ba2abeca572d5df1d5f18841e4696fbc689982e103986cafaee710a9, hook plan
c4e463bb5703a280d9ccfb5a0cedbf49c50362006f64b168c0fdc21e5539bbbb, final evidence component
record 77cf2ade30e302c6b0d9bccc68fcf96a294fcb3c69e1587a96b0b5279d8f2876, and normalized release
component 5cbc7b714a24406e29821a69eaa4e1f1cbaef53adaed72cf8213faf64b585803.
The air-normal cancel evidence proves the action window on a true whiff. The shared hit-contact timing control also failed to make LK/HK contact for stock Ryu, so this binder does not pretend it has a separate hit-confirm oracle. That qualification is part of the freeze, not hidden in a footnote.
N41 replication ledger: exact state, hooks and private rows
Live RAM ownership
| Meaning | Fighter-relative | P1 | P2 |
|---|---|---|---|
| current / previous input | +$D6/+$D8 | $FF30D6/$FF30D8 | $FF34D6/$FF34D8 |
| fighter state / accepted move | +$B0/+$E6 | $FF30B0/$FF30E6 | $FF34B0/$FF34E6 |
| Gold command parser | +$1C8..+$1CD | $FF31C8..$FF31CD | $FF35C8..$FF35CD |
| palette lease | +$1CE | $FF31CE | $FF35CE |
| runtime flags | +$1CF | $FF31CF | $FF35CF |
| native Duo countdown | global/per side | $FF4034 | $FF4036 |
+$1C8..+$1CD is temporary command-parser progress, not a moves-used list. +$1CE is the $A5
palette/provenance lease. In +$1CF, bit 0 records a common palette-writer interruption and bit 1
is guarded-contact chip parity. Both runtime bits clear on action init/release. Fighter +$02
selects which native Duo timer belongs to the owner. On an accepted Gold Mega Optic activation,
fighter +$B0=$2A and +$E6=$1A (P1 $FF30B0/$FF30E6, P2 $FF34B0/$FF34E6).
Fixed Gold payload map
The payload links at CPU $3F2000..$3F2877, stored in mvc.10 +$072000..+$072877 after 68000
word-order conversion.
| Entry | CPU address | Entry | CPU address |
|---|---|---|---|
| air command gate | $3F2000 | special dispatcher | $3F207E |
| beam handler | $3F209A | B4 object dispatcher | $3F2214 |
| subtype identity 0/2/4/6 | $3F22B0/$3F22BA/$3F22C4/$3F22CE | subtype placement 0/6 | $3F2314/$3F2350 |
| palette reload gate | $3F23E8 | input piano adapter | $3F25C6 |
| component meter wrapper | $3F2560 | prone gate / Duo gate | $3F2658/$3F269E |
| two-bar commit | $3F26B6 | collision-row substitution | $3F26CE |
| hit-row cache substitution | $3F271E | chip balance | $3F2766 |
Corrected 13-hook plan
The hit-row cache hook is CPU $01A952, not the stale research address $0D7426. $0D73D4
is a different, earlier collision-row hook; both are necessary so the private Dmg $07 row exists
before each common consumer caches it.
The two byte columns below are copied from the frozen hook plan. Plain member is the decrypted,
word-swapped member order used for a plaintext preimage comparison. Encrypted member is the
actual HxD byte order in the canonical encrypted parent. Do not paste the plain column into
mvce.03a/.04a.
| CPU / canonical member offset | Purpose | Plain member before → after | Encrypted member before → after |
|---|---|---|---|
$02896A / mvce.03a +$02896A | airborne recognizer | BA4E4A02714E → B94E3F000020 | 140985FCC3C6 → 9AC65AB03140 |
$02A41E / mvce.03a +$02A41E | special dispatcher | 00702E10E600 → F94E3F007E20 | FF7BE8697134 → 6A8530B84426 |
$0A54F4 / mvce.04a +$0254F4 | B4 owner/cleanup | 6E205400680C → F94E3F001422 | 2FD01A6EFE19 → F2F6E06B1939 |
$0A558E / mvce.04a +$02558E | subtype 0 identity | 682D68006800 → F94E3F00B022 | B8D5AEFD1994 → 2A50F3CB355E |
$0A57C4 / mvce.04a +$0257C4 | subtype 2 identity | 682D68006800 → F94E3F00BA22 | F4439FCDFDC7 → 58A8E06C86FA |
$0A593C / mvce.04a +$02593C | subtype 4 identity | 682D68006800 → F94E3F00C422 | B7BB8047B87F → AC2B79B21D78 |
$0A5AAC / mvce.04a +$025AAC | subtype 6 identity | 682D68006800 → F94E3F00CE22 | D651D637798F → E7AAA7738167 |
$0A55D0 / mvce.04a +$0255D0 | subtype 0 placement | 3C30C9FF2E4A → F94E3F001423 | 77CE50EA9EA5 → AEEA45FD79D9 |
$0A5AB8 / mvce.04a +$025AB8 | subtype 6 placement | 3C30CAFF2E4A → F94E3F005023 | 1ACA3265BBF1 → 4F4CDE874687 |
$0D73D4 / mvce.04a +$0573D4 | private row before collision math | 48298C00681907008500 → B94E3F00CE26714E714E | 2A751064AA988C4FB367 → C3A256C6B0CDB238AC96 |
$01A952 / mvce.03a +$01A952 | private victim row before hit math | 482D8C006E208C00 → B94E3F001E27714E | 2D79ED0AC7C578E8 → C7F9CA6602E17B37 |
$01CD1E / mvce.03a +$01CD1E | attacker meter filter | 2E4AE80000670C00 → F94E3F006025714E | B7E6BA813793ED6B → 59A8A5A9823AC4AF |
$00A4C6 / mvce.03a +$00A4C6 | palette reload/repaint | 2D4AB77900662000 → F94E3F00E823714E | AB7DAECEC156EF83 → CE7AB586A5031ECE |
In final Combined v3, $01CD1E is intentionally replaced by the one shared owner instead:
CPU plaintext fetched: 4A2E00E86700000C -> 4EF9003F30004E71
encrypted member HxD: B7E6BA813793ED6B -> 59A8A5A973B6C4AF
dispatcher: $3F3000, class $B4 -> $3F2560, otherwise -> Mega $3F138AEvery other Gold hook remains exactly the frozen component hook above.
Stock rows and Gold-private rows
Native Onslaught's rows remain byte-identical:
$0F78D2 060003c010300008000f190a80050c2404640012001404010000000000000000
$0F78F2 060003c010300008000f190a80050c2405640012001406010000000000000000Gold uses these unique private byte patterns:
$3F27F8 070003c010300008000f190a80050c2404640012001404010000000000000000
$3F2818 070003c010300008000f190a80050c2405640012001406010000000000000000
$3F2838 070003c010300008000f190a80050c2404640012001406010000000000000000$3F27F8 is hit row A, $3F2818 is hit row B, and $3F2838 is the alternating no-chip A clone.
The fourth allocation at $3F2858 is byte-identical to $3F2818; subtype B is already naturally
no-chip. The meaningful byte edits are Dmg +$00: $06→$07 and row-A guard property
+$16: $04→$06. Keeping private clones prevents native Onslaught or another consumer of
$0F78D2/$0F78F2 from inheriting Gold's balance.
Graphics-member clean-parent proof
The candidate changed only mvc.10, mvce.03a and mvce.04a. The clean/candidate SHA-256 for each
4 MiB graphics member is identical:
| Member | SHA-256 |
|---|---|
mvc.13m | 689b9f2e2f9105f6b6a456e836a289c65caf642d9c7d246ea95c2db256f2ce0d |
mvc.14m | 1be6ba60b3cc0e6b647c2a54ca06b948dbc72eb32efdead84bcaa1d2efd69db5 |
mvc.15m | 37365288e38a8c41fb5d2eb72808038478def8c8aa368d85816b70a89f6a6f55 |
mvc.16m | c94231770a7377bf6c7817427f28b87db79f3be03287279e8a19bea34cca85be |
mvc.17m | dc29f2f0bf56d60408e9b9a2fcfae6c684f8be97712c94f146386c9bbb9ab46f |
mvc.18m | 4f3ceefa11958fd92f88047f876e37a5a9a226ca9c28e3b9915a03f39a268947 |
mvc.19m | d245405b8fa57b315300d915b9b5f96859bc31b9a97f653e370c7f0f28a1fc7f |
mvc.20m | 6cb08b23e33cc97bd14c6bf0ed179c99952146328f0dc0f01e8135c2783466bd |
The compatibility identity is the exact member data, not the outer ZIP's compression metadata.
The recorded clean outer archive SHA-256 is
6f63627cc37c554f74e8bf07b21730fa7f85511c7d5d07449850be98dde91da8, but the installer makes its
decision from the canonical ordered member catalogue.
Permanent-edit workflow
- Observe live fighter/object/row state in MAME or FBNeo;
$FFxxxxis RAM, not an HxD offset. - Assemble with
m68k-elf-as, link at$3F2000, and fail on exported symbol drift. - Store the 2,168-byte payload in
mvc.10 +$072000after swapping each 68000 word's byte order. - For every hook, require the exact clean plaintext and encrypted preimage shown above.
- Derive encrypted executable words at the exact CPU word address; byte swapping alone is not CPS-2 encryption.
- Build a new ordered archive, decrypt changed program ranges back to CPU order, and re-encrypt to prove byte-for-byte equality.
- Run owner negatives: ordinary War Machine, native Onslaught, ground Proton Cannon, plain air MP, one-bar and Duo states.
- Run behavior deltas: hit, guard, true prone, crouch, air, normal-jump fall and true-superjump fall.
HxD answers “what bytes are stored in this extracted member?” SwapEndian/word_swap answers “how
are bytes ordered inside each 68000 word?” XCopy/CPS-2 encryption answers “what encrypted opcode
word represents this CPU instruction at this exact address?” They are three separate transforms.
Harness architecture and reuse
Gold v5 uses bounded lanes instead of replaying every historical matrix after every edit. smoke
checks install/boot/command. delta checks the behavior touched by the edit. release runs the full
composition, static byte scope and packaging only after both components freeze.
Each emulator case is isolated and has a hard wall timeout. A cached PASS binds ordered ZIP member
semantics, post-sign output, receipt, emulator, manifest, runner, Lua 5.1 compiler, harness,
declared dofile dependencies, allowed environment, command, timeout, completion marker and exact
artifact inventory. A case-local DONE without that fingerprint is rejected. The runner also
rehashes source and dependencies after execution and terminates the whole process group if a case
hangs.
The contact harness logs object class/subtype, owner chain, cached row at object +$8C, victim row,
HP-write PC, contact count, damage and meter. That is how the late-row substitution bug was found:
putting Dmg $07 only into a postprocessor was too late because $0D73D4 had already cached the
stock row. The fixed pair $0D73D4→$3F26CE and $01A952→$3F271E moves substitution before both
consumers.
Recovery lanes record the last live B4, first unlit animation, subsequent Y/velocity changes and
landing. The prone lane requires the actual $08/$0004 state when the beam arrives; “the target
looked down” is not enough. The Duo lane performs the real QCB+HP+HK activation and observes the
native per-side countdown, rather than forcing a convenient fighter state byte.
Historical engineering appendix
Old unversioned, v1 and v2 Gold installers are revoked. Standalone v3/v4 and Combined v1/v2 are historical freezes only and are intentionally not linked as current player choices. Combined v3 must always begin from the exact clean parent.
Follow the boss object's topology
Onslaught does not draw one huge beam sprite. A class-$B4 root creates linked subtype objects that
own placement, palette, collision and render lists. Gold's custom action calls the native family,
then marks only the lineage whose owner is fighter $0028. Native Onslaught and unmarked B4
objects resume the displaced stock dispatcher.
Gold's measured chest origin comes from ordinary air MP: subtype $06 uses forward +20, vertical
-82; subtype $00 keeps the donor family's one-pixel relation at forward +21, vertical -81.
The custom super suppresses Gold's normal class-$1C chest plasma only during this action. It does
not add a body hitbox.
Why palette lifetime needed a lease
The beam's colors can look right on spawn and then inherit Gold's palette after hit flash or a
common palette reload. The fix is owner-scoped lifetime, not a one-time palette copy. Fighter
+$1CE=$A5 marks the lease; marked descendants keep it live, the common repaint hook restores the
optic palette while active, and the final descendant releases it. +$1CF bit0 records an
interrupted palette write so the next safe update reapplies it.
Why the native contact oval remains
Render-queue tracing showed that repeated subtype-$04 display lists compose the bright contact
oval. Removing a live slice did not remove its collision; the game produced invisible damage.
Replacing it with narrower donor lists opened rectangular holes. Because the patch does not import
new art or expand graphics ROM, the coherent native Onslaught presentation is the honest stock-size
limit.
Why v5 recovery replaced the v4 cooldown loop
The earlier presentation revision correctly removed the unexplained chest light but stayed in a
private fixed-air countdown. Testers then saw Gold alternate two falling frames while hovering.
V5 keeps the desired first unlit frame and deletes the motionless policy: the engine's own
RETURN_TO_AIR owns gravity, fall animation and landing from that point onward.
That distinction is the general lesson of this port. Reusing a native effect is not just calling its spawner. A robust character port must own command grammar, cost, team modes, object ancestry, collision-row timing, meter returns, palette lifetime, recovery and cleanup—and must prove that every shared donor remains unchanged.
Archived deep research record
The following original reverse-engineering sections are retained intact for provenance and reuse.
Their v2/v3/v4 wording is historical context only. They expose no current player download and do not
override Combined v3's two-level cost, Duo ban, 52 damage, 7 chip, Gold-only no-OTG, natural
recovery, corrected $01A952 hook or frozen identities above.
What v2 got wrong—and how v3 fixes it
The new play captures invalidate the old “chest-origin” label. V2 installs a fixed −64 placement
formula, advances the borrowed air-MP chain only until its fire event, then holds Gold motionless
while the class-$B4 family continues. That explains both visible complaints: the cap is attached to
the fighter origin rather than the rendered chest plate, and the body stops performing the move.
The donor property rows also feed hyper-gauge charge through their stock boss behavior. V3 filters
only the Gold-owned donor returns, so the shooter earns zero meter from the custom beam on hit,
block or whiff while the defender keeps the unmodified stock gauge path. A stock Ryu control later
settled the separate repeat-use question: a second air Hyper can be legal in the same jump if the
first move fully recovers before landing. Gold therefore follows that timing instead of receiving
an invented one-use-per-jump lock.


The presentation target is the readable logic of an airborne Uni-Beam: wind-up, chest flash,
braced discharge and recovery. Marvel Super Heroes Iron Man and Marvel Tōkon: Fighting Souls
make that intent especially clear, but their art is reference only. Cross-ROM analysis found no
exact Iron Man/War Machine body-tile twins, and importing those graphics would violate this patch's
stock-ROM/Fightcade constraint. V3 therefore continues Gold's existing group $18, sub $02 body
chain through all twelve observed records, suppresses only the normal class-$1C plasma child
while the custom action marker is live, and attaches Onslaught's already present beam family to the
measured chest pixel. The anchor is forward +20, Y −82 on subrecord $06, then forward +21,
Y −81 on subrecord $00; “forward” mirrors with facing. The fighter body carries zero attack
metadata during the super, so only the native class-$B4 beam family can hit.


An exact render-consumer trace proves that the huge white/cyan contact cap is real class-$B4
donor composition—not a random tile, background hole, palette fault or hit spark. The repeated
subtype-$04 display lists at $322AC4 and $322D2A build the oval slice by slice. Hiding a slice
leaves active, invisible damage; substituting narrower stock lists opens rectangular gaps. Under
the Fightcade constraint—no ROM expansion, new graphics or imported sprite data—there is no safe
stock-list replacement. V3 therefore keeps the donor-native cap as a documented visual limitation
instead of disguising collision or weakening the object family.

A clean stock-ROM control answers the comparison directly: Ryu can perform a second airborne Shinku Hadoken in one ordinary jump when the first starts early enough, its full recovery finishes before landing, and another meter level remains. Gold follows that rule. He may not retrigger the beam while its action or recovery is still active, but v3 does not invent a one-use-per-jump lock that stock Ryu lacks. The actual meter bug was different: v2's borrowed attack row awarded Gold gauge on the beam's own hits. Historical v3 spent one level per activation and gave the shooter zero meter back on hit, block or whiff while preserving the defender's stock meter behavior. Current Combined v3 replaces that old balance: Gold requires and spends exactly two levels.
Fix the refund at the return path, not in the damage table
Simply changing HIT TEST Shc would affect every stock user of the borrowed rows. V3 instead
interposes at the common hyper-gauge adder $1CD1E and checks the caller that is returning into it.
The custom Gold path is suppressed only for the subtype-$04 hit return at $1CCAE and the
subtype-$02 guard return at $1CD16; both must also trace back to the marked Gold-owned
class-$B4 family. The defender route at $1CC2A is never redirected. Ordinary attacks, native
Onslaught and the victim's gauge therefore keep using the stock adder.
flowchart LR
H["custom B4 hit<br/>return $1CCAE / subtype $04"] --> G{"Gold-owned<br/>private lineage?"}
B["custom B4 guard<br/>return $1CD16 / subtype $02"] --> G
G -->|"yes"| Z["skip shooter credit<br/>refund = 0"]
G -->|"no"| A["stock gauge adder<br/>$1CD1E"]
D["defender return<br/>$1CC2A"] --> A
O["every ordinary caller"] --> AThat historical v3 gate was tested three ways because “one level spent” alone was not enough. A whiff ended one level lower; a hit ended one level lower; a guard ended one level lower. The defender received the same gauge as the stock control. This separates activation cost from post-contact reward and makes the rule reusable for any future borrowed boss attack.
The first screenshots below establish the stock donor and its native object family. The later left/right captures document the superseded Gold War Machine build, not final visual acceptance. The 1,214-byte v2 ledger remains only as a fingerprint for identifying the withdrawn hip-origin build. V3's frozen 1,478-byte behavior ledger and final player-package identities supersede it.
First, name the two things correctly
Gold War Machine is not “ordinary War Machine with whatever palette happens to be loaded” at the point where code should be gated. The two share art and much of a dispatcher family, but the engine keeps distinct playable identities:
| Fighter | Internal id | This patch may change it? |
|---|---|---|
| Ordinary War Machine | $02 | No |
| Gold War Machine | $28 | Yes, only in the air and only on the new command |
| First-form Onslaught | $22 | No playable change; native effect donor only |
That one comparison must sit in front of the command recognizer, the new fighter state and every
object exception. Testing the gold palette on screen is not enough; the live gate must read fighter
id $28. A control run with id $02 must remain byte-for-byte on War Machine's stock routes.
Published move lists call the requested first-form attack Mega Optic Blast. The executable does
not contain or display an ASCII MEGA OPTIC BLAST label; it identifies the move numerically as
e6=$0A and structurally through its class-$B4 family. Its fire event creates a subtype-$06
root, which grows subtype-$00, $02 and $04 pieces. It is not the e6=$06 lunge/fragment
action we first mistook for the donor, and it is not a separate second-form Giant Onslaught
sequence. In this post, “Mega Optic Blast” is established guide/community nomenclature tied to the
proven numeric route, not a title card added by the patch or a readable string found in the ROM.
flowchart LR
R["airborne giant-beam request"] --> C{"recipient id"}
C -->|"$02"| W["ordinary War Machine<br/>negative control"]
C -->|"$28"| G["Gold War Machine<br/>intended recipient"]
R --> D{"Onslaught donor"}
D -->|"first form / e6=$0A"| O["Mega Optic Blast<br/>class $B4"]
D -->|"e6=$06"| F["lunge / fragment family<br/>rejected donor"]
D -->|"second form"| X["Giant Onslaught eye pillar<br/>not this patch"]
G --> J["Gold-only airborne state"]
O --> JFollow the boss, not the screenshot
First-form Onslaught's special dispatch cluster begins at $26F78. Action e6=$0A routes to handler
$277BE. The event body begins at $2784E, advances the phase, sets hold timer +$4E=$00A0,
then tail-jumps from $27858 to $A546E. That allocator creates the native class-$B4,
subtype-$06 root. The root is the entry to a linked $00 / $02 / $04 segment family, not a
stream of independent class-$68 fragments.
There is one less obvious dependency. Stock class-$B4 expects an Onslaught $22 parent showing
animation group $02, sub $2C. That animation is the boss body/charge presentation wrapped
around the effect. Gold War Machine is supposed to keep his airborne MP pose, so the mod omits
Onslaught's body and charge art—but it cannot omit the contract silently. A custom admission path
must be limited to a privately marked Gold-owned root. Gold War Machine himself stays $28 at all
times; donor identity is written directly to the beam objects at their native subtype initializer
tails.
The useful donor trail is compact:
| Stock system | Address / value | What it owns |
|---|---|---|
| Onslaught special dispatch | $26F78, e6=$0A | Selects the attack published guides call Mega Optic Blast |
| Onslaught parent handler | $277BE | Owns the native boss action |
| Native fire event | body $2784E; tail JMP $A546E at $27858 | Enters the effect root allocator |
| Native root spawner | $A546E | Allocates class-$B4, subtype $06 |
| Native beam family | $B4: $06 → $00 / $02 / $04 | Builds the complete linked blast |
| Effect palette sources | $1CBDE4, $1CBE04 | Class-$B4 beam rows |
| Stock parent animation | group $02, sub $2C | Onslaught body/charge omitted by this design |
| Object-local donor identity | +$52=$0022 | Onslaught identity stamped on beam objects, never on Gold |



This is the opposite of a sprite-import problem. The target ROM already contains the art, palette,
object allocator, animation schedule and collision behavior. The missing work is permission:
admit one privately marked Gold-owned root to the stock class-$B4 family without weakening the
same checks for every other object in the match or temporarily changing the fighter's identity.
These two frames remain stock Onslaught donor references. They are not class-$68 candidate
captures and they are not the patched fighter proof; the frozen left/right Gold War Machine
captures appear below and are tied to the release payload by the evidence ledger.
The original candidate labeled e6=$06, handler $27522 and class-$68 as Mega Optic Blast.
Static control flow made that route look plausible, but the live result produced the wrong
lunge/fragment imagery. Matching an object id and surviving several frames did not make it the
requested beam. Comparing the render against Onslaught's actual blast sent the trace back to the
dispatcher and exposed e6=$0A / class-$B4 as the real lineage. Nothing built on the rejected
mapping is being represented here as a release.
How one beam object summons the rest
The native beam does not allocate six columns from one fixed “draw this move” table. It is a small object network driven by events and counters:
$A546Eallocates one class-$B4, subtype-$06root and links owner+$54to the fighter.- The root's animation event at
$A5AE2calls$A5488. $A5488reserves two objects and creates the linked subtype-$00body emitter and subtype-$02tip; the tip points back to the body through+$58.- Subtype
$00initializes its timer to$6000. It emits one subtype-$04middle/tail piece immediately, then$A5650..$A565Cemits another every three eligible updates through$A54D4. - Timer underflow, animation completion, off-screen rules, interruption or allocation failure ends the family through the native free paths.
flowchart LR
P["Gold parent state"] --> R["$B4/$06 root<br/>$A546E"]
R -->|"animation event"| E["$A5488"]
E --> B["$B4/$00<br/>body emitter"]
E --> T["$B4/$02<br/>linked tip"]
B -->|"immediate, then every 3 updates"| M1["$B4/$04"]
B --> M2["$B4/$04"]
B --> MN["... up to 33 attempts"]
R & B & T & M1 & M2 & MN --> F["native lifetime + free paths"]The $60 high-byte timer permits 33 subtype-$04 allocation attempts. Including the root, body
and tip, the theoretical lifetime is 36 allocations, not 36 simultaneous objects. The accepted
fixtures peak at six or seven live $B4 objects because older tail pieces retire while new ones are
emitted. This is how the game “knows how many”: an explicit counter and event schedule, not the
number of beam sprites and not a global projectile preload.
Every marked damaging descendant is stamped with bank +$47=$04, id +$52=$22, hit-set
+$68=$000FD7FC and shape table +$6C=$003A8800. Subtypes $00/$02/$04 begin on property row
+$80=$34; subtype $00 periodically rearms row $35, and a $04 child can inherit its emitter's
current row. Row $34 at $000F78D2 displays Dmg=$06, Piy=$00, Sto=$08, Snd=$00,
Slp=$0F, Shc=$04, Grd=$00, Mut=$0000; row $35 at $000F78F2 displays the same fields
except Shc=$05. Their other differences live in bytes HIT TEST does not show, so I do not invent
names for them. Snd does not mean sound—it is the standing hit-stun countdown. The subtype-6
event posts projectile cue $0450 separately after the linked pair is created.
The same Hit Test columns apply to the beam
Capcom's developer menu labels the 32-byte property record Dmg Piy Sto Snd Slp Shc Grd Mut.
The Magnetic Shockwave construction ledger
shows real Roll, Hulk and 10 ROCK MAN captures and the complete byte layout. The operational
meaning is the same for Onslaught's row $34:


| Field | Offset | Consumer-backed meaning |
|---|---|---|
Dmg | +$00.B | Base life damage before scaling |
Piy | +$06.B | Piyo/dizzy reserve drain |
Sto | +$07.B | Hit-stop ticks |
Snd | +$08.B | Standing hit-stun ticks; not audio |
Slp | +$09.B | Sleep/knockdown/down-time budget |
Shc | +$10.B | Hyper-gauge charge parameter |
Grd | +$18.B | Guard-stun override |
Mut | +$1A.W | Low-six-bit multi-hit rehit-vulnerability window; not invulnerability |
00 Dachi is a different developer-menu artifact: Capcom's shipped name for internal id $00,
apparently a large standing/template scaffold rather than a finished secret fighter. It is not the
meaning of Snd, and its animation tree is not this property table. Experiments that replace a
Dachi branch and alter an assist are evidence of a reused helper route, but not proof that every
assist literally has id zero; each helper still needs its own allocator, owner, donor identity,
palette, collision, sound and lifetime.
This also answers why copying beam pictures or Cajun Explosion pictures into another animation can produce art with no damage. Collision belongs to a live object carrying the correct class/subtype, owner, donor identity, hit-set, shape table, property row and active flags. Audio is a separate event. Nothing is missing because it was not loaded at boot; the runtime initializer contract was never created.
One motion, two altitude contracts
Gold War Machine's ground QCF + two punches already belongs to Proton Cannon. That route must stay exactly where it is. The new recognizer exists only in the airborne command chain and runs after the stock air hypers and specials have had first refusal.
| Situation | Input | Expected result |
|---|---|---|
| Gold War Machine on ground | QCF + any 2P | Stock Proton Cannon |
| Gold War Machine in a normal jump | historical v3: QCF + any 2P, one level | Mega Optic Blast |
| Gold War Machine in a true down-up super jump | historical v3: QCF + any 2P, one level | Mega Optic Blast |
| Gold War Machine airborne | MP without the command | Stock air medium punch |
| Gold War Machine airborne | QCF + one punch | Reject; do not spend meter |
| Gold War Machine airborne | QCB + any 2P | Reject; direction is not interchangeable |
| Ordinary War Machine airborne | QCF + any 2P | Stock behavior; never the new action |
| Gold War Machine airborne | QCF + any 2P, zero levels | Reject without entering the new action |
The “use air MP” request describes presentation, not a replacement normal. The parent state enters
Gold War Machine's stock airborne medium-punch chain—animation group $18, sub $02—and lets its
twelve observed records continue through wind-up, discharge and recovery. The normal class-$1C
plasma allocation is rejected only when Gold's private super marker is live. The body attack fields
are zero during that state, so a chest flash or pose cannot become a second invisible hitbox. With
no matching QCF+2P record, plain air MP still creates its normal plasma and follows the stock route.
Why calling the stock spawner is not enough
The native class-$B4 family defends its assumptions. Its root follows +$54 to the parent and
expects fighter id $22 plus animation $022C: group $02, sub $2C. Calling $A546E directly
from Gold War Machine $28 therefore does not recreate the boss context. Globally removing that
check would be worse—it would loosen the contract for every stock $B4 object in the match.
The subtype chain also copies donor-owned graphics and collision identity at several initializer
tails. Fixing only the $06 root is insufficient because $00, $02 and $04 descendants can
inherit Gold War Machine fields and render the wrong art. The release therefore uses narrow
hooks for each native subtype, and every one must distinguish the marked custom lineage from stock
Onslaught objects.
V3 keeps the correction object-local and explicit. At each marked $B4 subtype initializer tail,
the payload stamps +$47=$04, +$52=$0022, +$68=$000FD7FC and +$6C=$003A8800 directly on that
effect object. It never writes $22 into Gold War Machine, not even for one instruction window.
The v2 formula was measured from the fighter root rather than the rendered chest plate, which is
why real play showed the cap around Gold's side/hip. V3 instead uses two measured body records:
sub $06 attaches forward +20, Y −82; sub $00 attaches forward +21, Y −81. “Forward” is
evaluated after facing, so the art and collision roots mirror together. Gold's own X/Y remains
untouched.
The release design keeps those defenses intact for stock objects and creates a narrow exception:
sequenceDiagram
participant G as "Gold War Machine $28"
participant P as "custom parent state"
participant R as "marked B4 subtype $06 root"
participant H as "stock class-$B4 handler"
participant C as "subtypes $00 / $02 / $04"
G->>P: airborne QCF + 2P
P->>P: air-MP startup + one hyper commit
P->>R: call $A546E, owner $28, private marker
R->>H: request stock update
H->>R: admit marked Gold provenance without $022C body art
R->>C: grow the native subtype chain
H->>C: stamp +47/+52/+68/+6C at subtype init tails
H->>C: mirror marked art + hitboxes from the measured chest anchor
C-->>P: final marked object retires
P->>P: clear A5 provenance and +1CF busy latch
P->>P: call stock $A4B0 to restore Gold's runtime rowsGold War Machine remains the real parent and owner for scope and cleanup. The effect roots and
descendants receive Onslaught's object-local art identity where the rendering tree expects it. The
exception therefore requires the object class, private marker, Gold owner id and owner marker
together. Native Onslaught follows the unaltered $022C stock branch; unrelated class-$B4
allocations cannot enter the custom one.
The palette has the same lifetime trap found during the
Magnetic Shockwave restoration, but not the same legal
solution. Mega Man's frozen patch could lease a writable character source workspace. Gold War
Machine's +$2C8 instead points into immutable program ROM. The rejected draft tried to treat
that address as writable; CPS-2 ignores those writes, so any apparently correct first frame was
really depending on later native class-$B4 palette updates. There was nothing valid to back up or
restore at that ROM address.
The 1,214-byte v2 payload therefore leases the writable runtime destinations directly: row +$20
under the primary pointer at +$288, and row +$20 under the secondary pointer at +$28C. It
copies the donor's 12-bit colors from $1CBDE4 while preserving the CPS-2 tag nibble required by
each destination: the primary row retains its existing high tags, and the secondary row receives
the stock $F high tags. The adjacent $1CBE04 row remains part of the native class-$B4 cycling
path; it is not misrepresented as a writable Gold source.
A direct runtime repaint would still lose a race with a later common base-palette reload. V3 keeps
the scoped interpose at $A4C6, reproduces the displaced $A4B0 copy/busy behavior, and
reapplies the optic row only when all of these are true: fighter id $28, state b0=$2A, action
e6=$1A, and provenance byte +$1CE=$A5. Fighter byte +$1CF records that the global palette
writer was busy; when it clears, the active lease is repainted once instead of advancing through a
partially written row.
Cleanup reverses that ordering deliberately. It clears +$1CE provenance and the +$1CF busy
latch before calling stock $A4B0. The common reload reconstructs Gold War Machine's current
base and alternate runtime rows, while the scoped $A4C6 wrapper sees no $A5 marker and therefore
does not repaint Onslaught colors. V3 requalifies those palette-lifetime mechanics in the dense
contact and interruption matrix. The same traces rule out the shared-row lifetime as the source of
the apparent cutout: the shape persists with correct palette rows because it belongs to the native
subtype-$04 display lists.
flowchart TD
ROM["Gold +$2C8<br/>immutable program ROM"] -. "never written or backed up" .-> Guard["source-immutability gate"]
Donor["Onslaught RGB12<br/>$1CBDE4"] --> Primary["+$288 + $20<br/>preserve existing high tags"]
Donor --> Secondary["+$28C + $20<br/>retain stock $F tags"]
Lease["+$1CE = $A5 provenance<br/>+$1CF = palette-busy latch"] --> Reload["scoped $A4C6 wrapper"]
Reload --> Scope{"id $28 / b0 $2A<br/>e6 $1A / marker $A5?"}
Scope -->|"yes"| Primary
Scope -->|"yes"| Secondary
Scope -->|"no"| Stock["stock palette result unchanged"]
Primary --> Beam["marked class-$B4 family"]
Secondary --> Beam
Beam --> Retire{"final marked object retired?"}
Retire -->|"no"| Reload
Retire -->|"yes"| Clear["clear +$1CE / +$1CF"]
Clear --> Restore["call stock $A4B0"]
Restore --> StockThe “cutout square” is native beam composition
The alarming screenshot is not a corrupt sprite decode, checkerboard palette failure, stage hole
or hit spark. The giant pink honeycomb body, white center and layered cyan/purple cap are genuine
first-form Onslaught class-$B4 art. A clean stock boss capture produces the same shapes and colors.
The difference is context: boss-scale pieces now surround a human-sized airborne fighter, so their
overlap reads like a square missing from the beam.
The reusable answer came from tracing the renderer instead of guessing at screenshots. $494A
enqueues six-byte (layer word, object long) pairs into $FFE080..$FFE588, with the count at
$FFE07E. Consumer $24BD0 walks that queue backward; $24C3A reads the selected object's
+$40 sprite-list pointer. On the marked frame, the custom family contributes one subtype-$00
muzzle list at $322A62 and repeated subtype-$04 lists. Active list $322AC4 and its alternate
$322D2A both keep the rounded cap. The shape is the combined result of multiple stock pieces,
not one bad rectangle that can simply be hidden.
The controlled removals also establish the safety boundary:
| Render experiment | What happened | Decision |
|---|---|---|
Suppress subtype $00 | Removes the muzzle layer, not the rounded cap | Reject |
Suppress one subtype $04 | Removes a successive 64-pixel body/oval slice while its collision remains live | Reject: invisible damage |
Substitute terminal $322BCA/$322C26/$322C62/$322CA6 lists | Keeps collision but creates narrow rectangular gaps | Reject |
Keep active $322AC4/$322D2A | Preserves native art, collision, damage and cleanup | Accepted stock-only result |
That gives future character work a repeatable draw-queue method:
- capture the exact objectionable frame, not merely the move's action number;
- record every queue pair, owner, class, subtype and
+$40display-list pointer before the consumer draws it; - suppress one marked draw at a time in a research-only ROM and compare the framebuffer;
- keep collision overlays and damage logs running during every visual suppression; and
- remove the research interpose before freezing the release.
This distinguishes a background seam from a composite object and prevents a “cleaner” screenshot from silently shipping an invisible hitbox.
There is therefore no safe correction available under the project's constraints. Removing the
shape would require a custom same-count display list or new graphics composition, which is a
separate art project. This release does not expand the ROM, import another game's sprites or ship
an invisible damaging segment. V3 transparently keeps the native donor cap as a known visual
limitation. The temporary $24C3A research interpose used to prove the lists is not present in the
release payload.
| Origin trial | What the live gate found | Decision |
|---|---|---|
| Native boss origin | Correct Onslaught geometry, visibly detached from the human-sized fighter | Reject for Gold |
v1 +16 | Improved over the boss origin, but was not measured against the rendered chest | Superseded |
v2 −64 | Mechanical damage and cleanup passed, but real play shows hip origin, frozen body choreography and a contact square | Reject |
| v3 measured anchor | Native air-MP body without its plasma child; mirrored +20/−82 and +21/−81 chest attachment with native cap documented | Accept |
flowchart LR
S["Early Gold capture<br/>looks corrupt"] --> V{"compare with stock<br/>Onslaught B4"}
V -->|"same art + palette"| N["native boss art<br/>decode is valid"]
N --> P["test object-local<br/>origin placement"]
P --> A["native boss origin<br/>detached"]
P --> B["v1 +16<br/>still too far away"]
P --> C["v2 -64 mirrored<br/>hip-origin failure"]
P --> D["v3 measured<br/>chest attachment"]
A --> R["reject"]
B --> R
C --> R
D --> F["accept after<br/>visual + hitbox gates"]The withdrawn captures explain why v3 exists
These are not donor frames or a forced debug state. Each image came from an ordinary-input v2 run, and the right/left reversal proved the family could mirror and clean up. They are retained as superseded engineering evidence. They did not prove a chest attachment, moving body choreography, clean contact art or visually aligned collision.


| Withdrawn-run measure | Result | What it established |
|---|---|---|
| historical one-level commit | 3→2 | debited exactly once at the startup event |
| fixture damage | 42–45 | pair/timing dependent; right/left visual fixtures ended at 101/102 from 144 |
| live B4 objects | 6–7 | one native subtype 0/2/4/6 family |
| visual contract | REJECT | hip origin, frozen body and blank-square contact remained |
Each family cleaned up its object ownership, runtime palette lease, $A5 provenance and +$1CF
busy latch. That remains valuable lifecycle evidence. V3 preserves it and adds the missing body,
chest, meter-return and contact proof in ordinary and true super jumps.





| Historical frozen-v3 measure | Result | Note |
|---|---|---|
| dense contact lanes | 18/18 | both facings, normal and true super jumps, hit and guard coverage |
| interrupt lanes | 4/4 | no orphan B4 family, palette lease or stale provenance |
| startup chest anchor | +20/−82 | sub $06; mirrors by facing before the body advances |
| sustain chest anchor | +21/−81 | sub $00; native group-$18/sub-$02 choreography continues |
| shooter refund | 0 | hit, block and whiff; defender gauge remains stock |
| body attack metadata | 0 | only the native class-$B4 family deals damage |
How the address map becomes the patch
The full CPS-2 hex workflow applies here too. The Gold build is a useful second example because the donor and recipient share neither a safe parent identity nor a writable palette source:
- verify the exact clean archive and construct the logical 68000 view;
- trace e6=
$0A→$277BE→ event body$2784E→ tail jump$27858→ allocator$A546E; - map every
$B4/$06/$00/$02/$04initializer, identity field, palette consumer and free path; - add an airborne command record and Gold-only parent state in an all-
$FFpark at$3F2000; - interpose only the eleven exact sites whose stock preimages match, including the full eight-byte
common-palette hook at
$A4C6; - encrypt only the changed opcode words for the canonical encrypted-Euro
mvscparent, then word-swap and split them back into their original members; and - accept the result only after real-input normal/super-jump, meter, both-facing, close-range, palette-busy, interruption, pool-failure, native-Onslaught and ordinary-War-Machine controls.
That is what “hex editing a move onto another character” means in a release build. The visible hook bytes are the smallest part. Most of the work is proving which state owns the objects and that every rejection and cleanup route remains stock. The published installer contains the custom payload, preimage assertions and hashes—not Capcom ROM data.
Reusing one vertical pillar from second-form Onslaught with Captain Commando's Corridor startup is
plausible without importing art, and the donor is now traced: second-form e6=$08 reaches
$0685D8; its event calls $0962F8 with d0=$0400, allocating class-$28, subtype-$04, whose
handler is $096750. One stock pillar is itself a recursive chain—seven active segments plus a
terminal sentinel—so a wrapper must make exactly one root call and preserve that internal chain,
not suppress the children that construct the pillar. Its row $3D is boss-scale
(Dmg=$26, Sto=$0A, Slp=$0A, Shc=$3C) and needs deliberate rebalance; an explicit sound id
has not been proven.
Making an attack a super does not automatically grant even one invulnerable frame. Invulnerability
has to be authored explicitly through the fighter's hurtbox/state flags and verified frame by frame.
The requested one or two post-freeze invulnerable updates belong on Captain's real hurtbox gate.
HIT TEST Mut is not that gate; it opens a victim to repeat hits. The proposed
standing-heavy-kick → custom super → Captain Sword route remains a combo design to test, not a
result claimed by this Gold War Machine release.
What the v3 harness proves
The v3 verifier drives the ordinary matcher, watches the full object family and deliberately disturbs the lifetime edges that broke earlier candidates. Every lane starts in a fresh emulator process, and every pass is tied to a checksummed evidence file rather than a summary label alone.
| Gate | Frozen v3 result |
|---|---|
| Fresh-process base matrix | PASS; 16 Gold lanes plus two controls boot separately so temporary parser state cannot contaminate the next case |
| LP+MP, LP+HP and MP+HP | PASS through real input in normal and true down-up super jumps; same action and one-time debit |
| Existing airborne hook selection | PASS A/B control; $02896A is live for both jump types and $028A00 is not patched |
| Zero meter | PASS; no custom action and no root allocation |
| Ground QCF+2P / plain air MP | PASS; Proton Cannon and the normal remain stock |
Ordinary War Machine id $02 | PASS on ground and in air; never enters the Gold route |
| Body choreography | PASS; group $18 / sub $02 continues through all 12 observed records; body attack metadata stays zero |
| Plasma ownership | PASS; class $1C is suppressed only inside the marked custom action; plain air MP still creates it |
| Measured chest origin | PASS; sub $06 uses forward +20, Y −82; sub $00 uses forward +21, Y −81; both mirror |
| Dense contact matrix | PASS 18/18; contact, facing, jump-state, hit/guard, object, palette and cleanup evidence retained |
| Shooter meter returns | PASS; zero refund on hit, block and whiff; defender gauge path remains stock |
| Repeat timing | PASS; active/recovery retrigger rejects; a later activation after full recovery follows stock Ryu timing |
| Palette source and runtime rows | PASS; immutable +$2C8 unchanged, both writable rows keep correct RGB12 and CPS-2 tags |
Real $A4B0 reload | PASS with the scoped $A4C6 wrapper |
| Busy writer plus two repeats | PASS; repaint is bounded and every lease/latch clears |
| Four interruption lanes | PASS 4/4; no orphan family, palette lease or stale provenance |
| Forced allocator carry | PASS; the dedicated pool stub is hit once, returns carry, creates zero $B4 objects, exits promptly and leaves lease/latch bytes at zero |
| HP+HK team command | PASS; cleanup does not steal the stock team route |
| Native Onslaught differential | PASS; object/contact logs are byte-identical and 109/110 adjacent framebuffers match. The reproducible k261 delta is a one-frame stage/UI palette phase; beam/object state remains identical and the evidence preserves the difference mask. |
| Supported base | Canonical 21-member encrypted-Euro mvsc; Phoenix clone fixtures fail closed and are not advertised |
One negative test is supposed to fail. The harness removes only the $A4C6 wrapper and triggers a
real $A4B0 reload during the beam's first update; the palette mismatch then appears exactly where
predicted. Restoring the hook makes the otherwise identical run pass. That controlled failure is
evidence that the wrapper fixes the palette lifetime, rather than a release failure hidden by the
suite.
The historical v3 answer was yes with at least one level. In current Combined v3, select Gold
War Machine, enter an ordinary jump or a true down-up super jump, then perform QCF + any two punch
buttons with two levels. He continues through the native air-MP body choreography and fires
Onslaught's class-$B4 Mega Optic Blast from the measured chest anchor. Ground QCF+2P remains
Proton Cannon; plain air MP and ordinary War Machine
stay stock. The apparent contact cutout remains because it is native donor composition and no safe
stock-only substitute preserved both presentation and collision.
Public corroboration: the Marvel vs. Capcom mini-FAQ lists first-form Onslaught's QCF+two-punch move as Mega Optic Blast and separates it from the second-form move list. The corrected e6 value, handler, fire event, object-class/subtype lineage, parent-animation prerequisite and palette sources in this construction ledger come from local disassembly and visual validation against the verified arcade program.