If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Mega Man (DOS)

From The Cutting Room Floor
Jump to navigation Jump to search
Other languages:
English • ‎Nederlands • ‎русский • ‎한국어

Title Screen

Mega Man

Developer: Rozner Labs
Publisher: Hi-Tech Expressions
Platform: DOS
Released in US: 1990


CodeIcon.png This game has unused code.
CopyrightIcon.png This game has hidden developer credits.
GraphicsIcon.png This game has unused graphics.
PiracyIcon.png This game has anti-piracy features.


Mega Man for DOS started out as an after-work passion project for Stephen Rozner. Eventually, it turned into an officially licensed Capcom game. Because the game had no input from Capcom, it has little to do with the NES and Game Boy titles. It even went in its own direction with three original Robot Masters. You can play the game in a browser at the Internet Archive.

Unused Copy Protection

Code and graphics exist for what appears to be an unused copy protection system. It shows an enemy portrait selected from a pool of 12 and asks you to "FIND THE PICTURE IN THE MANUAL AND TYPE IN THE NAME". A correct answer plays the energy-collection sound (sound 5), while an incorrect answer plays a sound like Volt Man's shield (sound 12).

Mega Man (DOS)-pass-screenshot.png

This screenshot was made by hacking in a jump to 0x154b0 (the function just preceding the main function).

The file pass.frm contains the graphics used in the copy protection screen.

Mega Man (DOS)-pass.frm-00-prompt.png The text of the prompt is stored as a single graphic.

Mega Man (DOS)-pass.frm-alphabet.png The characters that appear when you type are actually stored as 28 separate 8×8 graphics.

The enemy portraits differ from the in-game sprites in that they have a solid background and a border. Which portrait is selected depends on the current time, in a cycle that repeats every 12 seconds. Times ending in :01, :13, :25, :37, :49 are BATVIRE; :02, :14, :26, :38, :50 are FROGBOT; etc.

The program code contains an array of 12 11-byte strings that contain the correct answers, represented using the code 00= , 01=-, 02=A, 03=B, ..., 1b=Z.

03 02 15 17 0a 13 06 00 00 00 00 = BATVIRE
07 13 10 08 03 10 15 00 00 00 00 = FROGBOT
14 06 18 06 13 00 13 02 15 00 00 = SEWER RAT
11 0a 13 02 0f 09 02 00 00 00 00 = PIRANHA
06 06 0d 01 06 04 15 13 0a 04 00 = EEL-ECTRIC
13 02 11 15 10 13 03 10 15 00 00 = RAPTORBOT
0a 0f 14 06 04 15 10 03 10 15 00 = INSECTOBOT
14 11 1a 05 13 10 03 10 13 08 00 = SPYDROBORG
14 06 0f 15 13 1a 00 03 06 06 00 = SENTRY BEE
05 13 0a 0d 0d 00 11 13 06 14 14 = DRILL PRESS
02 13 0e 1a 00 02 0f 15 00 00 00 = ARMY ANT
02 14 14 06 0e 03 0d 06 13 00 00 = ASSEMBLER

Unused Map Tiles

Map tiles for each stage are stored in .BLK files. Not all of them are used.

Each tile is shown with its 1-bit foreground/background mask. When an unused tile is similar to a used tile, the table also shows the used tile.

SECUR.BLK

Unused Used Comments
Mega Man (DOS)-secur.blk-2f.png Mega Man (DOS)-secur.blk-2f-mask.png Mega Man (DOS)-secur.blk-34.png Mega Man (DOS)-secur.blk-34-mask.png Unused tile 2f resembles the edge of the building at the end of the introductory stage, except that it is missing lines that represent siding. Compare it to the used tile 34, for example.

SONIC.BLK

Unused Used Comments
Mega Man (DOS)-sonic.blk-18.png Mega Man (DOS)-sonic.blk-18-mask.png

Mega Man (DOS)-sonic.blk-19.png Mega Man (DOS)-sonic.blk-19-mask.png

Mega Man (DOS)-sonic.blk-17.png Mega Man (DOS)-sonic.blk-17-mask.png Grass tiles 17, 18, and 19 are copies of 08, 09, and 0a from SECUR.BLK, but only the first is used in SONIC.BLK.

VOLT.BLK

VOLT.BLK has the most map tiles of any stage (216), but they are all used.

DYNA.BLK

Unused Used Comments
Mega Man (DOS)-dyna.blk-32.png Mega Man (DOS)-dyna.blk-32-mask.png

