Mega Man (classic series)
The original Mega Man series, begun on the NES in 1987.
Mega Man let the player take on six Robot Masters in any order, each one beaten giving up its weapon1,2. Mega Man 2 kept both ideas and made each weapon a weakness of another boss3, and retrospectives credit them with the series’ long run4.
#How he moves, game by game
Each NES game sets Mega Man’s speed outright instead of building it up5, but the numbers and their timing change from game to game. Mega Man 2 keeps the first game’s speeds and shortens its first step from 9 frames to 76. Mega Man 3 trades the slow step for a short pause, adds the slide, and ends a jump differently when A is let go7. Mega Man 4 takes off at 5 px/frame and slides longer8, and Mega Man 5 moves the same way on open floor, differing only at the end of a slide and in where he meets walls and ceilings9. Mega Man 6 takes off faster still10, and pressing A in its slide ends the slide instead of jumping11.
Games
Mechanics
| Mechanic | Mega Man 1987 | Mega Man 2 1988 | Mega Man 3 1990 | Mega Man 4 1991 | Mega Man 5 1992 | Mega Man 6 1993 |
|---|---|---|---|---|---|---|
| Air control | Direct | Direct | Direct | Direct | ||
| Boss weakness | Boss table | Every enemy | ||||
| Charge shot | None | Tiers on release | Tiers on release | Tiers on release | ||
| Climbing | Vine or ladder | |||||
| Coyote time | None | |||||
| Destructible terrain | Breakable tiles | |||||
| Flight | Held height | |||||
| Gravity | One gravity | One gravity | One gravity | One gravity | ||
| Ground slide | None | Timed | Timed | Timed | Timed | |
| Hitbox | Box | |||||
| Invincibility frames | Frame timer | Frame timer | Frame timer | Frame timer | ||
| Jump | One speed | One speed | One speed | One speed | One speed | One speed |
| Knockback | Fixed shove | Fixed shove | Fixed shove | Fixed shove | Fixed shove | Fixed shove |
| Palette cycling | Palette sets | |||||
| Password and battery save | Password | uses | ||||
| Running | Stepped | Stepped | Stepped | Stepped | ||
| Sprite flicker | Alternating order | |||||
| Status bar split | Sprite overlay | |||||
| Variable jump height | Release cap | Release cap | Release cap | Release cap | Release cap | Release cap |
| Weapon energy | Per weapon | Per weapon | ||||
| Cooperative multitasking | uses | |||||
| Stage select | uses |
A marked cell changed from the game before. “Uses” means the game has the mechanic, with no variant recorded yet.
Every claim, by mechanic and game
Code lineage
References
- ^Mega Man chooses which of six Robot Masters to fight from a menu, in any order; they are Cut Man, Guts Man, Ice Man, Bomb Man, Fire Man, and Elec Man.ManualMega Man NES manual · GameSpot, History of Mega Man
How we know
Player selects the character he chooses to challenge
p. 9 (PDF 5), How to Play · archived copy ↗ any one of six stages of your choice - Bomb Man, Fire Man, Ice Man, Guts Man, Elec Man, or Cut Man.
1987, Mega Man (Rockman in Japan), Gameplay · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-27.
- ^Each Robot Master Mega Man beats gives him a new weapon.ManualMega Man NES manual
How we know
acquires new firepower he will need
p. 5 (PDF 3), Helpful Game-Playing Hints · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-27.
- ^Mega Man 2 kept the free choice of boss and the weapon taken from each one, used against another boss's weakness.MagazineNintendo Power 219
How we know
Like its predecessor, Mega Man 2 … to exploit another boss's weakness
p. 82, Playback: Mega Man 2 · archived copy ↗ The quote matches our archived copy.
- ^Retrospectives credit the free stage order and the stolen weapons with the series' long run.WebGameSpot, History of Mega Man · 1UP, Mega Man retrospective
How we know
the innovative idea of stealing the weapons of defeated bosses were what earmarked this series for longevity
1987, Mega Man (Rockman in Japan), Gameplay · archived copy ↗ Rockman allowed players to conquer levels in any order they wished.
p. 1 · archived copy ↗ The quote matches our archived copy.
- ^Off ice, Mega Man never accelerates. Each frame his animation picks a speed from
special_object_xcoord_speed_table, 0 standing, 0.125 px/frame on the first step, 1.375 running, 0.5 sliding to a stop, 0 landing, and 0.5625 when hit; any other animation, such as the jump, moves at 1.3125 with a direction held and 0 without.Codelsmmega/mm1revisedHow we know
1_ice_tsa_move: 2 LDY #$00 3 LDA aobject_pointer 4 LDX #$08 ⋮ 6@loop: 7 CMP @special_object_id_table, X 8 BEQ @yes 9 DEX 10 BPL @loop 11 LDA z:zjoy1_pressed 12 AND #left_button | right_button 13 BEQ @regular ⋮
engine/ice_tsa.asm lines 1–22 at b606a84 · upstream ↗ 146@special_object_id_table: 147 .BYTE $00 148 .BYTE $03 149 .BYTE $06 150 .BYTE $0C 151 .BYTE $0F 152 .BYTE $12 153 .BYTE $13 154 .BYTE $14 155 .BYTE $6E ⋮ 157@special_object_id_index_xcoord_speed_table: 158 .BYTE $00 ⋮
engine/ice_tsa.asm lines 146–166 at b606a84 · upstream ↗ 1special_object_xcoord_speed_table: 2;fraction, integer 3 .BYTE $00 | $00 4 .BYTE $00 | $20 5 .BYTE $01 | $20 6 .BYTE $00 | $80 7 .BYTE $01 | $00 8 .BYTE $04 | $00 9 .BYTE $05 | $10 10 .BYTE $01 | $50 11 .BYTE $01 | $60 12 .BYTE $00 | $90
data/special_xcoord_speed_table.asm lines 1–12 at b606a84 · upstream ↗ 22_write_special_object_xcoord_speed_continue: 23 LDA special_object_xcoord_speed_table, Y 24 PHA 25 AND #%11110000 26 STA aobject_xcoord_speed_fraction, X 27 PLA 28 AND #%00001111 29 STA aobject_xcoord_speed, X
home/write_special_object_xcoord_speed.asm lines 22–29 at b606a84 · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-26.
Revised after a check by a second AI model, 2026-10-21.
Checked by a second AI model, 2026-10-26.
- ^Mega Man's ordinary-floor movement differs from Mega Man 2's, measured in Mesen at the start of Bomb Man's stage and of Heat Man's. The first difference: holding Right from a standstill, Mega Man is still in his first step on the 8th frame, moving 0.125 px, where Mega Man 2 runs at 1.375. After it: a slide of 13 frames, not 8; two frames at the ground speed after a jump press, not one; a landing that runs only with a direction held on the landing frame, not the frame before; 0.125 px/frame on a fresh press in mid-air; −0.75 px/frame on the ground, not −0.25, so a walk-off and a ceiling hit fall faster; and a wall push that keeps the X fraction.Verifiedlsmmega/mm1 · lsmmega/mm2revised
How we know
203 CMP #$03 204 BNE @skip 205 LDA aobject_frameset_timer 206 CMP #$22 207 BNE @skip
engine/run_megaman.asm lines 203–207 at b606a84 · upstream ↗ 125 LDA aobject_frameset_upper_timer 126 CMP #$01
engine/run_megaman.asm lines 125–129 at 94f0bf3 · upstream ↗ 89oam_frameset_0c: 90 .BYTE 6 | (@end - @start - 1) << 4
sprites/oam_frameset.asm lines 89–90 at b606a84 · upstream ↗ 258 LDA aobject_frameset_upper_timer 259 CMP #$02 260 BNE @nz 261 LDA #$03 262 STA z:zmegaman_status
engine/run_megaman.asm lines 258–262 at 94f0bf3 · upstream ↗ 216@start_jump_up: 217 LDA #$04 218 STA aobject_ycoord_speed 219 LDA #$DF 220 STA aobject_ycoord_speed_fraction 221 RTS ⋮ 223@jump_up: 224 LDA #$09 225 STA aobject_pointer
engine/run_megaman.asm lines 216–227 at b606a84 · upstream ↗ 94_run_megaman_landing_common_1: 95 LDA z:zjoy1_pressed_bits 96 AND #a_button 97 BEQ @not_pressed 98 LDA z:zjump_speed_fraction 99 STA aobject_ycoord_speed_fraction 100 LDA z:zjump_speed 101 STA aobject_ycoord_speed 102 LDA #$06 103 STA z:zmegaman_status
engine/run_megaman.asm lines 94–103 at 94f0bf3 · upstream ↗ 163 LDA aobject_flag 164 AND #%10000000 165 BNE @running
engine/run_megaman.asm lines 163–165 at b606a84 · upstream ↗ 230 LDX #$05 231 LDA z:zjoy1_pressed_frame 232 AND #left_button | right_button 233 BNE @horizontal_jump_down 234 LDX #$08 ⋮ 236@horizontal_jump_down: 237 STX z:zmegaman_status
engine/run_megaman.asm lines 230–237 at 94f0bf3 · upstream ↗ 53 LDA z:zjoy1_pressed_frame 54 AND #left_button | right_button 55 BNE @change_first 56 LDA #$03 57 STA aobject_pointer 58 LDA #$00 59 STA aobject_frameset_timer
engine/run_megaman.asm lines 53–59 at b606a84 · upstream ↗ 160_run_megaman_jumping: 161 JSR _check_shoot_on_ladder 162 LDA #$00 163 STA aobject_xcoord_speed_fraction 164 STA aobject_xcoord_speed 165 LDA z:zjoy1_pressed 166 AND #left_button | right_button 167 BNE @horizontal_jumping
engine/run_megaman.asm lines 160–167 at 94f0bf3 · upstream ↗ 80@done: 81 LDA #$FF 82 STA aobject_ycoord_speed, X 83 LDA #$40 84 STA aobject_ycoord_speed_fraction, X
engine/objects_vertical.asm lines 80–84 at b606a84 · upstream ↗ 68@mainloop: 69 LDA #$00 70 STA aobject_ycoord_speed_fraction 71 STA aobject_ycoord_speed ⋮ 77 STA aobject_ycoord_speed_fraction 78 LDA aobject_ycoord_speed 79 SBC z:zobject_ycoord_speed_accelerate 80 STA aobject_ycoord_speed
engine/check_object_vertical_move.asm lines 68–80 at 94f0bf3 · upstream ↗ 54 LDA z:zobject_in_process_xcoord_speed 55 STA aobject_xcoord_fraction, X
engine/objects_screen.asm lines 54–55 at b606a84 · upstream ↗ 39 JSR _check_horizontal_collision 40 LDA z:z00 41 BEQ @air_1 42 LDA #$00 43 STA aobject_xcoord_fraction
engine/check_object_horizontal_move.asm lines 39–43 at 94f0bf3 · upstream ↗ Measured by a script in MesenCE 2.2.1 (build 4b8a196), on . It fails if the result disagrees with the claim.
The numbers come from the run; its author, an AI model, checked the script measures what the claim says, 2026-10-26.
Revised after a check by a second AI model, 2026-10-26.
- ^Mega Man 3's ordinary-floor movement differs from Mega Man 2's from the first frame of a walk: Right held from a standstill moves him 1.30 px, then nothing for 5 frames, then 1.30 px a frame, where Mega Man 2 moves 0.125 px a frame for 7 frames, then 1.375. A jump differs from its press frame, which lifts him 4.89 px where Mega Man 2 lifts him 0. Letting go of A mid-rise starts the fall at once, where Mega Man 2 cuts a rise of 2 px/frame or more to 1, and falls cap at 7 px/frame instead of 12. He keeps Mega Man 2's gravity, floor and ceiling corners, and 16 px tiles, and adds the slide.Codeplasticsmoke/megaman3-disassembly-ca65 · lsmmega/mm2revised
How we know
115player_ground_turning_anim: lda #$0D ; OAM $0D = turning animation 116 jsr reset_sprite_anim ; set turning animation 117 lda shoot_anim_timer ; check if shooting 118 beq player_ground_move_facing ; not shooting, move facing 119 jsr shoot_oam_advance_variant ; update shoot animation variant 120player_ground_move_facing: lda player_facing ; move in facing direction 121 jmp player_ground_move_horizontal ; move in facing direction
src/fixed/player_ground.asm lines 115–121 at 58ca1c3 · upstream ↗ 642prelude_reset_walk_speed: lda #$4C ; reset walk speed to $01.4C 643 sta ent_xvel_sub ; store walk sub-pixel speed 644 lda #$01 ; walk speed whole = $01 645 sta ent_xvel ; store walk whole speed
src/fixed/game_loop.asm lines 642–645 at 58ca1c3 · upstream ↗ 208 LDA z:zjoy1_pressed 209 AND #a_button 210 BNE @skip 211 LDA aobject_ycoord_speed 212 BMI @skip 213 CMP #$01 214 BCC @skip 215 BEQ @skip 216 LDA #$01 217 STA aobject_ycoord_speed 218 LDA #$00 219 STA aobject_ycoord_speed_fraction
engine/run_megaman.asm lines 208–219 at 94f0bf3 · upstream ↗ 71player_ground_normal_jump: lda joy2_held ; P2 held buttons 72 and #$01 ; bit 0 = Right held? 73 bne player_ground_super_jump ; yes → debug super jump 74 lda #$E5 ; normal jump: Y vel = $04.E5 75 sta ent_yvel_sub,x ; store Y velocity sub-pixel 76 lda #$04 ; Y velocity whole = $04 77 sta ent_yvel,x ; store Y velocity whole 78 jmp player_airborne ; enter airborne state
src/fixed/player_ground.asm lines 71–78 at 58ca1c3 · upstream ↗ 260player_airborne: lda ent_yvel ; check Y velocity sign 261 bmi player_airborne_variable_jump ; negative (falling) → skip to clear flag 262 lda force_full_jump ; check force-full-jump flag 263 bne player_airborne_wall_check ; nonzero → skip variable jump 264 lda joy1_held ; check if A button held 265 and #BTN_A ; A button mask 266 bne player_airborne_variable_jump ; held → keep rising (variable jump) 267 jsr reset_gravity ; A released → clamp Y speed to 0 (variable jump)
src/fixed/player_ground.asm lines 260–267 at 58ca1c3 · upstream ↗ 393apply_gravity_player_check: lda ent_yvel_sub,x ; Y sub velocity -= gravity 394 sec ; prepare for subtraction 395 sbc gravity ; subtract gravity value 396 sta ent_yvel_sub,x ; store new Y sub velocity 397 lda ent_yvel,x ; Y velocity -= borrow 398 sbc #$00 ; propagate borrow to whole byte 399 sta ent_yvel,x ; store new Y velocity 400 bpl apply_gravity_exit ; still positive (rising)? done 401 cmp #$F9 ; check against terminal velocity $F9 402 bcs apply_gravity_exit ; within limit (-7 to -1)? done
src/fixed/movement.asm lines 393–402 at 58ca1c3 · upstream ↗ 84 JSR _megaman_status_parameter 85 JSR _check_object_horizontal_move 86 JSR _check_object_vertical_move 87 LDA z:z00 88 BNE _run_megaman_landing_common_1
engine/run_megaman.asm lines 84–88 at 94f0bf3 · upstream ↗ 81 BPL @skip 82 CMP #$F4 83 BCS @skip 84 LDA #$00 85 STA aobject_ycoord_speed_fraction 86 LDA #$F4 87 STA aobject_ycoord_speed
engine/check_object_vertical_move.asm lines 81–87 at 94f0bf3 · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-26.
Revised after a check by a second AI model, 2026-10-26.
- ^Mega Man 4's movement on ordinary floor differs from Mega Man 3's in five numbers. The first is the jump's take-off speed: 5 px/frame (
$05.$00) against Mega Man 3's 4.89 ($04.$E5). The second is the speed on the ground and after a landing: -1 px/frame ($FF.$00) against -0.25 ($FF.$C0). Third, a release cuts a rise to 0, where Mega Man 3 sets the same -0.25. Fourth, the slide timer starts at 26 ($1A) against 20 ($14), so the slide moves on 26 frames against 21 (slide-line, mega-man-3/slide). Fifth, Mega Man 4 tests for the jump out of a slide on every slide frame, where Mega Man 3 skips the test while the timer is 12 ($0C) or more, so the earliest jump out comes on the 3rd frame against the 9th.Codeplasticsmoke/megaman4-disassembly-ca65 · plasticsmoke/megaman3-disassembly-ca65revisedHow we know
186 LDA #$00 ; zero sub-velocity 187 STA ent_yvel_sub ; Y velocity sub = 0 188 LDA #$05 ; jump speed 5 px/frame 189 STA ent_yvel ; Y velocity = +5 (up)
src/bank3C.asm lines 186–189 at a63bb6e · upstream ↗ 74 lda #$E5 ; normal jump: Y vel = $04.E5 75 sta ent_yvel_sub,x ; store Y velocity sub-pixel 76 lda #$04 ; Y velocity whole = $04 77 sta ent_yvel,x ; store Y velocity whole
src/fixed/player_ground.asm lines 74–77 at 58ca1c3 · upstream ↗ 648L_F324: 649 LDA #$00 ; zero 650 STA ent_yvel_sub,X ; clear vert velocity sub-pixel 651 LDA #$FF ; $FF = stopped / minimal 652 STA ent_yvel,X ; set vert velocity pixel
src/fixed/fixed_entity_physics.asm lines 648–652 at a63bb6e · upstream ↗ 203gravity_snap_floor: jsr snap_y_to_floor ; snap to tile boundary (down) 204gravity_reset_vel: jsr reset_gravity ; reset velocity to rest value
src/fixed/movement.asm lines 203–204 at 58ca1c3 · upstream ↗ 424reset_gravity_player: lda #$C0 ; player rest vel sub = $C0 425 sta ent_yvel_sub,x ; store Y sub velocity 426 lda #$FF ; player rest vel = $FF ($FFC0 = -0.25) 427 sta ent_yvel,x ; store Y velocity whole byte 428 rts ; player rest vel = $FFC0
src/fixed/movement.asm lines 424–428 at 58ca1c3 · upstream ↗ 425 LDA joy1_held ; held buttons 426 AND #$80 ; A still held? 427 BNE L_8338 ; held: full jump 428 LDA #$00 ; zero 429 STA ent_yvel_sub ; cut jump: Y vel sub = 0 430 STA ent_yvel ; cut jump: Y vel = 0
src/bank3C.asm lines 425–430 at a63bb6e · upstream ↗ 264 lda joy1_held ; check if A button held 265 and #BTN_A ; A button mask 266 bne player_airborne_variable_jump ; held → keep rising (variable jump) 267 jsr reset_gravity ; A released → clamp Y speed to 0 (variable jump)
src/fixed/player_ground.asm lines 264–267 at 58ca1c3 · upstream ↗ 217 LDA #$1A ; slide duration 26 frames 218 STA $34 ; set slide timer
src/bank3C.asm lines 217–218 at a63bb6e · upstream ↗ 288 lda #$14 ; slide timer = 20 frames 289 sta $33 ; store slide timer
src/fixed/player_states.asm lines 288–289 at 58ca1c3 · upstream ↗ 473L_8368: 474 LDA joy1_press ; newly pressed 475 AND #$80 ; A button? 476 BEQ L_839D ; no jump: steering 477 LDA joy1_held ; held buttons 478 AND #$04 ; Down held?
src/bank3C.asm lines 473–478 at a63bb6e · upstream ↗ 349 dec $33 ; decrement timer 350 lda $33 ; check slide timer phase 351 cmp #$0C ; >= $0C? (uncancellable phase) 352 bcs slide_continue_moving ; yes → uncancellable, keep sliding 353 lda joy1_press ; A button pressed? (cancellable phase) 354 and #BTN_A ; check A button 355 bne slide_end_ground_check ; yes → cancel into slide jump
src/fixed/player_states.asm lines 349–355 at 58ca1c3 · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-26.
Revised after a check by a second AI model, 2026-10-26.
- ^Mega Man 5's ordinary-floor movement differs from Mega Man 4's, though the walk, the step pose, the jump, gravity, the fall cap, air control, and the slide's speed, length, and start are the same. The first difference on flat ground: on a slide's last frame Mega Man 5 raises his center the 2 px the slide lowered it and sets −0.25 px/frame, where Mega Man 4 leaves it 2 px low at −1 px/frame, so for that frame Mega Man 5 stands 2 px higher, and each of its slides adds
$40to his Y fraction. Against blocks, Mega Man 5's ceiling points are 10 px above his center (Mega Man 4's 9) and his wall points 9 px above it (Mega Man 4's 8); its slide's wall points are 5 px above and 9 px below the slide's center (Mega Man 4's level and 9 below), and its slide's ceiling points 8 px above it (Mega Man 4's level with it).Codeplasticsmoke/megaman5-disassembly-ca65 · plasticsmoke/megaman4-disassembly-ca65revisedHow we know
ldy $AF lda $0378 sec sbc ynudge_tbl,y sta $0378
src/bank1B.asm#L424-L428 · upstream ↗ 525L_83D3:src/bank3C.asm lines 525–539 at a63bb6e · upstream ↗ 648L_F324: ⋮ 653L_F32E:
src/fixed/fixed_entity_physics.asm lines 648–654 at a63bb6e · upstream ↗ 2039ynudge_tbl: ⋮ 2042slide_yvel_sub: ⋮ 2044slide_yvel_px:
src/bank1B.asm lines 2039–2045 at 7fd6512 · upstream ↗ 1428 .byte $F9,$07,$07 1429 .byte $01,$F7 1430 .byte $F9,$0E,$00
src/fixed/fixed_tile_collision.asm lines 1426–1430 at a63bb6e · upstream ↗ 1700 .byte $F8 1701 .byte $08
src/fixed/fixed_tile_collision.asm lines 1699–1702 at a63bb6e · upstream ↗ 1301 .byte $1E,$23,$27 1302 .byte $2A
src/fixed/fixed_tile_collision.asm lines 1301–1304 at a63bb6e · upstream ↗ 1439 .byte $0E,$0E,$02 1440 .byte $00 ⋮ 1442 .byte $0E,$0E,$02
src/fixed/fixed_tile_collision.asm lines 1439–1442 at a63bb6e · upstream ↗ 1592 .byte $88 1593 .byte $8D,$92,$92
src/fixed/fixed_tile_collision.asm lines 1592–1595 at a63bb6e · upstream ↗ 1711 .byte $05,$01 ⋮ 1713 .byte $00 1714 .byte $09,$01
src/fixed/fixed_tile_collision.asm lines 1711–1714 at a63bb6e · upstream ↗ .byte $F9,$07,$07,$01,$F6,$F9,$0E,$02,$F2,$F2,$0E,$0E,$02,$0C,$F2,$0E .byte $0E,$02,$0A,$F2,$0E,$0E,$02,$F8,$F2,$0E,$0E
src/fixed_bank.asm#L1259-L1260 · upstream ↗ .byte $F7,$09,$0B .byte $05,$0B,$01,$0F,$FB,$0E
src/fixed_bank.asm#L1279-L1280 · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-26.
Revised after a check by a second AI model, 2026-10-26.
- ^Mega Man 6's ordinary-floor movement isn't Mega Man 5's: the first difference is a jump's take-off. Mega Man 6 sets his vertical speed to
$FA.$CC, 5.20 px/frame up; Mega Man 5 sets its whole byte$03F0to$05and its fraction$03D8to$00, 5 px/frame (jump-speed). Letting go of A sets only the whole byte to 0 in Mega Man 6 and both bytes in Mega Man 5 (release-cut), and Mega Man 5 tests for headroom before a slide where Mega Man 6 doesn't (jump-under-ceiling). The two run different code: Mega Man 5's player is a state machine dispatched each frame from$30, Mega Man 6's a coroutine of loops (coroutine-scheduler).Coderefreshing-lemonade/megaman6-disassembly · plasticsmoke/megaman5-disassembly-ca65revisedHow we know
105loc_700D7: ⋮ 112loc_700E5: ⋮ 115loc_700EA: 116code_3880EA:
bank38_3F.asm lines 105–118 at f0763c4 · upstream ↗ L80A4: lda $AF bne L80B5 lda #$00 sta $03D8 lda #$05 sta $03F0
src/bank1B.asm#L122-L128 · upstream ↗ lda $03D8,x clc adc #$10 sta $03D8,x lda $03F0,x adc #$00 sta $03F0,x
src/bank0A.asm#L612-L618 · upstream ↗ LDA $40 AND #$80 BNE loc_70143 LDA $05C8 BPL loc_70143 … LDA #$00 STA $05C8
bank38_3F.asm#L146-L162 · upstream ↗ L8259: lda $03F0 bmi L8283 L825E: lda $16 and #$80 bne L8283 lda #$00 sta $03D8 sta $03F0
src/bank1B.asm#L335-L343 · upstream ↗ L80D9: lda $08 lsr a clc adc #$08 tay jsr probe_vert lda L0010 and #$10 bne L814A
src/bank1B.asm#L149-L157 · upstream ↗ L8025: ldx #$00 stx $37 ldy $30 lda player_state_lo,y sta L0000 lda player_state_hi,y sta $01 jmp (L0000)
src/bank1B.asm#L77-L84 · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-26.
Revised after a check by a second AI model, 2026-10-26.
- ^A press of A without Down ends Mega Man 6's slide but doesn't jump: the slide hands over to the standing loop, which looks for a jump only in a later frame's fresh press (
$9A). In Mega Man 5 the same press jumps out of the slide when there is headroom. Measured in Mesen from power-on, at the start of Tomahawk Man's stage, an A press on a slide's 8th frame with Down let go ended the slide that frame, and A held for the next 6 frames left him on the floor.Verifiedrefreshing-lemonade/megaman6-disassembly · plasticsmoke/megaman5-disassembly-ca65revisedHow we know
382loc_702E3:bank38_3F.asm lines 382–395 at f0763c4 · upstream ↗ 423loc_70332: ⋮ 435loc_7034B:
bank38_3F.asm lines 423–436 at f0763c4 · upstream ↗ 30loc_7004F:bank38_3F.asm lines 27–33 at f0763c4 · upstream ↗ 20043code_3FE41C:bank38_3F.asm lines 20043–20051 at f0763c4 · upstream ↗ lda $14 and #$80 beq L82C8 lda $16 and #$04 bne L82C8 … jmp L80A4
src/bank1B.asm#L377-L393 · upstream ↗ Measured by a script in MesenCE 2.2.1 (build 4b8a196), on . It fails if the result disagrees with the claim.
The numbers come from the run; its author, an AI model, checked the script measures what the claim says, 2026-10-25.
Revised after a check by a second AI model, 2026-10-25.
Sources
Code
- lsmmega. 2026. “mm1: Mega Man disassembly (lsmmega/mm1).” Commit b606a84. lsmmega/mm1 @ b606a84 · licence, all uses
- lsmmega. 2026. “mm2: Mega Man 2 disassembly (lsmmega/mm2).” Commit 94f0bf3. lsmmega/mm2 @ 94f0bf3 · licence, all uses
- plasticsmoke. 2026. “Mega Man 3 (U), annotated ca65 disassembly (plasticsmoke).” Commit 58ca1c3. plasticsmoke/megaman3-disassembly-ca65 @ 58ca1c3 · licence, all uses
- plasticsmoke. 2026. “Mega Man 4 (U), annotated ca65 disassembly (plasticsmoke).” Commit a63bb6e. plasticsmoke/megaman4-disassembly-ca65 @ a63bb6e · licence, all uses
- plasticsmoke. 2026. “Mega Man 5 (U), annotated ca65 disassembly (plasticsmoke).” Commit 7fd6512. plasticsmoke/megaman5-disassembly-ca65 @ 7fd6512 · licence, all uses
- Raidenthequick. 2020. “Mega Man 6 (NES) disassembly (refreshing-lemonade/megaman6-disassembly).” Commit f0763c4. refreshing-lemonade/megaman6-disassembly @ f0763c4 · licence, all uses
Primary
- U.S.A., Capcom. 1987. “Mega Man Instruction Booklet (NES, North America).” Capcom U.S.A. original · archived · licence, all uses
Secondary
- Christian, Nutt, and Speer, Justin. 2003. “The History of Mega Man.” original · archived · licence, all uses
- Chris, Hoffman, and Nintendo Power editors. 2007. “Nintendo Power, issue 219 (2007-09).” Nintendo Power, vol. 219. Nintendo of America. original · archived · licence, all uses
- Nadia, Oxford,. 2007. “Mega Man Retrospective: Get Equipped with 20 Years.” original · archived · licence, all uses