Series

Mega Man

Capcom's franchise about a robot hero, begun on the NES in 1987.

Mega Man is Capcom’s franchise of games about a robot hero, called Rockman in Japan. He was renamed for the US in the belief that children wouldn’t take to a hero named Rockman1, and his design owes much to Osamu Tezuka’s Mighty Atom, known in English as Astro Boy2. GameSpot counted him among Capcom’s most popular characters worldwide3.

The classic series began with Mega Man on the NES in 1987. Mega Man X began a side series on the SNES in 19944, Mega Man Legends took the hero into 3D5, and Battle Network and Zero branched off on the Game Boy Advance6.

Series

Games

Interactive: timeline (needs JavaScript)

The series by year

Mechanics

MechanicMega Man
1987
Mega Man 2
1988
Mega Man 3
1990
Mega Man 4
1991
Mega Man 5
1992
Mega Man 6
1993
Air controlDirectDirectDirectDirect
Boss weaknessBoss tableEvery enemy
Charge shotNoneTiers on releaseTiers on releaseTiers on release
ClimbingVine or ladder
Coyote timeNone
Destructible terrainBreakable tiles
FlightHeld height
GravityOne gravityOne gravityOne gravityOne gravity
Ground slideNoneTimedTimedTimedTimed
HitboxBox
Invincibility framesFrame timerFrame timerFrame timerFrame timer
JumpOne speedOne speedOne speedOne speedOne speedOne speed
KnockbackFixed shoveFixed shoveFixed shoveFixed shoveFixed shoveFixed shove
Palette cyclingPalette sets
Password and battery savePassworduses
RunningSteppedSteppedSteppedStepped
Sprite flickerAlternating order
Status bar splitSprite overlay
Variable jump heightRelease capRelease capRelease capRelease capRelease capRelease cap
Weapon energyPer weaponPer weapon
Cooperative multitaskinguses
Stage selectuses

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
ConceptMega Man
1987
Mega Man 2
1988
Mega Man 3
1990
Mega Man 4
1991
Mega Man 5
1992
Mega Man 6
1993
Air controluses
Area transition
Boot sequence
Boss weakness
Charge shot
CHR RAM
Climbinguses
Controller reading
Cooperative multitasking
Coyote time
Destructible terrainuses
Enemy explosion
Enemy spawning
Enemy targeting
Flight
Forced blanking
Game loop
Gravity
Ground slide
Hitbox
Invincibility frames
Jumpuses
Jump physics
Knockback
Level loading
Music driver
Palette cycling
Password and battery saveuses
PRG bank switching
Running
Sound effects
Sprite flicker
Stage selectuses
Status bar split
Tile collision
Variable jump height
VRAM buffer
Weapon energy

Code lineage

