Skip to content

Add X2/X3 boss weapon mods with shared source ROM setup - #53

Merged
mstan merged 60 commits into
mainfrom
feat/x2-x3-weapons
Sep 30, 2026
Merged

mstan merged 60 commits into
mainfrom
feat/x2-x3-weapons

Conversation

@mstan

@mstan mstan commented Sep 29, 2026 •

Copy link
Copy Markdown
Owner

Add X2 and X3 boss weapons as separate optional mods on the released Zero baseline. Each pack accepts its original USA ROM and extracts assets automatically; X3 shares its ROM path with Zero. Both characters can use all sixteen weapons, with persistent energy and charged specials gated by X1's arm upgrade.

Pause-menu L/R selects X1, X2 or X3. Gameplay L/R cycles weapons and buster only within the selected set. X1 retains native unlock filtering. The menu icons and gameplay HUD footers are separately extracted original assets.

All sixteen normal/charged gameplay paths are implemented, including source projectile animations, relative damage, energy, terrain interaction and utility mechanics: crystallization/time distortion, gravity pull/lift, captured-enemy bombs and charged targeting cursors. Damage preserves weapon-to-buster ratios on X1's HP scale with saved fractional carry and native immunity. Boss responses remain neutral except for the requested X1 elemental compatibility: Speed Burner uses Fire Wave's reactions and weakness damage, and Triad Thunder uses Electric Spark's, including Armored Armadillo's armor break. Underwater Speed Burner bubbles do not ignite targets. Zero's boss-weapon use and X1 enemy-specific responses are deliberate adaptations.

The owner accepted this checkpoint for merging and couch co-op development next. Original SPC sounds, the remaining contact/timing audit and further stage playtesting remain follow-up work. Spinning Blade now uses the original charged hold/retraction cadence, 32 orbit positions, Up/Down controls and surviving-hit recoil; the detached blade stops dealing damage and loses its tether. Tornado Fang contact debris and Speed Burner's underwater bubbles use original sprites and palettes. Crystal Hunter now preserves the frozen enemy's visible pose inside its shell. Zero's Ride Armor presentation follows X1's native pilot offsets with a cropped original Zero pose; vanilla X3 has no playable Zero pilot art. Zero shipped separately in #52; red READY landed in #54. The Zero charge-color/cancellation correction is also isolated in #57.

Validation: focused ROM-runtime suites for all implemented weapon paths as each landed; both-character arm gating, energy and snapshot replay; real native enemy collision, capture and death; menu/set cycling and buster regression checks. Private copies of the reported slots verify Zero's Ride Armor states and Speed Burner destroying Penguin's bunker for both characters. A native Armadillo fixture verifies Triad's three-HP hit and original armor-break sequence. Crystal Hunter, Speed Burner, Triad Thunder and shared damage regressions pass. Earlier Parasitic Bomb checks include preserved host art, payload-to-enemy damage, charged homing impact and release cleanup; Gravity Well regression passed after the shared host-renderer change. Fang debris matches all eight original live-VRAM poses. Native/reference source extraction agrees byte-for-byte, including copier headers and wrong-ROM/cache handling. Windows game, runtime-test and capture targets build; render captures were visually reviewed. The new build boots with automatic ROM extraction without loading a save state. These checks validate gameplay and rendering, not source-audio fidelity. The owner's running playtest is untouched.

Source addresses, ROM requirements, save migration, deliberate adaptations and remaining work are recorded in docs/x-weapons-port.md, docs/x-weapons-source-notes.md, docs/weapons/, docs/mod-source-roms.md and docs/zero-weapons-coop-roadmap.md. No ROMs or extracted game assets are committed. Co-op remains a later separate mod.

The reported Penguin canister clipping was compared against the native PPU: the player/canister pixels match when using X art; Zero exposes the same authored foreground mask with a wider pose. Native priority remains intact. The final five focused CTests and private canister captures pass. Updated couch co-op requirements are recorded in the roadmap; no co-op implementation is included in this PR.

# Conflicts:
#	src/mmx_renderer.c
#	tests/mmx_adaptive_state_test.c
@mstan
mstan marked this pull request as ready for review September 30, 2026 00:24
@mstan
mstan merged commit 7e2dcc3 into main Sep 30, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant