Skip to content

Project Status

github-actions[bot] edited this page Sep 22, 2026 · 263 revisions

Project status

Last consolidated: 2026-09-22.

Production pipeline

System Status Evidence and limit
Clean-ROM validation and separate output Production Implementation/CI-confirmed; exact USA Rev. 0 hash only
Header checksum update Production Implementation/CI-confirmed
Compact eight-stage selector Production Runtime-confirmed A-button route; compact index maps to native 0,1,2,3,4,5,8,9
1 KiB arena reservation and native payload Production Runtime-confirmed load/execute; guarded bounds and tests
Ordinary-pickup persistence Production beta All eight stages runtime-confirmed at representative locations; all 84 are statically cataloged, not individually exhausted
Stage-local pickup randomization Production beta All 84 implemented and tested over 250 seeds; seed TEST153 first Fire location predicted/rendered/awarded Shield; full run pending
Pickup-driven XP progression Production beta Diagnostic B runtime-confirmed V2 allocation, XP restore, 85/258 rewards, Temple -> Wind transition and title -> Fire retention; nine-reward/full-tier run pending
Four inventory boxes Production beta Runtime-confirmed switching, transition preservation, stage-key masking; Game Over/reset edge still pending
BOX n OF 4 HUD text Production Runtime-confirmed native text path
Boot branding and seed phrase Production Redesigned 2026 legal-screen layout is Runtime-confirmed, including shared configurable <CHAR> EDITION, seeded two-line joke, BY SMEAG, and NOT LICENSED BY NINTENDO. Seeded joke uses a dedicated deterministic namespace.
Logo and selector-save bypasses Production Runtime-confirmed, legal screen and later/manual saves preserved
Outfit recoloring Production Runtime-confirmed palette modes; static TLUT source transform
Browser/CLI shared patch core Production beta Shared wheel/CLI core; Pages runs python -m compileall -q src/mkmszr before packaging. After the 2026-09-22 malformed-title-source regression and a stale-wheel cache recurrence, each Pages deployment now gets a unique PEP 440 wheel version/URL and a run-number cache-busted app.js; the generated unique wheel was manually imported successfully.
Rebranded title screen Production beta Candidate-B CI8/BGR555 title art plus configurable uppercase <NAME> EDITION are runtime-confirmed through the full current production pipeline. PR #42 merged corrected data-only composition as cebfe39c92e96590efbf571ee338467e2b7dc368; browser/CLI install it non-optionally. Temporary name field defaults to SUB-ZERO, max 12 characters, uppercase only.

Confirmed proofs, not product features