FromToMatchBytesWhat
Mega Man audio-controlMega Man 2 audio-controlchanged565Mega Man 2's sound engine entry and channel setup are Mega Man's, with two changes: `_music_fade_in_out` no longer ignores a new fade while one is running, and where Mega Man steps X with INX, four operands use an address plus 1 instead and one writes `SQ1_SWEEP` plus X. The engine starts at $8000 instead of $9000, so its jump and call addresses differ too.
Mega Man audio-music-readerMega Man 2 audio-music-readerrelocated705Mega Man 2's song data reader is Mega Man's, instruction for instruction and with the same RAM, so the two games read the same note and command format. It sits $100C lower: only its jump and call addresses, its command table, and the address of the note table differ.
Mega Man audio-processingMega Man 2 audio-processingchanged824Mega Man 2's per-frame channel update is Mega Man's, except that `_break_frame` and the end of `_pitch_envelope_common` address the next APU register as `SQ1_SWEEP` plus X, where Mega Man steps X with INX and writes `SQ1_VOL` plus X. The code sits $100A lower, so its jump and call addresses differ too.
Mega Man audio-sfx-readerMega Man 2 audio-sfx-readerrelocated327Mega Man 2's sound effect reader is Mega Man's, instruction for instruction and with the same RAM, moved $100C lower: only its jump and call addresses and the addresses in its command table differ.
Mega Man audio-tablesMega Man 2 audio-tableschanged219Mega Man 2's note length and pitch tables are Mega Man's but for one pitch: the period of the note the disassembly names `nEb1` drops from $059E to $0594, about 12 cents higher (computed). The region also ends with 3 bytes of $FF filler instead of 7.
Mega Man b0-menu-font-tilesMega Man 2 stage-common-tilesidentical96Mega Man 2's six menu border tiles, the end of its common stage tiles, are Mega Man's six menu tiles, byte for byte.
Mega Man b0-menu-font-tilesMega Man 2 ready-font-tileschanged80Mega Man 2's five READY letter tiles have Mega Man's letter shapes, row for row, but in each tile's second bit plane instead of its first, so the letters draw in color 2 of their palette where Mega Man's draw in color 1.
Mega Man bankswitchMega Man 2 bankswitchrewritten81Both games' bank switch routines map a PRG bank at $8000, but Mega Man 2's is new code for a different board: Mega Man writes the bank number once, to its own byte of a bank table (the disassembly's `uxrom_prg_bank`), and Mega Man 2 writes it to MMC1 one bit at a time, then runs any sound an NMI put off during the switch.
Mega Man create-explosionMega Man 2 create-explosionidentical60Mega Man 2's death explosion takes its twelve pieces' x and y speeds and facing flags from five 12-byte tables identical to Mega Man's explosion tables. The code around them is new: Mega Man's `_create_explosion_object` sets up one piece per call, and Mega Man 2's `_create_explosion` loops over all twelve.
Mega Man cutman-wily1-mapMega Man 2 metalman-mapidentical1,024The last 16 screens of Metal Man's map, $1C to $2B (1,024 bytes), are byte for byte the last 16 of Mega Man's Cut Man and Wily stage 1 map: Cut Man's screens $0C to $0F and Wily stage 1's $10 to $1B. Metal Man's screens $18 to $1B repeat four of them, Wily stage 1's $18 to $1B.
Mega Man joyMega Man 2 joyrelocated30Mega Man 2's `_joy` is Mega Man's, line for line; only the two button bytes it writes moved in zero page, from $14 and $18 to $23 and $27.
Mega Man nmi-waitMega Man 2 nmi-waitchanged129Mega Man 2's `_nmi_wait_0e` and `_nmi_wait_0d` keep the steps of Mega Man's `_nmi_wait`: save the last buttons, wait for the NMI, call `_joy`, and mark the newly pressed buttons. The two differ only in the bank they map at the end, and each first calls `_background_palette`. Mega Man 2 drops the path for buttons the game forces and moves the water frame into `_nmi_wait_water`.
Mega Man object-tilesMega Man 2 object-tiles-updatechanged26Mega Man 2's `_object_tiles_update` is the loop Mega Man enters at `_init_object_tiles`, which copies the tile buffer to CHR RAM, with its RAM at new addresses. Mega Man 2 drops the test in front of it and the `_object_tiles_update_yellow_devil` path, which writes two bytes at each of several PPU addresses, a row ($20) apart.
Mega Man scrollingMega Man 2 scrollingchanged246Mega Man 2's `_scrolling_vertical` follows Mega Man's `_scrolling_up_down`: the same name table and attribute address math and the same loop writing four 8x8 tiles per 16x16 quarter. Mega Man 2 computes the 32x32 block's address from the screen number, where Mega Man looks the screen up in a pointer table and checks `_special_blockset_collision` for a block the disassembly labels removed; some of its RAM moved too. The rest of each region is different code.
Mega Man stage-loopMega Man 2 stage-start-main-looprewritten273Both games' stage loops run a frame of play and wait for the NMI, but Mega Man 2's is new code: it calls its own routines in its own order, opens the menu on Start with no Select pause, and waits an extra frame now and then in water. Its region also starts the stage before the loop.
Mega Man title-tilesMega Man 2 opening-title-tilesidentical1,344Tiles 1 to 84 of Mega Man 2's title screen patterns (1,344 bytes) are byte for byte tiles 1 to 84 of Mega Man's.
Mega Man 2 airman-aiMega Man 3 doc-airidentical155Doc Robot's Air Man fight in Mega Man 3 uses Air Man's tornado tables from Mega Man 2 byte for byte (155 bytes): the five delays between rounds, then five patterns of six tornadoes each, with their Y and X speeds (whole and fraction) and how long each flies.
Mega Man 2 audio-controlMega Man 3 sound-driver-entryrewritten108Both games run their sound driver from the NMI, but Mega Man 3's is new code with a new layout. Mega Man 2 keeps the driver and its songs together in bank 12, queues up to 16 tracks, and works out a note's length as a table value times its channel's tempo byte. Mega Man 3 keeps the code in bank 22 and the data in bank 23, reading bank 24 for data addresses from $C000; it takes sound IDs from an eight-entry ring buffer in the fixed bank, and refuses a sound whose priority byte is lower than the one playing.
Mega Man 2 bankswitchMega Man 3 select-prg-banksrewritten37Both games flag a bank switch in progress and catch up on the frame's sound afterward if the NMI arrived during it, but Mega Man 3's switch is new code for a different board: Mega Man 2 maps one 16 KB bank at $8000 by writing its number to MMC1 one bit at a time, and Mega Man 3 writes two 8 KB banks, at $8000 and $A000, to the MMC3 as whole bytes.
Mega Man 2 divideMega Man 3 dividechanged103Mega Man 3's `divide_8bit` is Mega Man 2's `_divide_mod` with its zero-page operands one byte lower ($00-$03 for $01-$04). Its 16-bit division is Mega Man 2's `_divide_fraction` with its RAM moved and two changes: Mega Man 3 saves and restores X around the loop, and stores the low byte of each successful subtraction back in the remainder ($01), where Mega Man 2 writes it to $09, outside its shift chain.
Mega Man 2 enemy-collide-and-moveMega Man 3 gravity-moverrewritten132Both games move an object each frame by a speed with a fraction and change its Y speed by gravity, but Mega Man 3's movers are new code that Mega Man and the enemies share. Mega Man 2's enemy routine, left undecoded by its disassembly, checks the object's hits, moves it by its Y speed, subtracts gravity from that speed when a flag bit asks for it, moves it by its X speed in the way it faces, and removes it once it leaves the screen; walls and floors are a separate routine, and Mega Man moves with his own code. Mega Man 3's `move_vertical_gravity` and `move_right_collide` serve slot 0, the player, and every enemy alike, and run the tile check inside each move, snapping the object to the floor, ceiling, or wall it reaches.
Mega Man 2 find-objectsMega Man 3 enemy-spawn-checkchanged128Mega Man 3's `check_new_enemies` is the enemy half of Mega Man 2's `_find_objects`, instruction for instruction, with new RAM and table addresses: both take the screen's left and right edges, then on the side the screen moves toward spawn each placement that comes into range and on the other side move a second cursor past placements left behind. Mega Man 3 drops Mega Man 2's matching walk over a separate item list and the switch to the stage bank around it. The spawn routine each calls starts the same way, skipping a placement already in a slot and taking a free one, and then differs: Mega Man 2 fills the slot from per-type tables in its fixed bank, and Mega Man 3 skips a placement marked defeated and copies the type's properties from bank 0.
Mega Man 2 font-3Mega Man 3 chr-wily-background-bidentical160Mega Man 3's background CHR bank $66, mapped for Wily stage 6, holds 27 of the 31 non-blank tiles of Mega Man 2's third font set (the disassembly's `font_3.chr`), the longest aligned run 10 tiles (160 bytes).
Mega Man 2 heatman-wily1-sprite-tiles-l11Mega Man 3 chr-player-and-weapon-spritesidentical384Mega Man 3's sprite CHR banks $00-$01, mapped at sprite tiles $00-$7F throughout play, start from Mega Man 2's first 128 sprite tiles (the disassembly's `megaman_capsule_e_tank_bullet_mega_buster.chr`): 84 of the 127 non-blank tiles are the same at the same numbers, the longest run tiles $20-$37 (384 bytes).
Mega Man 2 heatman-wily1-sprite-tiles-l11Mega Man 3 chr-stage-spritesidentical336The first 32 tiles of 17 of Mega Man 3's sprite CHR banks ($08, $0A, $0C, $0F, $11, $13, $15, $1D, $20, $24, $26, $27, $2A, $2C, $2E, $32, and $3C) are Mega Man 2's sprite tiles $60-$7F, from the same set as Mega Man's own: 29 of the 32 are the same at the same numbers, the longest run tiles $0B-$1F (336 bytes).
Mega Man 2 joyMega Man 3 read-controllersrewritten88Both games strobe the controllers and merge each port's two data bits, but Mega Man 3's routine is new code. Mega Man 2's `_joy` reads one pad after the other and leaves the newly pressed buttons to the frame wait that calls it; Mega Man 3's `read_controllers` reads both pads in one loop, works out the new presses itself, and clears the d-pad when opposite directions are held together.
Mega Man 2 metalman-sprite-tiles-l199Mega Man 3 chr-doc-robot-spritesidentical144Mega Man 3's sprite CHR bank $22 holds 17 tiles of Mega Man 2's boss sets, 9 from Wood Man's and 8 from Heat Man's, and bank $21 holds 4 of Crash Man's; the longest run is 9 of Wood Man's tiles (144 bytes).
Mega Man 2 nmiMega Man 3 nmirewritten231Both games' NMI handlers copy the sprites by DMA, write the queued screen and palette updates, set the scroll, and run the sound driver, but Mega Man 3's handler is new code. Mega Man 2's offsets the scroll for the Mecha Dragon and puts the sound off when the NMI interrupts a bank switch; Mega Man 3's also loads the MMC3's scanline counter for the frame's split-screen interrupt and picks the interrupt handler for the screen mode.
Mega Man 2 nmi-waitMega Man 3 task-schedulerrewritten146Both games run a stage a frame at a time in step with the NMI, but Mega Man 3's frame loop is new code built on a task scheduler. Mega Man 2's stage loop calls its routines in turn and then spins in `_nmi_wait_0e` until the NMI sets a flag, reading the pads after it. Mega Man 3 runs up to four tasks, each resumed from its own saved stack pointer; `gameplay_frame_loop` gives up the CPU for a frame through the scheduler, which reads the controllers only when it resumes task 0.
Mega Man 2 opening-title-tilesMega Man 3 chr-title-backgroundidentical256Mega Man 3's title screen background tiles (CHR banks $76-$77) are largely Mega Man 2's title set (`title.chr`, loaded at `_load_title_chr`), moved a few tile numbers: 102 of their 128 non-blank tiles appear in it, 96 different ones, in runs of up to 16 tiles (256 bytes).
Mega Man 2 stage-selectMega Man 3 stage-select-inputrewritten298Both games' stage selects move a cursor over the bosses' portraits and start the chosen stage, but Mega Man 3's is new code. Mega Man 2's `_stage_select` blanks a beaten boss's portrait by writing empty tiles to the name table, and on a d-pad press calls `_stage_select_set` to move the cursor; Mega Man 3 keeps the cursor's column and row apart, moves each by a table offset and ignores a move off its 3 by 3 grid, redraws the six sprites of Mega Man's eyes in the center portrait for the cursor's position, and confirms on A as well as Start.
Mega Man 2 tsa-collisionMega Man 3 tile-check-verticalrewritten333Both games find the 32-pixel block at a point in the screen's layout and then its 16-pixel quarter, but Mega Man 3's tile check is new code with a new type format. Mega Man 2's `_tsa_collision` tests one point a call and takes its type from the quarter byte's top two bits, which a per-stage table remaps; Mega Man 3's `check_tile_collision` tests a list of points from a hitbox table in one call, clamps them to the screen, takes each type from the upper four bits of the tile's entry in a table at $BF00 in the stage bank, and ORs the types together.
Mega Man 2 wily-sprite-tiles-b8Mega Man 3 chr-screen-spritesidentical96Mega Man 3's sprite CHR bank $3C holds 13 of the 23 non-blank tiles of Mega Man 2's set of Dr. Wily bowing down (the disassembly's `dogeza.chr`), six of them in a run (96 bytes).
Mega Man 3 boss-door-closeMega Man 4 boss-door-animationchanged207Mega Man 4's first boss door routine follows Mega Man 3's `close_boss_door` step for step: the door sound, then four 16x16 blocks of tiles and attributes through the same buffer, one every 4 frames. Mega Man 4 runs it from the fixed bank, with the stage's bank mapped at $A000, and reads the door's addresses and tiles from fixed places in that bank ($B570-$B57B), where Mega Man 3 indexes tables in its door bank by the door's number.
Mega Man 3 boss-door-openMega Man 4 boss-door-animationchanged195Mega Man 4's second boss door routine follows Mega Man 3's `open_boss_door` the same way, with the same changes: it runs from the fixed bank and reads its door's data from $B57C-$B587 in the stage's bank.
Mega Man 3 chr-password-backgroundMega Man 4 chr-wily1-backgroundidentical416Mega Man 4 has Mega Man 3's 26 letter tiles, A to Z, byte for byte (416 bytes), in its bank 19 at $9800. Mega Man 3 has two copies, in its password screen tiles (after its digits 0 to 9) and in its stage start sprite tiles; Mega Man 4's digits before them differ.
Mega Man 3 chr-player-and-weapon-spritesMega Man 4 chr-common-spritesidentical912The first 57 sprite tiles ($00-$38) of the set Mega Man 4 shares across its stages (912 bytes) are byte for byte the first 57 tiles of Mega Man 3's sprite CHR banks $00-$01, the set it maps throughout play. Of the first 128 tiles, 96 are the same at the same numbers.
Mega Man 3 chr-title-backgroundMega Man 4 chr-menu-and-cossack-map-backgroundchanged2,048Mega Man 4's bank 20 holds, at $8800-$8FFF, Mega Man 3's 128 title screen background tiles (CHR banks $76-$77), the same in all but two: tiles $20 and $2F, which in Mega Man 4 are plain outlined squares.
Mega Man 3 collide-moversMega Man 4 entity-moverschanged248Mega Man 4's four routines that move an entity by its speed and stop it at a wall, floor, or ceiling follow Mega Man 3's `move_right_collide`, `move_left_collide`, `move_down_collide`, and `move_up_collide` step for step. Each saves the player's position before the move, checks for a platform, pushes the player off it, and on a push that crosses a screen retries with the opposite side's tile check. Two things changed. Each tile check is one call, where Mega Man 3 calls its tile check and then `update_collision_flags`. And when the right mover hits a solid tile, Mega Man 4 first copies $45 to $3F for the player, which its disassembly reads as the ground tile type. Two of the screen-crossing tests also test their two flags in the other order, to the same effect.
Mega Man 3 divideMega Man 4 entity-aimidentical103Mega Man 4's 8-bit and 16-bit division routines, used to aim enemies, are Mega Man 3's `divide_8bit` and its 16-bit version, byte for byte (103 bytes), at $FC14 in its fixed bank where Mega Man 3 has them at $FCEB.
Mega Man 3 drain-ppu-bufferMega Man 4 nametable-flush-ppu-controlidentical37Mega Man 4's name table buffer flush is Mega Man 3's `drain_ppu_buffer`, byte for byte (37 bytes). Mega Man 4 follows it with four short routines: two that change PPUCTRL and two that turn rendering off and on.
Mega Man 3 enemy-spawn-checkMega Man 4 spawn-enginerelocated128Mega Man 4's enemy spawn engine is Mega Man 3's `check_new_enemies` instruction for instruction, moved from bank 26 at $9C00 to bank 56 at $8000; only the addresses of the stage's placement tables and one zero-page variable ($2E in Mega Man 3, $2F in Mega Man 4) differ.
Mega Man 3 fill-nametableMega Man 4 fill-nametableidentical76Mega Man 4's routine that fills a name table and its attributes with one value is Mega Man 3's `fill_nametable`, byte for byte.
Mega Man 3 frequency-outputMega Man 4 frequency-outputidentical224Mega Man 4's code that writes each channel's pitch to the APU, with vibrato, detune, and slides, is Mega Man 3's, byte for byte at the same address.
Mega Man 3 music-parserMega Man 4 sfx-streamidentical321Mega Man 4's sound effect reader is Mega Man 3's (labeled `parse_music_data` there), byte for byte at the same address.
Mega Man 3 note-frequencyMega Man 4 note-frequencyidentical220Mega Man 4's note-to-pitch routines are Mega Man 3's, byte for byte at the same address.
Mega Man 3 plain-moversMega Man 4 plain-moverschanged258Mega Man 4's routines that move an entity by its speed without checking tiles, and apply gravity, follow Mega Man 3's with the entity arrays moved, and with four changes. Mega Man 4 drops Mega Man 3's routine that sets a behind-the-background flag from the tile hit. Its gravity tests one flag at $43 first, where Mega Man 3 tests for the player and then a flag at $B9. It drops Mega Man 3's exemption, for one animation ($13), from the cap on falling speed. And when gravity resets, it sets one speed ($FF00) for every entity, where Mega Man 3 sets $FFC0 for the player and $FFAB for the rest.
Mega Man 3 play-soundMega Man 4 play-soundidentical340Mega Man 4's routine that starts a song or an effect, and takes the stop, pause, fade, and transpose commands, is Mega Man 3's, byte for byte at the same address.
Mega Man 3 read-controllersMega Man 4 read-controllersidentical88Mega Man 4's controller read, which works out the new presses and cancels opposite directions, is Mega Man 3's `read_controllers`, byte for byte.
Mega Man 3 rendering-on-offMega Man 4 nametable-flush-ppu-controlrelocated40Mega Man 4's four routines after its name table buffer flush, two that reset or set bits of PPUCTRL and two that turn rendering off and on, are Mega Man 3's `disable_nmi`, `dead_code_enable_nmi`, `rendering_off`, and `rendering_on` instruction for instruction; only the zero-page counter the last two step differs ($EE in Mega Man 3, $EA in Mega Man 4).
Mega Man 3 sfx-channelMega Man 4 music-track-readeridentical587Mega Man 4's music track reader is Mega Man 3's (labeled `process_sfx_channel` there), byte for byte at the same address, so the two games read the same track format.
Mega Man 3 sound-driver-entryMega Man 4 sound-driver-entrychanged108Mega Man 4's sound bank opens with Mega Man 3's entry jumps, multiply, and sound-data read, at the same addresses; only the two bank numbers the read maps differ: the overflow data bank, $18 in Mega Man 3 and $1D in Mega Man 4, and the data bank it restores, $17 and $1F.
Mega Man 3 sound-driver-tablesMega Man 4 sound-driver-tableschanged299Mega Man 4's sound driver tables, through the note period table, are Mega Man 3's at the same addresses; the 37 bytes after it ($8A1B-$8A3F), all zero in Mega Man 3, hold data in Mega Man 4.
Mega Man 3 sound-driver-updateMega Man 4 sound-driver-updateidentical146Mega Man 4's per-frame sound tick is Mega Man 3's `sound_driver_update`, byte for byte at the same address.
Mega Man 3 sprite-offsets-defaultMega Man 4 anim-0c-player-sprite-dataidentical304304 bytes of Mega Man 3's default sprite position offsets, $A078-$A1A7 of its bank $19, are byte for byte in Mega Man 4's player animation bank $0C at $97BE-$98ED. They are position sets $08-$17 in both games' pointer tables: sixteen lists of signed Y and X offsets, one pair per tile, 4 to 12 tiles each.
Mega Man 3 task-schedulerMega Man 4 task-schedulerrelocated146Mega Man 4's cooperative task scheduler, with its routines to start, kill, and yield tasks, is Mega Man 3's `task_scheduler` instruction for instruction; it sits 5 bytes lower, and only its jump and call addresses differ.
Mega Man 3 volume-envelopeMega Man 4 volume-envelopeidentical379Mega Man 4's volume envelope and fade code is Mega Man 3's, byte for byte at the same address.
Mega Man 3 wall-snapMega Man 4 tile-alignmentrelocated102Mega Man 4's four routines that push an entity out of a wall, ceiling, or floor after a tile hit are Mega Man 3's `snap_x_to_wall_right`, `snap_x_to_wall_left`, `snap_y_to_ceil`, and `snap_y_to_floor` instruction for instruction; only the addresses of the entity position arrays differ. Mega Man 3 follows them with two calls into its boss door bank, which Mega Man 4 doesn't have there.
Mega Man 4 bank-switch-applyMega Man 5 bank-switchingidentical37Mega Man 5's routine that maps the two switchable PRG banks from their shadows, and then runs a sound request that arrived while it was busy, is Mega Man 4's, byte for byte (37 bytes). Mega Man 5 enters it through 6 new bytes that set both shadows from one bank number, the bank and the one after it.
Mega Man 4 bank24-tailMega Man 5 chr-bank-18identical83252 tiles of Mega Man 4's font in bank 36 ($BB00-$BE3F), which look like Japanese kana when drawn out, are byte for byte tiles in Mega Man 5's CHR at $30300-$3063F (832 bytes).
Mega Man 4 chr-menu-and-cossack-map-backgroundMega Man 5 chr-bank-18identical2,048Mega Man 5's CHR at $31800-$31FFF holds the 128 background tiles of Mega Man 4's bank 20 at $8800-$8FFF, byte for byte (2,048 bytes): the block Mega Man 4 took from Mega Man 3's title screen tiles, with Mega Man 4's two changed tiles.
Mega Man 4 chr-wily1-backgroundMega Man 5 chr-bank-19identical416Mega Man 5 has the 26 letter tiles, A to Z, that Mega Man 4 took from Mega Man 3, byte for byte (416 bytes), in its CHR at $32410.
Mega Man 4 distance-and-directionMega Man 5 distance-and-directionchanged181Mega Man 5's routines for an object's distance to the player on each axis, and the direction to him in 16 steps, are Mega Man 4's, with two changes. It adds two routines that measure the same two distances to another slot's object. And its direction routine starts by setting Y to 0, the player's slot, and falls into the copy of slot Y's position, where Mega Man 4 has a separate entry that copies the player's position and jumps on. The rest is byte for byte, except the address of the 48-byte direction table, which is the same in both and follows the code directly in Mega Man 5.
Mega Man 4 entity-aimMega Man 5 aim-and-divideidentical103Mega Man 5's 8-bit and 16-bit division routines are Mega Man 4's, which are Mega Man 3's, byte for byte (103 bytes), at $F207 in its fixed bank.
Mega Man 4 entity-moversMega Man 5 entity-moverschanged240Mega Man 5's routines that move an object right, left, down, or up and then check tiles, and for the player the platforms it stands on, follow Mega Man 4's with three changes besides addresses. The facing flag they set or clear is bit 5 of the object's flags, where Mega Man 4 uses bit 6. A right-wall hit no longer copies the player's ground tile type from $45 to $3F. And before a vertical move, Mega Man 5 saves the player's vertical screen in $03, where Mega Man 4 saves its horizontal screen.
Mega Man 4 fill-nametableMega Man 5 fill-and-clearidentical76Mega Man 5's routine that fills a name table and its attributes with one value is Mega Man 4's, byte for byte; Mega Man 5 follows it with routines that clear the sprite buffer and the object slots.
Mega Man 4 frequency-outputMega Man 5 frequency-outputidentical224Mega Man 5's code that writes each channel's pitch to the APU, with vibrato, detune, and slides, is Mega Man 4's, byte for byte at the same address.
Mega Man 4 music-track-readerMega Man 5 music-track-readeridentical587Mega Man 5's music track reader is Mega Man 4's, byte for byte at the same address.
Mega Man 4 nametable-flush-ppu-controlMega Man 5 nametable-flush-ppu-controlrelocated77Mega Man 5's name table buffer flush and the four PPU routines after it are Mega Man 4's instruction for instruction; only the zero-page counter the rendering switches step differs ($EA in Mega Man 4, $F0 in Mega Man 5).
Mega Man 4 note-frequencyMega Man 5 note-frequencyidentical220Mega Man 5's note-to-pitch routines is Mega Man 4's, byte for byte at the same address.
Mega Man 4 plain-moversMega Man 5 entity-collide-moverschanged345Mega Man 5's routines that move an object by its speed without checking tiles, and apply gravity, follow Mega Man 4's, with the gravity amount at $A1 instead of $99 and these changes. Eight bytes before the left mover clear the facing bit and fall into it. The player's gravity is skipped whenever a flag at $52 is set, where Mega Man 4 skips it only while a timer at $43 counts down. And Mega Man 5 adds four routines after them, one of which adds gravity to the vertical speed instead of subtracting it, capped at 7 pixels a frame.
Mega Man 4 platform-collisionMega Man 5 platform-collisionchanged288Mega Man 5's two checks for a platform object that the player meets moving vertically or horizontally, and their two distance helpers, follow Mega Man 4's test for test. Both walk the slots down from $17 and skip empty, off-screen, and non-solid ones. A one-way platform only catches a falling player, and the push is capped at 8 pixels. The changes: both checks also give up unless the moving object's own Y screen is 0. The horizontal check skips objects of type $02. The helper reads both of the shape's sizes from two tables through X, which it then sets to 0, the player's slot, where Mega Man 4 looks up the second size in the vertical check itself. The smaller box for a sliding player is chosen by `player_state` $02, where Mega Man 4 tests the player's sub-type for $10. And the horizontal distance helper no longer masks the screen difference to one bit. The four routines that push the player off a platform, which close Mega Man 4's region, sit after the position nudges in Mega Man 5.
Mega Man 4 play-soundMega Man 5 play-soundidentical340Mega Man 5's routine that starts a song or an effect, and takes the stop, pause, fade, and transpose commands, is Mega Man 4's, byte for byte at the same address.
Mega Man 4 queue-soundMega Man 5 queue-soundidentical27Mega Man 5's fixed-bank routine that adds a sound to the queue is Mega Man 4's, byte for byte (27 bytes), at $EC5B where Mega Man 4 has it at $F6BC.
Mega Man 4 read-controllersMega Man 5 read-controllerschanged94Mega Man 5's controller read is Mega Man 4's, byte for byte, with one addition: before it returns, it zeroes controller 2's new presses and held buttons ($15 and $17).
Mega Man 4 resetMega Man 5 resetidentical98Mega Man 5's reset begins with Mega Man 4's first 98 bytes, byte for byte at the same address ($FE00-$FE61): the interrupt, sound, and rendering shutdown, the wait through four vblanks, the PPU address precharge, the RAM clear, the sound queue's empty markers, and the PPU mask shadow. From the mapper setup on, the two differ.
Mega Man 4 sfx-streamMega Man 5 sfx-streamidentical321Mega Man 5's sound effect reader is Mega Man 4's, byte for byte at the same address.
Mega Man 4 sound-driver-entryMega Man 5 sound-driver-entrychanged108Mega Man 5's sound bank, bank $18, opens with Mega Man 4's entry jumps, multiply, and sound-data read at the same addresses; only the two bank numbers the read maps differ: the overflow data bank, $1D in Mega Man 4 and $1A in Mega Man 5, and the data bank it restores, $1F and $19.
Mega Man 4 sound-driver-tablesMega Man 5 sound-driver-tableschanged299Mega Man 5's sound driver tables, through the note period table, are Mega Man 4's at the same addresses. The 37 bytes after it ($8A1B-$8A3F), which hold data in Mega Man 4, are all zero in Mega Man 5, as in Mega Man 3.
Mega Man 4 sound-driver-updateMega Man 5 sound-driver-updateidentical146Mega Man 5's per-frame sound tick is Mega Man 4's, byte for byte at the same address.
Mega Man 4 spawn-engineMega Man 5 spawn-enginerelocated128Mega Man 5's spawn engine walks its stage's spawn list ahead of and behind the camera with Mega Man 4's code, instruction for instruction; only the addresses differ: the stage's placement tables, the two list cursors ($9E and $9F in Mega Man 4, $AD and $AE in Mega Man 5), the scroll direction flag ($2F, $AC), and the four window temporaries, two bytes higher.
Mega Man 4 spawn-entryMega Man 5 spawn-enemychanged173Mega Man 5's routine that spawns an enemy from a spawn list entry follows Mega Man 4's step for step: the same checks for a live copy and the no-respawn bitmap, and the same slot fill from the entry's position and the parameter tables for its code, with the tables and temporaries at other addresses. It changes two things: it keeps the spawn code in the object's $0510 byte, which Mega Man 4 clears, and it masks bit 7 off the flags parameter and, when that bit is clear, ends by calling `entity_facing_to_flags`.
Mega Man 4 task-schedulerMega Man 5 task-schedulerrelocated146Mega Man 5's cooperative task scheduler is Mega Man 4's instruction for instruction; it sits 6 bytes higher, and only its jump and call addresses differ.
Mega Man 4 tile-alignmentMega Man 5 position-nudgeschanged216Mega Man 5's four routines that push an object out of a wall, ceiling, or floor after a tile hit are Mega Man 4's, byte for byte but for one instruction: after a ceiling hit, Mega Man 5 clears the carry before adding where Mega Man 4 sets it, so the object ends one pixel higher than in Mega Man 4. Mega Man 5 follows them with four new routines that move an object along X or Y by the amount in $10 or $11 and compare its position with one saved in $02-$03.
Mega Man 4 volume-envelopeMega Man 5 volume-envelopeidentical379Mega Man 5's volume envelope and fade code is Mega Man 4's, byte for byte at the same address.
Mega Man 5 aim-and-divideMega Man 6 divide-16relocated65Mega Man 6's 16-bit division at $CC70 is Mega Man 5's `div16` at $F22D, except that it saves X in $08 instead of $09.
Mega Man 5 chr-bank-00Mega Man 6 tiles-bank-00identical176116 of the 157 non-blank sprite tiles in Mega Man 6's bank $00 at $8000-$89FF (115 distinct) appear in Mega Man 5's sprite CHR at $00000-$01FFF, rearranged: the longest stretch that matches tile for tile is 11 tiles (176 bytes), Mega Man 5's tiles $0A-$14 as Mega Man 6's $0B-$15.
Mega Man 5 chr-bank-18Mega Man 6 tiles-bank-10changed2,064Mega Man 6's bank $10 holds, at $8800-$900F, the 129 tiles of Mega Man 5's CHR at $31800-$3200F (2,064 bytes), the title screen block of claim mm4-mm5-title-tiles plus one tile, with one tile changed: the 33rd ($8A00), a hollow square in Mega Man 5 and a circled R in Mega Man 6.
Mega Man 5 chr-bank-19Mega Man 6 tiles-bank-11changed416Mega Man 6's bank $11 holds, at $82B0-$844F, Mega Man 5's 26 letter tiles, A to Z, from its CHR at $32410 (416 bytes), with the J redrawn: its hook reaches a pixel further left.
Mega Man 5 chr-bank-19Mega Man 6 tiles-bank-11identical160Mega Man 6's background bank $11 has 83 different tiles of Mega Man 5's background CHR at $32000-$33FFF. Besides the 26 letters (claim mm5-mm6-letter-tiles), the ten tiles right before them, at $8200-$829F, are byte for byte Mega Man 5's ten tiles at $32300 (160 bytes); the rest come in stretches of up to 10 tiles.
Mega Man 5 frequency-outputMega Man 6 frequency-outputchanged232Mega Man 6's period output is Mega Man 5's with one step added: after adding the channel's signed offset at $0714 to the period, a period of zero becomes 1. The added 8 bytes push the sound tables seven bytes higher, and the routine's table operands follow.
Mega Man 5 music-track-readerMega Man 6 music-track-readerrelocated587Mega Man 6's music track reader is Mega Man 5's, one byte lower ($8392 against $8393); only its call and jump targets, jump-table entries, and the addresses of the tables it reads differ.
Mega Man 5 note-frequencyMega Man 6 note-frequencyrelocated220Mega Man 6's note-to-period lookup is Mega Man 5's, one byte lower; the only differences are the two operands that address the period table, which sits seven bytes higher in Mega Man 6 ($8960 against $8959).
Mega Man 5 play-soundMega Man 6 play-soundchanged339Mega Man 6's sound command routine is Mega Man 5's with one change: where Mega Man 5 steps the sound's data pointer by incrementing $C1 and, on a carry, $C2 before copying it to $D0 and $D1, Mega Man 6 carries into X instead, so $C2 is left as it was, and the routine is a byte shorter. Code after it sits one byte lower, and its jumps, calls, and jump-table entries follow.
Mega Man 5 sfx-streamMega Man 6 sfx-streamrelocated321Mega Man 6's sound effect stream reader is Mega Man 5's, one byte lower ($8251 against $8252); only its call and jump targets and jump-table entries differ.
Mega Man 5 sound-data-bank1aMega Man 6 sound-data-bank36changed875Mega Man 6's sounds $23-$3C, the first 26 after its music, at $B758-$BAC2 of bank $36, are 22 of Mega Man 5's sounds from $1A to $3E plus four new ones ($2A-$2D). The 22 keep Mega Man 5's order, except that its $3E comes in as $2E. Seventeen are byte for byte. In the other five only addresses differ, each moved as far as the sound: one address inside each of four effects, and the four track pointers of $39, a sound with music's priority $00 (Mega Man 5's $30). Mega Man 6 leaves out 12 of Mega Man 5's $1A-$3A: $1F, $21, $23, $2B, $2F, $31-$34, and $36-$38. The Mega Man 5 disassembly's notes name two of the carried sounds, the ricochet ($1E, Mega Man 6's $27) and the hit ($2A, Mega Man 6's $35); the kill sound ($2B) is one of those left out.
Mega Man 5 sound-data-bank1aMega Man 6 sound-data-bank36identical79Mega Man 6's sound effects $61 and $62, at $BE99-$BEE7 of bank $36, are byte for byte Mega Man 5's $17 and $18, the first two effects after its music.
Mega Man 5 sound-data-bank1aMega Man 6 sound-data-bank36relocated116Mega Man 6's music $13, 116 bytes at $A19B-$A20E of bank $36, is Mega Man 5's music $11 moved. Only the four track pointers in its header differ, each $625 lower, as far as the song's start moved.
Mega Man 5 sound-directory-and-instrumentsMega Man 6 sound-directory-and-instrumentschanged568Mega Man 6's instrument table, 71 instruments of 8 bytes at $8B0F, has as many instruments as Mega Man 5's at $8ADB, but only 27 are the same under the same number. The longest such run is nine instruments, $3D-$45 (72 bytes). One more of Mega Man 6's is in Mega Man 5's table under another number.
Mega Man 5 sound-driver-entryMega Man 6 sound-driver-entrychanged108Mega Man 6's sound bank, bank $34, opens with Mega Man 5's entry jumps, multiply, and sound-data read at the same addresses; only the two bank numbers the read maps differ: the overflow data bank, $1A in Mega Man 5 and $36 in Mega Man 6, and the data bank it restores, $19 and $35.
Mega Man 5 sound-driver-tablesMega Man 6 sound-driver-tablesidentical292Mega Man 6's sound tables (note lengths, octave offsets, envelope steps, octave thresholds, and the period table) are Mega Man 5's byte for byte, seven bytes higher at $891C; the zero padding after them, up to the song directory at $8A40, is seven bytes shorter.
Mega Man 5 sound-driver-updateMega Man 6 sound-driver-updaterelocated146Mega Man 6's per-frame sound tick is Mega Man 5's at the same address; three call targets differ, because the stream readers they call sit one byte lower in Mega Man 6.
Mega Man 5 spawn-engineMega Man 6 stage-spawnerrewritten663Both games walk a stage's sorted spawn list with two cursors, one for each side of the screen, comparing the scroll position with each entry's screen and X position, but Mega Man 6's spawner is new code. Mega Man 5 reads fixed tables in the stage bank ($A9FF, $AA7F, $AB80), keeps its cursors in $AD and $AE, and treats codes from $C0 up as palette and CHR commands; Mega Man 6 reaches each stage's lists through pointers it sets in $74-$7F from tables in bank $3A, keeps its cursors in $0649 and $064A, and skips entries whose bit in $0650 marks them used.
Mega Man 5 vertical-section-transitionMega Man 6 vertical-section-transitionrewritten442Both games slide the screen to a new section when Mega Man leaves by the top or bottom, but Mega Man 6's is new code. Mega Man 5 tests the player's Y ($0378) against $08 and $E8 inside its per-frame scroll update, reads the section layout from the stage bank at $A950, and steps the slide 4 pixels a frame from there; Mega Man 6's transitions are separate routines that clear the object slots, reset the spawner, and run their own loop of 120 frames for a vertical move, drawing and waiting a frame each time.
Mega Man 5 volume-envelopeMega Man 6 volume-enveloperelocated379Mega Man 6's volume envelope code is Mega Man 5's, one byte lower; only its jump-table entries, call targets, and the address of the envelope step table, seven bytes higher, differ.

References

  1. ^Rockman was renamed Mega Man for the US in the belief that children wouldn't take to a hero named Rockman.Web1UP, Mega Man retrospective
    How we know
    with the belief kids wouldn't be interested in a hero named Rockman
    p. 1 · archived copy ↗

    The quote matches our archived copy.

    In the claim ledger

  2. ^Rockman's design and motives resemble those of Osamu Tezuka's Mighty Atom (Astro Boy).Web1UP, Mega Man retrospective
    How we know
    With a design and motives similar to those of Osamu Tezuka's beloved Mighty Atom
    p. 1 · archived copy ↗

    The quote matches our archived copy.

    In the claim ledger

  3. ^GameSpot's 2003 history calls Mega Man one of Capcom's most popular characters worldwide, and the series the company's most important before Street Fighter.WebGameSpot, History of Mega Man
    How we know
    In 1987 Capcom introduced what would prove to be one of its most popular characters worldwide … the company's most important pre-Street Fighter property
    introduction · archived copy ↗

    The quote matches our archived copy.

    In the claim ledger

  4. ^Mega Man X, on the SNES in 1994, began a side series.WebGameSpot, History of Mega Man
    How we know
    in 1994 Capcom came up with a side series to appease fans
    Mega Man X, The Basics · archived copy ↗

    The quote matches our archived copy.

    In the claim ledger

  5. ^Mega Man Legends (1998) took the series into 3D.WebGameSpot, History of Mega Man
    How we know
    the Mega Man series took the leap many had been waiting for - the leap into 3D
    Mega Man Legends, The Basics · archived copy ↗

    The quote matches our archived copy.

    In the claim ledger

  6. ^By 2003 the series had branched into Mega Man Battle Network, set in an alternate reality, and Mega Man Zero, a spin-off of the X series, both on the Game Boy Advance.WebGameSpot, History of Mega Man
    How we know
    alternate-reality Mega Man Battle Network titles on the Game Boy Advance … the budding X-related spin-off series Mega Man Zero
    introduction · archived copy ↗

    The quote matches our archived copy.

    In the claim ledger

Sources

Secondary