Mega Man (DOS)-dyna.blk-33.png Mega Man (DOS)-dyna.blk-33-mask.png

Mega Man (DOS)-dyna.blk-36.png Mega Man (DOS)-dyna.blk-36-mask.png

Mega Man (DOS)-dyna.blk-37.png Mega Man (DOS)-dyna.blk-37-mask.png

Upward and downward stair tiles 32 and 33 are unused. Their ceiling counterparts 36 and 37 are used. The stairs are purely a visual effect; the tiles have no collision of their own.
Mega Man (DOS)-dyna.blk-55.png Mega Man (DOS)-dyna.blk-55-mask.png

Mega Man (DOS)-dyna.blk-59.png Mega Man (DOS)-dyna.blk-59-mask.png

Unused tiles 55 and 59 look as if they are meant to be joined together on the ceiling, forming a kind of dome: Mega Man (DOS)-dyna.blk-55.pngMega Man (DOS)-dyna.blk-59.png.

WILEY.BLK

Wily's stage duplicates many tiles from the earlier Robot Master stages. Some of the duplicated tiles go unused here, despite being used in the earlier stages. In addition, there is one tile that is unique to Wily's stage but is unused.

Unused Comments
Mega Man (DOS)-wiley.blk-1c.png Mega Man (DOS)-wiley.blk-1c-mask.png Tile 1c is the same as 59 in SONIC.BLK.
Mega Man (DOS)-wiley.blk-20.png Mega Man (DOS)-wiley.blk-20-mask.png Tile 20 is the same as 5e in SONIC.BLK, and has the same anti-gravity property.
Mega Man (DOS)-wiley.blk-3c.png Mega Man (DOS)-wiley.blk-3c-mask.png Tile 3c is the same as 8a in SONIC.BLK. The graphic is identical to 14 in WILEY.BLK and 13 in SONIC.BLK, but the map tile properties are different. This is a false wall that you can walk through, present in Sonic Man's stage but absent from Wily's.
Mega Man (DOS)-wiley.blk-4f.png Mega Man (DOS)-wiley.blk-4f-mask.png Tile 4f is the same as 4f in SONIC.BLK.
Mega Man (DOS)-wiley.blk-50.png Mega Man (DOS)-wiley.blk-50-mask.png Tile 50 is the same as af in VOLT.BLK.
Mega Man (DOS)-wiley.blk-51.png Mega Man (DOS)-wiley.blk-51-mask.png Tile 51 is the same as c2 in VOLT.BLK.
Mega Man (DOS)-wiley.blk-52.png Mega Man (DOS)-wiley.blk-52-mask.png Tile 52 is the same as 5f in WILEY.BLK and 03 in VOLT.BLK (other trigger tiles with the same graphic), and graphically identical to the non-trigger tiles 5a in WILEY.BLK and c3 in VOLT.BLK.
Mega Man (DOS)-wiley.blk-53.png Mega Man (DOS)-wiley.blk-53-mask.png Tile 53 is the same as c7 in VOLT.BLK.
Mega Man (DOS)-wiley.blk-54.png Mega Man (DOS)-wiley.blk-54-mask.png Tile 54 is the same as cb in VOLT.BLK.
Mega Man (DOS)-wiley.blk-58.png Mega Man (DOS)-wiley.blk-58-mask.png Tile 58 is the same as cf in VOLT.BLK.
Mega Man (DOS)-wiley.blk-59.png Mega Man (DOS)-wiley.blk-59-mask.png Tile 59 is the same as 02 in VOLT.BLK.
Mega Man (DOS)-wiley.blk-5b.png Mega Man (DOS)-wiley.blk-5b-mask.png Tile 5b is the same as 04 in VOLT.BLK.
Mega Man (DOS)-wiley.blk-64.png Mega Man (DOS)-wiley.blk-64-mask.png Tile 64 is the same as 01 in DYNA.BLK. (Probably half of a disappearing block animation.)
Mega Man (DOS)-wiley.blk-65.png Mega Man (DOS)-wiley.blk-65-mask.png Tile 65 is the same as 02 in DYNA.BLK. (Probably half of a disappearing block animation.)
Mega Man (DOS)-wiley.blk-66.png Mega Man (DOS)-wiley.blk-66-mask.png Tile 66 is the same as 07 in DYNA.BLK.
Mega Man (DOS)-wiley.blk-69.png Mega Man (DOS)-wiley.blk-69-mask.png Tile 69 is the same as 10 in DYNA.BLK.
Mega Man (DOS)-wiley.blk-6a.png Mega Man (DOS)-wiley.blk-6a-mask.png Tile 6a is the same as 11 in DYNA.BLK.
Mega Man (DOS)-wiley.blk-6c.png Mega Man (DOS)-wiley.blk-6c-mask.png Tile 6c is the same as 13 in DYNA.BLK.
Mega Man (DOS)-wiley.blk-8c.png Mega Man (DOS)-wiley.blk-8c-mask.png Tile 8c is the same as 4a in DYNA.BLK.
Mega Man (DOS)-wiley.blk-8f.png Mega Man (DOS)-wiley.blk-8f-mask.png Tile 8f is the same as 4d in DYNA.BLK.
Mega Man (DOS)-wiley.blk-90.png Mega Man (DOS)-wiley.blk-90-mask.png Tile 90 is the same as 4e in DYNA.BLK.
Mega Man (DOS)-wiley.blk-91.png Mega Man (DOS)-wiley.blk-91-mask.png Tile 91 is the same as 4f in DYNA.BLK, and has the same anti-gravity property.
Mega Man (DOS)-wiley.blk-92.png Mega Man (DOS)-wiley.blk-92-mask.png Tile 92 is unique to WILEY.BLK and unused. It looks like it belongs with the dials and reels of the mainframes near the end of the stage.