Proof Result Remaining work
Same-stage pickup substitution Full identity tuple changes award and art Generalized in current stage-local mode
Fire foreign Prison-key import Relocated/expanded resource file plus dedicated callback works Production resource planner, allocation policy, compatibility matrix
Prison extension-selector Potion coexistence Out-of-stock-range selector resolves appended Water Potion bundle while vanilla Herbs remain resident and functional Generalize into guarded production planner
Health urn external-to-embedded conversion Runtime-confirmed: Proof H converted 0x28F..0x292 to self-contained native type-4 blocks; imported Urn of Vitality rendered/awarded correctly in Prison while vanilla Herbs remained correct Generalized in the pure resource planner; production pipeline integration still gated
Fire ordinary enemy 0x0A -> 0x09 Spawns and plays normally Production policy and broader coverage
Temple monk imported into Fire Model loads, enemy moves/fights/dies Death/despawn presentation missing; arbitrary rosters unresolved
Temple XP progression proof Three proof pickups plus one vanilla Herbs control established no-combat-XP and pickup-driven tiers Generalized into the production Diagnostic B architecture; full nine-tier coverage and final art remain
Reverse Elbow host/action proof + genuine MKT import branch v6 established repeatable scheduler/action stability; v08/A1.7 runtime-confirmed genuine SCCOMBO10; Sektor direct replacements through Jump Kick / Flip Kick / Flip Punch are runtime-confirmed; v20 remains the accumulated raw-resource failure boundary Forward Flip, Back Flip, and High Hit are runtime-confirmed in v34; Low Hit remains pending because the tested enemy route did not provide a practical crouching-hit setup. v35 runtime-confirms Sweep Fall + Sweep Getup. v36 runtime-confirms Knockdown, v37 runtime-confirms normal Getup, and v39 runtime-confirms Stumble on the tested route. The broader v39 selector+Sektor composition is NOT globally confirmed: Prison initially renders correctly but catastrophically corrupts the scene/framebuffer at the first doorway/encounter-activation boundary. v40 keeps the same selector/helper composition but returns fighter file 0x87 to the much smaller v11 size 0x4D820; the same Prison doorway then works normally. v41 then keeps v40's exact reachable fighter content but pads file 0x87 with unreachable 0xFF tail bytes to exactly v39's 0x578BC size; Prison corrupts at the same doorway again. This runtime-confirms that loaded file-0x87 allocation footprint alone is sufficient to trigger the Prison failure at that size. No exact lower threshold is yet established. Low Hit remains pending. Storage/decoder architecture is now higher priority than further raw accumulation. Stock Sub-Zero fighter frames are static-confirmed to use native type-5 compression (0x80003314 -> 0x80065E00), distinct from rejected v13 type-4. v42 is runtime-confirmed: one genuine Sektor stance frame encoded into generated native type 5 is visually indistinguishable from the surrounding proven raw frames even under frame-by-frame inspection, and Prison's first doorway remains healthy. v43 compacts all five idle frames into native type 5 and shrinks file 0x87 from 0x4D820 to 0x49BAC; runtime-confirmed with clean frame-by-frame idle inspection, transitions, and Prison doorway behavior. v44 extends native type 5 to Idle + Walk F/B + Turn + Crouch and uses one shared dictionary across the seven physical walk frames. Runtime result: Idle/Walk F/B/Turn work, but Crouch hard-hangs before its first frame. Static audit found v44 packed Crouch shape records at unaligned offsets (+0x5037E and +0x51D81), so this is a rejected packing/alignment bug rather than evidence against type 5. v45 rebuilds the same composition with every referenced shape word-aligned; file 0x87 is 0x52740 versus raw v12's 0x620E0. Runtime-confirmed: Idle, Walk F/B, Turn, Crouch, repeated transitions, shared-Walk dictionary use, and Prison's first doorway all pass. v46 adds Crouch Turn/Block/Hit/Punch/Low Kick/High Kick plus Standing Block, uses encoder-v2 normal classes and transparent-run symbols, and contains 34 unique Sektor frames at file-0x87 size 0x56E78. Runtime: all animations, including Crouch Hit, work and Prison's first doorway survives; however Inventory hard-hangs only after crossing that Prison doorway. Inventory works before the door, and this failure has not been observed in other stages. This is treated as a Prison-specific post-door memory-pressure boundary. v47 keeps the exact same 34-frame/action set but reclaims file-local-unreferenced stock Sub-Zero frame storage for compressed image streams, shrinking file 0x87 to 0x52BC0. Runtime-confirmed on the Prison doorway -> Inventory route: the v46 post-door Inventory hang disappears. Fortress regression is now bounded: v47 (0x52BC0) and v45 (0x52740) both hang on the Mission Objective screen before stage music/gameplay, while v40 (0x4D820) loads Fortress normally and Inventory/moves work. This exonerates v47 reclamation as the onset. v48 is an exact allocation-footprint control: v40 reachable content with only inert 0xFF tail padding to v45's 0x52740 file-0x87 size. Runtime-confirmed: Fortress reproduces the same pre-music Mission Objective hang, proving loaded file-0x87 allocation footprint alone is sufficient to break Fortress at 0x52740. Exact lower threshold is not being pursued. v49/v50 are real-content locomotion controls using encoder-v2: v49 is 0x4E544 without stock-hole reuse; v50 is 0x4C320 with conservative file-local stock-hole reuse, below the known-good v40 footprint; runtime pending. Proof ROMs from v25 onward include the confirmed post-legal logo skip for faster iteration; v39 adds the compact selector but exposes a Prison-specific runtime failure at the first doorway boundary. Full-character composition still needs a storage solution

