🎄 Merry Christmas, TCRF! 🎄
Mega Man (DOS)
Mega Man |
---|
Developer: Rozner Labs This game has unused code. This game has a notes page |
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.
Contents
Sub-Page
Notes |
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).
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.
The text of the prompt is stored as a single graphic.
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
SONIC.BLK
Unused | Used | Comments |
---|---|---|
|
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
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 |
---|---|
Tile 1c is the same as 59 in SONIC.BLK. | |
Tile 20 is the same as 5e in SONIC.BLK, and has the same anti-gravity property. | |
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. | |
Tile 4f is the same as 4f in SONIC.BLK. | |
Tile 50 is the same as af in VOLT.BLK. | |
Tile 51 is the same as c2 in VOLT.BLK. | |
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. | |
Tile 53 is the same as c7 in VOLT.BLK. | |
Tile 54 is the same as cb in VOLT.BLK. | |
Tile 58 is the same as cf in VOLT.BLK. | |
Tile 59 is the same as 02 in VOLT.BLK. | |
Tile 5b is the same as 04 in VOLT.BLK. | |
Tile 64 is the same as 01 in DYNA.BLK. (Probably half of a disappearing block animation.) | |
Tile 65 is the same as 02 in DYNA.BLK. (Probably half of a disappearing block animation.) | |
Tile 66 is the same as 07 in DYNA.BLK. | |
Tile 69 is the same as 10 in DYNA.BLK. | |
Tile 6a is the same as 11 in DYNA.BLK. | |
Tile 6c is the same as 13 in DYNA.BLK. | |
Tile 8c is the same as 4a in DYNA.BLK. | |
Tile 8f is the same as 4d in DYNA.BLK. | |
Tile 90 is the same as 4e in DYNA.BLK. | |
Tile 91 is the same as 4f in DYNA.BLK, and has the same anti-gravity property. | |
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 |
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.
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.
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:
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.
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 |
---|---|---|
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. |
---|---|---|---|
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. |
---|---|---|
The sequel, Mega Man 3, also contains unused Tandy video code, but in a less functional state.
- Good articles
- Good main articles
- Pages missing developer references
- Games developed by Rozner Labs
- Pages missing publisher references
- Games published by Hi-Tech Expressions
- DOS games
- Pages missing date references
- Games released in 1990
- Games with unused code
- Games with hidden developer credits
- Games with unused graphics
- Games with anti-piracy methods
- Mega Man series
Cleanup > Pages missing date references
Cleanup > Pages missing developer references
Cleanup > Pages missing publisher references
Games > Games by content > Games with anti-piracy methods
Games > Games by content > Games with hidden developer credits
Games > Games by content > Games with unused code
Games > Games by content > Games with unused graphics
Games > Games by developer > Games developed by Rozner Labs
Games > Games by platform > DOS games
Games > Games by publisher > Games published by Hi-Tech Expressions
Games > Games by release date > Games released in 1990
Games > Games by series > Mega Man series
The Cutting Room Floor > Good articles
The Cutting Room Floor > Good articles > Good main articles