Unused Map Tile Properties

Each map tile has a collection of associated properties, stored in the .BLK file along with the tile graphics, that define things such as whether the tile is solid and whether it hurts to touch. Some property values produce behavior that isn't used in any of the game's maps.

Ground Friction

One of the tile properties is how much friction should be applied when Mega Man is on the ground and changing direction or coasting to a stop. There are 8 possible friction tags, 0 to 7, representing friction values from 1/16 to 16, but only tag 7, maximum friction, is ever used.

The friction values seem to be clamped elsewhere in the code, which causes tag 7 (16 units) to behave the same as tag 6 (8 units) in practice. The game does not use subpixels. A friction value of 1/n is implemented by applying 1 unit of friction every n frames. The fractional friction values are slippery indeed.

The following image shows what walking on each friction tag is like. Each row uses the same input: hold right for 12 frames, then left for 16 frames, then no input until Mega Man comes to a stop. The friction values, from top to bottom, are:

0 1/16 units unused
1 1/8 units unused
2 1/4 units unused
3 1 unit unused
4 2 units unused
5 4 units unused
6 8 units unused
7 16 units used

Mega Man (DOS)-friction-stacked.gif

Conveyor Speeds

A ground tile can either have intrinsic friction, or it can be a conveyor such as are found in Dyna Man's stage. A conveyor can have one of 8 speeds: −8, −6, −4, −2, +2, +4, +6, +8; but only ±4 is used in the game. Speed ±8 is equal to Mega Man's walking speed: going against such a conveyor makes Mega Man walk in place.

The image shows Mega Man standing on each of the 8 speeds of conveyor.

Mega Man (DOS)-conveyors-stacked.gif

Gravity

Each tile can have one of 16 gravity (vertical acceleration) values. The most common value is a, which is normal gravity of 3 pixels/frame/frame. 10 of the 16 possibilities are unused - including a zero-gravity mode where Mega Man just floats, but you can accelerate him up and down using the Up and Down keys.

This image shows Mega Man under each gravity condition. For the non-positive gravities (left half of image), there is no input and Mega Man floats. For the positive gravities (right half of image), Mega Man does a full-height jump.

Mega Man (DOS)-gravity-stacked.gif

Under non-positive gravity, it's possible to influence Mega Man's vertical acceleration using the Up and Down keys, Lunar Lander-style. With the weakest two values of anti-gravity, 7 and 6, pressing Down will cause Mega Man to descend. With any stronger anti-gravity, you can slow Mega Man's ascent but you can't stop him from floating away.

I'm not 100% sure about the acceleration values. -Ed.