Latest Sektor storage milestone: v49 (file 0x87 0x4E544, no stock-hole reuse) and v50 (0x4C320, conservative locomotion-hole reuse) are both Runtime-confirmed in Fortress including Inventory. v51 preserves the full 34-frame v46/v47 crouch-combat composition while merging only contiguous already-proved dead stock intervals, allowing the complete 0x5E6C bytes of those intervals to be reused; file 0x87 falls to 0x5100C. Runtime result: Prison including first doorway + Inventory passes, but Fortress still hangs on Mission Objective. Unlike v45/v47/v48, Fortress music now starts before the hang, showing later progress through stage initialization. v52 pads runtime-confirmed v49 from 0x4E544 to exactly 0x5100C with inert 0xFF only; Runtime-confirmed Fortress reproduces v51's later music-playing Mission Objective hang. Therefore file-0x87 allocation footprint alone is sufficient at 0x5100C; the extra combat frames in v51 are not required. A stock-control benchmark now decodes all 341 native Type-5 Sub-Zero fighter frames and recompresses the exact pixels with the generalized encoder-v2 strategy: Midway uses 262,616 bytes for the Type-5 corpus, while the generated benchmark uses 261,798 bytes, 818 bytes (0.311%) smaller. This shows codec-level efficiency is already effectively at Midway parity; remaining Sektor size work is primarily dictionary/model grouping and resource packing rather than a missing compression algorithm.

Latest runtime findings

Toasty visual diagnostic v02 is Runtime-confirmed for HUD-wrapper execution, v03 is Rejected / intrusive, v04 is Runtime-confirmed as the logo-skip + Safe Stage Select test harness, and v05 is Runtime-confirmed with persistent V05 ALLOC 1, exonerating dynamic allocator 0x8001C2B4. v06 and v07 are both Rejected / intrusive and yield no raw-load conclusion. Preserved runtime evidence shows 0x80073CEC -> 0x8001E578 is context-specific and unsuitable as an arbitrary gameplay-HUD sprite API, superseding the v01-v05 renderer assumption. The real textured gameplay-HUD family is inside 0x8005BFB0. v08 is Runtime-confirmed: an inline clone of a stock textured 0x58-byte HUD node submitted through 0x8001EAE4 produced a second shifted gold HUD-like fragment. v09 is also Runtime-confirmed: changing only the source-node texture selector 0x12 -> 0x13 changed the shifted fragment from C-like to equals-sign-like and simultaneously altered a small portion of the original HUD frame, confirming node halfword +0x4A as live texture binding. v10 is Runtime-confirmed: the source HUD is intact while only the shifted clone uses slot 0x13, proving clone-local +0x4A texture rebinding. v11 is Rejected / failed as an independent fixed-slot allocation: the stock HUD stayed intact but the shifted clone became a small multicolored/noisy fragment instead of matching the slot-0x13 equals-sign control. v12 is Implementation/static-confirmed and tests slot 0x17 only as a direct alias of slot 0x13's renderer metadata/backing pointer, with no new texture allocation or pixel copy. Toasty audio v03 remains independently Runtime-confirmed and untouched.

The Temple XP proof is confirmed: combat does not award XP; collecting the proof rewards sets XP to 85 and then 258; the second threshold activates the next tier; nothing is added to inventory; ordinary pickups and progression rewards coexist. The proof model appears pale blue-grey and Herbs-like. The desired final presentation is a bright-blue body with a bronze handle.

A first production-layout attempt was Rejected / failed on 2026-09-20: Temple reached the Mission Objective screen and loaded stage music, then hung just before gameplay appeared. Production was rolled back to runtime V1.

