Mega Man
Capcom's 1987 action platformer for the NES, the first in the series.
Mega Man is Capcom’s action platformer for the NES, released in December 19871. The player picks which of six Robot Masters to fight from a menu, in any order2. Each one Mega Man beats gives him its weapon3, and Dr. Wily’s stage comes last4. Akira Kitamura planned the game and drew its first pixel characters5,6. Keiji Inafune turned them into illustrations6.
The game sold modestly, not well enough to earn an immediate sequel, and its team made Mega Man 2 in their own time7. Mega Man 2 kept the free choice of boss and the stolen weapons8, and retrospectives credit the two with the series’ long run9.
#How it plays
Mega Man never builds up speed. Each animation sets his speed outright: a short first step, then a full-speed run, and he slides briefly to a stop10. The d-pad works the same way in the air. Hold a direction and he moves at once; let go and he stops10.
Every jump leaves the ground at the same speed under one gravity11,12. Its height depends only on how long A is held. Let go on the way up and he stops rising almost at once13.
Mega Man 2 keeps every one of these numbers14 but not their timing. Mega Man’s first step lasts 9 frames and his slide to a stop 13, where Mega Man 2’s last 7 and 815,16.
A hit knocks him up and back, and he can’t be hurt again for a short while17,18.
#Across the series
Mega Man 2 keeps the hit’s numbers too19. It moves the constants into tables, with a second column for water.
Cartridge
Code lineage
Mechanics
| Mechanic | Kind | How |
|---|---|---|
| Jump | One speed | every jump takes off at the same speed |
| Gravity | One gravity | one gravity, whatever the button does |
| Variable jump height | Release cap | letting go of A stops the rise almost at once |
| Running | Stepped | a short first step, then full speed, with no acceleration |
| Air control | Direct | hold a direction and he moves at full speed; let go and he stops |
| Invincibility frames | Frame timer | a fixed spell of invincibility after each hit |
| Knockback | Fixed shove | a hit pushes him up and back until its animation ends |
Every claim about this game, by concept (41)
References
- ^Mega Man came out in December 1987.PublisherMM25 · Nintendo, NES Games
How we know
12/17/1987
p. 30, release table · archived copy ↗ December 1987
PDF p. 8 · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-27.
- ^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.
- ^Once all six Robot Masters are beaten, Dr. Wily's stage follows, the seventh and last.ManualMega Man NES manual
How we know
conquer Dr, Wily in this seventh and final stage.
p. 9 (PDF 5), Special Feature · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-27.
- ^Mega Man's planner, credited as A.K., is Akira Kitamura.PublisherMM25 · Destructoid, Inafune interview (2013)
How we know
Planner A.K.
p. 6, contributors · archived copy ↗ confirmed to be Akira Kitamura, credited as A.K. in Mega Man 1 and 2
Inafune on the character design · archived copy ↗ The quote matches our archived copy.
- ^ abThe game's planner drew the original Mega Man, Roll, and Dr. Light as pixel graphics, and Keiji Inafune turned them into illustrations.PublisherMM25 · Destructoid, Inafune interview (2013)
How we know
he was the one who created the original forms of Mega Man, Roll, and … Dr. Light as dot graphics. I then took those images and turned them into illustrations,
p. 30 · archived copy ↗ This planner put together a pixel character that really had good read against the Famicom backgrounds
Inafune on the character design · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-27.
- ^Mega Man sold modestly, not well enough to earn an immediate sequel, and its team made Mega Man 2 in their own time.MagazineNintendo Power 219 · GameSpot, History of Mega Man
How we know
wasn't a big enough hit to warrant an … free time to work on the project
p. 82, Playback: Mega Man 2 · archived copy ↗ the game was a sort of low-key success. The true breakthrough would come with Mega Man 2.
1987, Mega Man (Rockman in Japan) · archived copy ↗ The quote matches our archived copy.
- ^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.
- ^ abOff 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.
- ^A fresh A press on the ground sets Mega Man's upward speed to
$04.$DF, 4.87 px/frame.Codelsmmega/mm1How we know
157@bottom: 158 LDA aobject_ycoord 159 STA z:zlast_ycoord 160 LDA z:zjoy1_pressed_bits 161 AND #a_button 162 BNE @start_jump_up
engine/run_megaman.asm lines 157–162 at b606a84 · upstream ↗ 216@start_jump_up: 217 LDA #$04 218 STA aobject_ycoord_speed 219 LDA #$DF 220 STA aobject_ycoord_speed_fraction 221 RTS
engine/run_megaman.asm lines 216–221 at b606a84 · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-21.
Checked by a second AI model, 2026-10-21.
- ^Each airborne frame takes
$40/256 = 0.25 px/frame off Mega Man's upward speed, and a fall is capped at 12 px/frame ($F4).Codelsmmega/mm1How we know
96@is_megaman_2: 97 LDA aobject_ycoord_speed_fraction, X 98 SBC #$40 99 STA aobject_ycoord_speed_fraction, X 100 LDA aobject_ycoord_speed, X 101 SBC #$00 102 BPL @normal_ycoord_speed 103 CMP #$F4 104 BCS @normal_ycoord_speed 105 LDA #$00 106 STA aobject_ycoord_speed_fraction, X 107 LDA #$F4 ⋮
engine/objects_vertical.asm lines 96–110 at b606a84 · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-21.
Checked by a second AI model, 2026-10-21.
- ^On every rising frame with A not held, Mega Man's upward speed, if its whole part is 2 or more, drops to exactly 1 px/frame; the test follows the frame's vertical move.Codelsmmega/mm1
How we know
88 LDA aobject_ycoord_speed 89 BMI @start_landing 90 JSR _objects_vertical_moving 91 BCS @hit_wall_up 92 LDA z:zjoy1_pressed 93 AND #a_button 94 BEQ @start_jump_down ⋮ 100@start_jump_down: 101 LDA aobject_ycoord_speed 102 BMI @jumping_down 103 CMP #$01 104 BCC @jumping_down ⋮
engine/run_megaman.asm lines 88–109 at b606a84 · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-21.
Checked by a second AI model, 2026-10-21.
- ^Mega Man 2 keeps Mega Man's jump and running numbers. Both take off at
$04.$DF, subtract$40of gravity a frame, cap a fall at$F4, cut a rise of 2 px/frame or more to 1 when A is up, and move at 0.125, 1.375, and 1.3125 px/frame stepping, running, and in the air.Codelsmmega/mm1 · lsmmega/mm2How we know
216@start_jump_up: 217 LDA #$04 218 STA aobject_ycoord_speed 219 LDA #$DF
engine/run_megaman.asm lines 216–221 at b606a84 · upstream ↗ 97 LDA aobject_ycoord_speed_fraction, X 98 SBC #$40 ⋮ 103 CMP #$F4
engine/objects_vertical.asm lines 97–103 at b606a84 · upstream ↗ 100@start_jump_down: 101 LDA aobject_ycoord_speed 102 BMI @jumping_down 103 CMP #$01 104 BCC @jumping_down 105 BEQ @jumping_down 106 LDA #$01 107 STA aobject_ycoord_speed
engine/run_megaman.asm lines 100–107 at b606a84 · upstream ↗ 4 .BYTE $00 | $20 ⋮ 10 .BYTE $01 | $50 11 .BYTE $01 | $60
data/special_xcoord_speed_table.asm lines 4–11 at b606a84 · upstream ↗ 175tsa_ycoord_speed_accelerate_fraction_table: 176 .BYTE $40, $1E ⋮ 181tsa_regular_water_jump_speed_table: 182 .BYTE $04, $05 ⋮ 184tsa_regular_water_jump_speed_fraction_table: 185 .BYTE $DF, $80
engine/check_object_horizontal_move.asm lines 175–185 at 94f0bf3 · upstream ↗ 81 BPL @skip 82 CMP #$F4
engine/check_object_vertical_move.asm lines 81–82 at 94f0bf3 · 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
engine/run_megaman.asm lines 208–217 at 94f0bf3 · upstream ↗ 222megaman_status_xcoord_speed_table: 223 .BYTE $00 224 .BYTE $00 225 .BYTE $00 226 .BYTE $00 227 .BYTE $00 ⋮ 230 .BYTE $00 231 .BYTE $00 232 .BYTE $00 233 .BYTE $00 ⋮ 235megaman_status_xcoord_speed_fraction_table: 236 .BYTE $00 ⋮
engine/turn_megaman.asm lines 222–243 at 94f0bf3 · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-21.
Checked by a second AI model, 2026-10-21.
- ^Measured from a standstill at the start of Bomb Man's stage, Mega Man's first step lasts 9 frames at 0.125 px/frame, and a released run slides 13 frames at 0.5 px/frame, 6.5 px in all, before he stands; a jump landed with nothing held shows the landing animation for 3 frames.Verifiedlsmmega/mm1
How we know
199@running: 200 LDA aobject_pointer 201 CMP #$09 202 BEQ @run_with_jump 203 CMP #$03 204 BNE @skip 205 LDA aobject_frameset_timer 206 CMP #$22 207 BNE @skip
engine/run_megaman.asm lines 199–214 at b606a84 · upstream ↗ 292_object_frameset_timer: ⋮ 296 AND #%00001111 ⋮ 301 LDA aobject_frameset_timer, X 302 AND #%00001111 303 CMP z:z0F 304 BCS @next 305 INC aobject_frameset_timer, X ⋮ 309 LDA aobject_frameset_timer, X
home/sprites.asm lines 292–324 at b606a84 · 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.
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.
- ^A hit faces Mega Man against the enemy's facing and puts him in the hit animation (
$12), which sets his upward speed to 1.25 px/frame ($01.$40) once and pushes him backward, against his own facing, at 0.5625 px/frame ($90) under the usual gravity until the animation ends.Codelsmmega/mm1How we know
124 LDA z:z0D 125 AND #objects_right 126 EOR #objects_right 127 ORA #$03 128 STA aobject_flag
engine/check_megaman_damaged.asm lines 124–128 at b606a84 · upstream ↗ 1_handle_megaman_heavily_objects: 2 ASL 3 TAX 4 LDY megaman_heavily_objects_and_ycoord_speed_table - 2, X 5 LDA megaman_heavily_objects_and_ycoord_speed_table - 1, X ⋮ 12 JSR _handle_special_megaman_objects 13 LDA aobject_frameset_timer 14 BEQ _handle_megaman_heavily_objects_unforced 15 JSR _ice_tsa_move 16 LDA z:zentire_toward ⋮ 30 AND #objects_right 31 BNE @right ⋮
engine/handle_special_megaman_objects.asm lines 1–64 at b606a84 · upstream ↗ 152 .BYTE $12 ⋮ 163 .BYTE $09
engine/ice_tsa.asm lines 151–163 at b606a84 · upstream ↗ 12 .BYTE $00 | $90data/special_xcoord_speed_table.asm line 12 at b606a84 · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-21.
Checked by a second AI model, 2026-10-21.
- ^A hit sets
zmegaman_invincibility_timeto 111 ($6F); while it is nonzero no contact damages Mega Man, and the stage loop counts it down by 1 on each pass that runs the enemies.Codelsmmega/mm1How we know
123@not_death: 124 LDA z:z0D 125 AND #objects_right 126 EOR #objects_right 127 ORA #$03 128 STA aobject_flag 129 LDA #$6F 130 STA z:zmegaman_invincibility_time 131 RTS
engine/check_megaman_damaged.asm lines 123–131 at b606a84 · upstream ↗ 18 LDA z:zmegaman_invincibility_time 19 BNE @cant_damage
engine/check_megaman_damaged.asm lines 18–19 at b606a84 · upstream ↗ 41 LDA aobject_flag 42 AND #%00001111 43 CMP #can_collide_map 44 BEQ @can_collide_map 45 JSR _run_weapons_trajectory 46 JSR _run_bosses_ai 47 LDA z:zmegaman_invincibility_time 48 BEQ @no_invincibility 49 DEC z:zmegaman_invincibility_time ⋮ 51@no_invincibility: 52 JSR _check_megaman_damaged
engine/stage_loop.asm lines 41–52 at b606a84 · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-21.
Checked by a second AI model, 2026-10-21.
- ^Mega Man 2 keeps Mega Man's hit numbers too, 111 frames of invincibility (
$6F) and a knockback of 1.25 px/frame up and 0.5625 back.Codelsmmega/mm1 · lsmmega/mm2How we know
129 LDA #$6F 130 STA z:zmegaman_invincibility_time
engine/check_megaman_damaged.asm lines 129–130 at b606a84 · upstream ↗ 64 .BYTE $12, $01 | $40engine/handle_special_megaman_objects.asm line 64 at b606a84 · upstream ↗ 12 .BYTE $00 | $90data/special_xcoord_speed_table.asm line 12 at b606a84 · upstream ↗ 11 LDA #$6F 12 STA z:zmegaman_invincibility_time 13 LDA #$01 14 STA aobject_ycoord_speed 15 LDA #$40 16 STA aobject_ycoord_speed_fraction 17 LDA #$00 18 STA aobject_xcoord_speed 19 LDA #$90 20 STA aobject_xcoord_speed_fraction
home/megaman_hit.asm lines 11–20 at 94f0bf3 · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-21.
Checked by a second AI model, 2026-10-21.
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
Primary
- Capcom and UDON Entertainment. 2013. “MM25: Mega Man & Mega Man X Official Complete Works.” UDON Entertainment. original · archived · licence, all uses
- America, Nintendo of. n.d. “NES Games (Nintendo of America release list).” Nintendo of America. original · archived · licence, all uses
- U.S.A., Capcom. 1987. “Mega Man Instruction Booklet (NES, North America).” Capcom U.S.A. original · archived · licence, all uses
- Tony, Ponce,. 2013. “Keiji Inafune dropped mad Mega Man secrets on me.” 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