Skip to content

Releases: mstan/MegaManZeroRecomp

v0.0.6 — fix the widescreen message-box tear

Choose a tag to compare

@mstan mstan released this 29 Aug 21:34

Fixes the widescreen message-box tear.

Fixed

Dialogue text no longer tears into the extended margin. With adaptive
widescreen enabled, the first characters of a message box were duplicated in the
far-left margin — "You got a Cyber-elf!!" rendered as a detached Yo at the
screen edge plus u got a Cyber-elf!! in the box itself.

Zero's HP/emblem cluster is republished into the left margin so the HUD stays at
the extended content edge, and the boss gauge likewise on the right. Both rules
were applied to every scanline, though the HUD they republish occupies only its
own rows. Mega Man Zero draws the message box on the same background layer in
the same columns, confined by a hardware window, so on message rows those rules
republished the box's border and leading glyphs into the margin instead.

Both anchors now skip the scanlines the game itself marks as the message window,
so those margin rows show the room behind the box. The anchored HUD is unchanged
on its own rows, and faithful 240x160 presentation is untouched.

The same defect applied symmetrically to the boss gauge on the right, and is
fixed with it.

Unchanged from v0.0.5

  • Mods page with Adaptive Widescreen (Display, disabled by default) —
    expand supported stage scenes from 240x160 up to 480x160, following the live
    window or fullscreen aspect ratio.
  • BIOS intro skipped by default. Boot handoff only: SWIs are still serviced
    by the recompiled real BIOS (LLE), which remains the correctness oracle. A GBA
    BIOS dump is still required. Restore the boot animation with
    [bios] skip_intro = false or --no-bios-skip-intro.
  • Portable release archive (extracts correctly on Linux, Steam Deck and Proton).

Known issues

  • Loading a save state can leave the extended view pillarboxed (black margins)
    for the rest of the session. Reaching the same point by playing renders
    correctly. Under investigation.
  • The 288px fixed extended view can hit a strict-static dispatch miss at
    0x08002424. Pre-existing since 0.0.3.

Requirements

Bring your own legally obtained Mega Man Zero (USA) ROM
(sha1 193b14120119162518a73c70876f0b8bffdbd96e) and GBA BIOS dump. No ROM,
BIOS, or save data is included.

v0.0.5 — portable release archive (Linux/Proton fix)

Choose a tag to compare

@mstan mstan released this 29 Aug 17:59

Packaging fix for v0.0.4 — the game itself is
unchanged.

Update: every earlier Mega Man Zero archive (v0.0.1-v0.0.4) has since been
repacked in place with the same fix, so any of them now extracts correctly.
The archive payloads were rewritten container-only; the executables inside are
untouched.

Fixed

  • The archive now extracts correctly on non-Windows systems. v0.0.4 was
    written with Windows backslash ZIP entry names, which POSIX extractors treat
    as literal filename characters instead of directory separators. Unpacking it
    under Linux/Proton produced files literally named
    assets\fonts\LatoLatin-Regular.ttf and mods\packages\... rather than the
    nested trees, so the launcher found neither its fonts nor its mod catalog.
    The archive is now written with portable / separators and re-read at
    package time to reject any non-portable entry.

Windows users were unaffected by this, and the executable is byte-for-byte the
same build as v0.0.4.

Everything from v0.0.4

  • Mods page with Adaptive Widescreen (Display, disabled by default) —
    expand supported stage scenes from 240x160 up to 480x160, following the live
    window or fullscreen aspect ratio.
  • BIOS intro skipped by default. Boot handoff only: SWIs are still serviced
    by the recompiled real BIOS (LLE), which remains the correctness oracle. This
    is not an HLE BIOS and a GBA BIOS dump is still required. Restore the boot
    animation with [bios] skip_intro = false or --no-bios-skip-intro.
  • Engine gbarecomp → a1de406 (shared arm-recomp-core, [bios].skip_intro)
    and launcher recomp-ui → 2b7e9c6 (Rewind toggle, small-display fitting).
  • Strict-static gate passes with the intro skip enabled on all three
    deterministic routes — menu@10000, campaign-combat@40000 and
    campaign-clear@60000 — each FULLY_STATIC, 0 dispatch misses, 0 interpreted
    instructions.

Known issues

  • With the extended view active, a dialogue textbox can render its leading
    glyphs detached in the left margin (the 256px text layer's wrap becoming
    visible past the authentic 240px field).
  • The 288px fixed extended view can hit a strict-static dispatch miss at
    0x08002424. Pre-existing; also reproduces on 0.0.3.

Requirements

Bring your own legally obtained Mega Man Zero (USA) ROM
(sha1 193b14120119162518a73c70876f0b8bffdbd96e) and GBA BIOS dump. No ROM,
BIOS, or save data is included.

v0.0.4 — Mods page, BIOS intro skip, engine + launcher bump (superseded by v0.0.5)

Choose a tag to compare

@mstan mstan released this 29 Aug 17:24

Picks up the latest shared engine and launcher, adds a Mods page, and boots
straight into the game.

Mods