Follow-up Diagnostic A is Runtime-confirmed: with the progression stage-entry restore helper bypassed, the same V2 allocation and generated progression callbacks loaded Temple normally. XP 85 and 258 rewards worked, special-move tiers unlocked, combo EXPERIENCE stayed suppressed, combat awarded no XP, and normal/progression Herbs coexisted with identical Herbs graphics.

Diagnostic B then removed only the early tier-evaluator call from the restore helper. It is Runtime-confirmed through Temple completion, Temple -> Wind with XP 258/two moves retained, and title-menu -> Fire with the same XP/moves retained. The original hang is therefore attributed to calling the native tier evaluator too early during stage initialization. Production now uses Diagnostic B behavior: restore XP at stage entry, but evaluate tiers only when a progression pickup is collected.

The behavioral Reverse Elbow branch is now historical host-action evidence rather than the intended final implementation. Later v8.1-v8.3 tests established usable high-speed directional motion and a proof-only forced crossover, but also exposed collision/jitter and freeze/strike mismatches inherent to recreating donor behavior with native approximations. The project has pivoted to a genuine MKT→MKMSZ compatibility layer. The single-frame import branch then resolved descriptor endianness/order, palette isolation/opacity, raw-wrapper type, and CI row-stride conversion. v08/A1.7 is runtime-confirmed: Back → Forward + Low Kick renders the genuine MKT Rev. 2 SCCOMBO10 Reptile/male-ninja frame coherently inside MKMSZ, with the true 42x95 geometry, donor palette, 44-byte aligned row stride, and clean restoration of stock Sub-Zero. This establishes genuine foreign fighter-sprite transplantation for this MKT resource family.

1.0 required scope

The 1.0 randomizer is not considered complete with stage-local shuffling alone. Required before 1.0:

  1. Global cross-stage item randomization. Items must be able to appear in other main stages, requiring a production resource-import/materialization planner rather than copying stage-local resource selectors verbatim.
  2. Global deterministic shuffling. Keep the current stable seeded Fisher-Yates approach, but apply it to the global logical item pool rather than eight independent stage pools.
  3. Whole-run solvability validation. Reject seeds whose progression graph cannot reach the required end-state. Use current stage/location requirements as source of truth; the legacy Lua fixed-point solver is a useful design reference but its location rules are stale/incomplete. Rejected attempts must be derived deterministically from the original seed plus an explicit attempt index, so regenerating the same seed always produces the same accepted layout even when several attempts are required.
  4. Randomizer HUD/UI. At minimum expose the run information needed to play the seed: check progress, required Power Upgrades/current progression status, inventory-box/page state, and useful pickup feedback. The legacy Lua overlay is a reference for semantics, not a native renderer implementation.
  5. Run-resource lifecycle. Determine and preserve HP, lives, and continues correctly across stage transitions and direct selector routes; define intended Game Over/new-run resets.
  6. Difficulty hard-lock. Very Hard must be enforced as a run invariant rather than only selected as a startup default.
  7. Final runtime coverage. Complete a representative full global seed, including all nine progression tiers and the major lifecycle boundaries.

Open Temple Map work: the legacy Lua global pool included the scripted Map as an 85th check. For 1.0, investigate separating the Map inventory reward from the Temple elevator/exit trigger so the elevator can still be raised correctly even when the Map item itself is shuffled elsewhere. Also prevent the Map item from being removed on the Temple -> Wind transition, which is stock behavior today.

Title-screen integration

The Candidate-B title art and the final title composition are Runtime-confirmed through the complete production patch pipeline.

Two bounded manual proofs passed:

  • default SUB-ZERO: MKMSZR_title-branding_full-pipeline-proof_v02.z64, SHA-256 8f86e6f50fcc068c66986681a57b18f9882cf8f1779376222a46b76f10b56382; the user reported the title looked correct and the title -> gameplay boundary worked;
  • non-default SEKTOR: MKMSZR_title-branding_sektor-full-pipeline-proof_v03.z64, SHA-256 4401dc0ebfce1eb16e6c0b4eb1178dd2605e79a10c1a280cd7caa6307ca21c65; the user reported it worked perfectly, looked good, and gameplay was running fine so far.