value accel
0 −7 units unused
1 −6 units unused
2 −5 units unused
3 −4 units Vertical fan shaft in Sonic Man's stage.
4 −3 units unused
5 −2 units unused
6 −1 units unused
7 0 units Zero gravity is only used in a small number of places, perhaps by mistake: where a single vertical background pipe touches the ceiling (tile 5e) in Sonic Man's stage; certain inaccessible background tiles (4f), the debris dispenser (3d, 3e, 3f, 40), and assembler apertures (5a) in Dyna Man's stage; wall lights (b3) in Wily's stage. Most of the tiles are either solid or too close to the ceiling to get Mega Man's hitbox inside. But the Wily wall lights and Dyna Man assembler apertures are low enough that you'll float if you jump in front of them. (The assembler apertures require the invincibility cheat code because the assemblers damage you otherwise.)
8 +1 units Deep water and water surfaces in Sonic Man's stage.
9 +2 units Shallow water and boss chamber in Sonic Man's stage. Sonic Man's chamber in Wily's stage.
a +3 units Normal gravity used almost everywhere.
b +4 units unused
c +5 units Turbines and waterfalls in Volt Man's stage.
d +6 units unused
e +7 units unused
f +8 units unused

Invincibility Cheat Code

At the initial setup menu (the one that configures graphics, sound, etc.), type nd before starting the game. That is, press and release n, then press and release d, then select "Start Game" and press Enter. There is no visual confirmation that the code has been entered.

With this code active, Mega Man will be immune to damage from enemies, projectiles, and damage-dealing environmental tiles, even instakill ones like spikes. This makes it possible to fall into a pit that you can't jump out of (one that would ordinarily kill you). If this happens, press Esc to pause, F10 to zero your energy, and P to unpause.

Hidden Developer Credits

In Dyna Man's stage, the wood grain background tiles 17, 15, and 16 unobstrusively contain the names "STEVE", "JOEL", and "RON". They appear in the stage 10 times in total ("STEVE"×3, "JOEL"×4, "RON"×3). The names no doubt refer to Stephen Rozner, Joel Pambid, and Ron Santillano, who are credited in the game's final screen:

Mega Man (DOS)-credits.png

The three tiles are visible right at the start of Dyna Man's stage. The names only show up in the 16-color tiles of EGA and VGA mode, not the simplified 4-color tiles of CGA and Tandy mode.

Mega Man (DOS)-dyna-steve-joel-ron-vga.png Mega Man (DOS)-dyna-steve-joel-ron-cga.png

Graphical Errors

Each map tile has an associated foreground/background mask that determines which pixels should be drawn in front of and which behind Mega Man and other sprites. In the introductory stage, tile 18, part of the roof of the guardhouse, has a single pixel masked to the foreground. When Mega Man jumps in front of it, the roof pixel shows through his helmet.

Map tiles Mask In-game screenshot
Mega Man (DOS)-secur-straypixel-tiles.png Mega Man (DOS)-secur-straypixel-mask.png Mega Man (DOS)-secur-straypixel-ingame.png

Similarly, in the unused copy protection screen, the portrait of the enemy ASSEMBLER has two transparent pixels (perhaps because the actual enemy sprite, used in Dyna Man's stage, has those pixels colored magenta). All the other portraits are fully opaque.

Colors Transparency In-game screenshot,
with blue background
showing through.
Enemy sprite used
in Dyna Man's stage,
with magenta pixels.
Mega Man (DOS)-pass.frm-12-assembler-pixels.png Mega Man (DOS)-pass.frm-12-assembler-mask.png Mega Man (DOS)-pass.frm-12-assembler-ingame.png Mega Man (DOS)-dyna.frm-36-assembler.png

Unused 16-Color Tandy Mode

Despite having a setup menu with four options (CGA, EGA, VGA, TANDY), the game only has two resulting video modes: 4-color CGA (mode 04h) and 16-color EGA (mode 0Dh). The VGA mode has the same graphics as EGA, while Tandy mode redirects to CGA.

There is code for a third video driver to use 16-color Tandy graphics (mode 09h), but it appears to be unfinished and is deliberately disabled at the end of the settings menu routine:

cs:5107 xor al, C0h ; clears bit 7 (EGA/VGA)
cs:5109 xor al, 40h ; clears bit 6 (16-color Tandy)

This redundant xor instruction clears the bit that would have selected the unfinished mode. It can be re-enabled by replacing the 40h at byte 4978h in MM.EXE with 0. Doing so reveals graphics very similar to EGA mode, but with some severe errors in rendering:

Mega Man's eyes are covered
with a black rectangle.
Some sprites appear within
opaque black rectangles.
In some places, sprites
partially disappear.
Mmd tandy 0.png Mmd tandy 1.png Mmd tandy 2.png

The sequel, Mega Man 3, also contains unused Tandy video code, but in a less functional state.