The launcher now has a Mods page listing game-owned enhancements. Mega Man
Zero ships one, disabled by default:

  • Adaptive Widescreen (Display) — expand supported stage scenes from
    240x160 up to 480x160, following the live window or fullscreen aspect ratio.

This replaces the old generic Display "Adaptive view" toggle, so there is one
authoritative control. The fixed-width aspect vocabulary (240 / 288 / 384 / 480)
is a separate axis and stays on the Display page. User-installed .gbamod
archives join the same catalog.

BIOS intro is skipped by default

Launching now goes straight into the game instead of playing the BIOS boot logo
and chime.

This is the boot handoff only. SWIs are still serviced by the recompiled
real BIOS (LLE), which remains the correctness oracle — this is not an HLE BIOS,
and a GBA BIOS dump is still required. To restore the authentic boot animation:

[bios]
skip_intro = false

or launch with --no-bios-skip-intro.

Engine and launcher

  • gbarecomp d3500bc → c85774a — moves to the shared arm-recomp-core ARM
    decoder/codegen, plus the new [bios].skip_intro option.
  • recomp-ui 26a9676 → 2b7e9c6 — launcher updates including a Rewind toggle and
    small-display window fitting.

Accuracy

Skipping the intro hands off at a different point in the frame, which shifts IRQ
arrival relative to guest code, so the hardware returns into interior
instructions the real-intro boot never interrupted. 24 such addresses were
observed across the deterministic menu, campaign-combat and campaign-clear
routes and seeded as resume aliases (every one resolves inside an existing
generated function — none was a new function entry).

The strict-static gate passes on all three routes with the intro skip enabled:

route result
menu @ 10000 PASS — FULLY_STATIC, 0 misses, 0 interpreted
campaign-combat @ 40000 PASS — FULLY_STATIC, 0 misses, 0 interpreted
campaign-clear @ 60000 PASS — FULLY_STATIC, 0 misses, 0 interpreted

Known issues

  • With the extended view active, a dialogue textbox can render its leading
    glyphs detached in the left margin (the 256px text layer's wrap becoming
    visible past the authentic 240px field).
  • The 288px fixed extended view can hit a strict-static dispatch miss at
    0x08002424. This is pre-existing and also reproduces on 0.0.3.

Requirements

Bring your own legally obtained Mega Man Zero (USA) ROM
(sha1 193b14120119162518a73c70876f0b8bffdbd96e) and GBA BIOS dump. No ROM,
BIOS, or save data is included.

v0.0.3 — Mega Man Zero (pre-boot launcher)

Choose a tag to compare

@mstan mstan released this 17 Jul 08:00

Adds the shared recomp-ui Dear ImGui pre-boot launcher: pick your ROM/BIOS, tune display/audio/controls, rebind keys, then play. Real box art + Game Boy Advance controller art, GBA identity (SHA-1) verification, and settings that persist next to the exe.

Includes an experimental widescreen aspect cycle (3:2 native / 9:5 / 12:5 / 6:2) for the extended-view enhancement, selectable in the launcher's Display settings. Skip the launcher with --no-launcher or the in-launcher toggle.

Built against gbarecomp + recomp-ui as pinned git submodules.

v0.0.2 - Mega Man Zero widescreen

Choose a tag to compare

@mstan mstan released this 15 Jul 01:07

Mega Man Zero v0.0.2 adds opt-in widescreen support while preserving the faithful 240x160 default.

Highlights:

  • Configurable 240-480 pixel view width; 288x160 is recommended.
  • Resizable window with the configured aspect ratio preserved.
  • Extended HUD anchoring, enemy activation/spawn range, and camera-edge rendering.
  • Black transient side pillars removed during normal room traversal.
  • Widescreen remains game-authorized and opt-in; non-participating games stay at 240x160.

To enable the recommended view, create game.toml beside the executable:

[video]
view_width = 288

Known limitation: loading a save state while widescreen is active can temporarily desynchronize extended presentation. A normal room reload, including dying and choosing Retry, rebuilds it. SRAM saves and 240x160 mode are unaffected.

Archive SHA-256: DD3438630606E2A40D1974209CFC2D68EEB059E716D5673F5C70927C592991F3

v0.0.1 — Mega Man Zero (initial release)

Choose a tag to compare

@mstan mstan released this 14 Jul 19:44

Initial private release of Mega Man Zero statically recompiled to native Windows x64 with gbarecomp.

  • Playable static-first bring-up with working graphics, audio, controls, and SRAM persistence.
  • Real GBA BIOS/LLE is the default correctness path; HLE is not used for the baseline.
  • Reviewed opening-mission campaigns pass strict static verification with zero interpreter, healing/cache, unmapped-bus, or unhandled-I/O fallback.
  • Uncovered whole-game paths remain honest: the normal player build bridges a dispatch miss through the instruction interpreter, heals it to native code, and records it for later static coverage.
  • ROM hash-gated to Mega Man Zero (USA, revision 0), SHA-1 193b14120119162518a73c70876f0b8bffdbd96e.

Extract the zip and run MegaManZeroRecomp.exe. The required ROM and gba_bios.bin are not included; provide your own legally obtained dumps.