The corrective production design is data-only: the patcher rasterizes uppercase <NAME> EDITION directly into the Candidate-B CI8 title image, updates only reserved title-palette entries, recompresses file 0x5E, and relocates it from ROM 0xF90000 inside a guarded 0x31000-byte high-ROM allocation. It leaves stock title code at 0x79C24 untouched and does not claim executable cave space.

The first PR #41 wrapper allocation at 0x9ADE0 remains Rejected / failed because it overlaps permanent pickup-persistence ownership. PR #42 merged the corrected implementation as cebfe39c92e96590efbf571ee338467e2b7dc368. The public browser field was restored only after the runtime-confirmed SEKTOR configurability proof.

Pending priorities

  1. Finish composed runtime validation of the pipeline-disconnected cross-stage resource planner: Prison is confirmed with five distinct simultaneous imports plus vanilla Herbs; Fortress in the same stress ROM is still pending. Then add destination-safe key/crystal award wrappers and run a guarded disposable integration proof before enabling global materialization in browser/CLI.
  2. Replace stage-local generation with a global deterministic shuffle plus whole-run solver, including deterministic retry attempts and a deterministic per-seed required-Power-Upgrades target.
  3. Build the native randomizer HUD around the finalized global-run state.
  4. Resolve Temple Map trigger/item separation and cross-stage persistence; then HP/lives/continues persistence, Game Over/new-run reset, and Very Hard enforcement.
  5. Run full-seed 1.0 validation.
  6. Post-1.0: enemy randomization/resource compatibility, imported-enemy death/despawn, and Reverse Elbow.

Explicit exclusions

Bosses and scripted encounters are not ordinary-enemy entries. The Temple Map is not an ordinary pickup and needs an explicit 1.0 inclusion decision if it is to become a global check. Zero resource slots are logical selectors, not free physical storage. PS1 addresses are not N64 addresses. Proof ROM patches and archive handoffs are not silently part of the product pipeline. Enemy randomization and Reverse Elbow are not 1.0 blockers.

Latest takeover proof: v53 (MKMSZR_mkt-sektor-common-takeover_native-palette-proof_v53.z64) is Runtime-confirmed. It ports 33 common primary states through slot 0x22 (everything in that range except Victory 0x0D and Elbow/Combo 0x10) using 129 unique genuine Sektor frames. It removes the dynamic palette helper entirely: stock frame setup and the stock 0x801AF420 arena start are restored, file ID 0x1B is unclaimed again, and the native stock 64-entry player TLUT has its lower 32 entries replaced by the proven Sektor colors while the upper 32 stock entries remain valid fallback colors. The entire 341-frame stock Sub-Zero Type-5 corpus is reclaimed after all remaining direct stock-shape script references are redirected to a safe Sektor stance fallback; rare/unported states therefore keep stock control grammar but may display a placeholder Sektor frame. Two shared 5-bpp Type-5 models hold 129 Sektor frames (19,939 + 15,869 patterns). File 0x87 is only 0x473D8, which is 0x716C bytes below the runtime-confirmed Fortress-working v49 footprint 0x4E544.

v53 runtime result: Fortress, Prison, Inventory, representative common actions, and demo movies all work without hangs. Remaining visible gaps are expected placeholder/unported states, notably running, Elbow/Combo, Throw/Grab and special-move families. This runtime-confirms the Sektor-native palette architecture, removal of the palette helper, complete reclamation of the stock 341-frame Type-5 corpus, and the 0x473D8 fighter-resource footprint on the tested routes.

v54 (MKMSZR_mkt-sektor-run-combo-throw_common-proof_v54.z64) is partially runtime-tested; superseded by v55 for the affected states. Runtime observation: ordinary Run still showed the stance fallback, while the imported six-pose cycle appeared during Push; Sweep Fall hard-hung after its second visible pose; Throw geometry/gameplay worked and looked nearly correct, but its mechanical arm rendered red and its visual choreography appeared one MKMSZ tick ahead of the actual grab. The full Elbow/Combo visuals were not implicated by these failures. Static re-audit identifies +0x1B0 as the seven-visual Push loop and +0xEE8 as the true twelve-visual Run loop. The Sweep-Fall hang coincides with the first v54 frame assigned to a generated Type-5 model containing a 0-bit normal class; this is a strong inference, not yet runtime proof of causality.

v55 (MKMSZR_sektor-run-sweep-throw_common-proof_v55.z64) is partially runtime-confirmed and partially failed. Runtime-confirmed on the tested route: the corrected Grab/Throw now looks and times correctly with a gray mechanical arm; Fortress reaches gameplay and Inventory works; Prison passes the first-doorway route and Inventory works. The full Sub-Zero combo still registers six gameplay hits but at least one middle impact uses an incorrect/neutral Sektor visual. Ordinary Run still fails visually: every PS1-derived even pose collapses to tiny artifacts while the odd N64 poses render normally. Static postmortem found a concrete builder bug in the PS1 POVBQ decoder: after writing each 2x4 block it failed to advance the output pointer by four pixels, so every block overwrote the same four-column strip. The prior v55 claim that those six PS1 poses decoded losslessly with only 18 supplemental patterns is therefore Rejected / superseded; the builder had only proven exactness against its own malformed PS1 target buffers. Sweep Fall + Sweep Getup remains runtime-pending in v55 until separately reported.

v56 (MKMSZR_sektor-run-decode_common-proof_v56.z64) is Runtime-confirmed failure for PS1-derived Run; other tested repairs/regressions pass. The odd N64 Run poses render cleanly, but every PS1-derived even pose renders as a heavily speckled/checkerboard Sektor. The earlier “PS1 ideal” comparison image was not ground truth; it was the malformed output of the same PS1 decode/palette-conversion pipeline. Re-rendering a PS1 odd pose with its native PS1 palette produces the same corrupted-looking internal structure, proving the remaining fault is upstream of N64 Type-5/VQ. The PS1 POVBQ Run path is therefore Rejected / pending decoder correction and will not be used as the v57 donor. On the same v56 route, Sweep Fall -> Sweep Getup is Runtime-confirmed pass (the former hard hang is gone), Grab/Throw remains Runtime-confirmed good, Fortress -> gameplay -> Inventory passes, and Prison -> first doorway -> Inventory passes. File 0x87 = 0x4E414.

A cleaner supplemental donor is now Static-confirmed: Midway development asset video/supermk3/ROBO8.IMG in the preserved MK3 development repository contains complete raw 8-bit RBRUN1..RBRUN12 images plus the 64-color ROBO_P palette. N64 MKT's own source info explicitly lists RBRUN2/4/6/8/10/12 as cut content. The next Run proof will calibrate the raw MK3 asset to N64 scale/crop/anchors using the six odd poses present in both sources, then apply that demonstrated transform to the six missing even poses.

New pending presentation targets discovered during v55 testing: (1) trace and replace the missing middle Combo visual while preserving the six-hit gameplay chain; (2) map the player-victim “being grabbed/thrown” reaction family, likely among inherited primary fb_* slots 0x26+, as a separate task from the already-correct attacker Throw.

Current latest Sektor takeover proof: v62 (MKMSZR_sektor-mkt-combos-safe_common-proof_v62.z64) is Runtime-confirmed for the tested MKT Sektor combo-string behavior. v61 is rejected for unsafe donor reaction-selector reuse; v62 preserves its button/animation graph and translates the affected knockback reactions to MKMSZ-native semantics.\n v57's ROBO8 Run attempt is Rejected / failed because it read Midway WIMP source rows as tightly packed. Static source audit established the required 4-byte-aligned source pitch. v58 (MKMSZR_sektor-run-stride_common-proof_v58.z64, SHA-256 bc15eed845b9d97c785acf828e593d5683d6a8f905bfb475b751160774d973e2, file 0x87 = 0x4E3FC) corrected that extraction and the user reported ordinary Run works perfectly. The final Run uses all twelve Sektor poses, with the six N64-retained odd poses plus six stride-corrected ROBO8 even poses.

v59 (MKMSZR_sektor-full-combo_common-proof_v59.z64, SHA-256 b8b1ddfa964de4da86dc9598f99139f4c50ac066deaaf4ab5cd91fda63baf1cc, file 0x87 = 0x4E3FC) fixes the remaining middle Combo visuals without changing the six-hit gameplay/control records. The missing visuals came from late Knee-animation segments selected by the existing combo chain, not from the primary 0x10 Elbow/Combo script. v59 redirects six late Knee visual shape references to existing Sektor Knee/Spin-Kick art; the user reported the result works perfectly. Grab/Throw, Sweep Fall/Getup, Fortress/Inventory, and Prison/Inventory remain the previously runtime-confirmed repair baseline.

v60 (MKMSZR_scorpion-cyrax-palette_common-proof_v60.z64, SHA-256 caebb133e7ea759e5f115d169fe84f00d4120caa6545373b28983fd8efde048b) is Runtime-confirmed for the first Scorpion/type-0x12 palette adaptation. It is built directly from runtime-confirmed v59 and changes only the lower 32 entries of that actor's alternate palette in the relocated file-0x87 image at +0x458D0 / ROM 0xF858D0. The target palette uses yellow/gold armor entries 1..15 while preserving Sektor's gray/black metal entries 16..31. Static diffing finds exactly 62 changed bytes, all within that single 64-byte TLUT window; file 0x87 remains 0x4E3FC, and CRC1/CRC2 remain A6256DD8 / DB8E6E81. The user reported the first Scorpion renders correctly as the intended Cyrax-style yellow robot. This does not establish the separate Undead Scorpion/type-0x11 resource or arbitrary enemy palettes.

v61 (MKMSZR_sektor-mkt-combos_common-proof_v61.z64, SHA-256 aecd40a9a8ba5c8a96195cf9f18ebe5b0c53b67d40d88fc33fb1c55b5d930111) is Rejected / failed. It transplanted Sektor's MKT combo graph and the standalone HK,HK continuation. The HP,HP,D+LP branch correctly launched the victim upward, but the long combo caused catastrophic world/background corruption. The failing long-finisher path used MKT reaction selector 0x02 numerically in MKMSZ.

v62 (MKMSZR_sektor-mkt-combos-safe_common-proof_v62.z64, SHA-256 689862a64ab2cfe04041fae357a19774e335cea39eff6c9d6f5ae143f601e1fd, CRC1/CRC2 B4234446 / 80A601BE) is Runtime-confirmed on the tested combo route. Relative to v61 it changes only three gameplay reaction-selector bytes, 0x02 -> 0x04 at ROM 0x9AD98, 0xB1CE8, and 0xB1D08, plus header CRC. Sektor's buttons, branching, attacker animation selectors and successful 0x0504 uppercut entry are unchanged. The user reported v62 works perfectly. File 0x87 remains 0x4E3FC.

The validated combo strings are HK,HK, HP,HP,D+LP, HP,HP,HK,B+HK, and HP,HP,HK,HK,B+HK. Durable compatibility lesson: MKT/MKMSZ combo-record structure is compatible, but donor reaction-selector numbers require semantic translation unless independently proven. The v62 standalone HK,HK record still occupies proof-only ROM 0x9AD90, inside production bootstrap ownership, so production integration requires reallocation.

Remaining visible takeover work after v62 includes the separate player-victim “being grabbed/thrown” reaction family and still-unported special/rare presentation families. The Sektor missile/ice-blast replacement remains analysis/pending and is not part of v62.

Clone this wiki locally