Mega Man (DOS)
Mega Man |
---|
Разработчик:
Rozner Labs Эта игра имеет неиспользованный код. |
Mega Man для DOS — видеоигра, лицензированная (но не разработанная) компанией Capcom. Она не является портом как одноимённой игры на NES, так и её аналога на Game Boy, потому что во многом отличается от них и "идёт своим путём" со своими тремя оригинальными робот-мастерами. В 1992 г. появился сиквел этой игры, который тоже вышел на DOS и почему-то получил название Mega Man 3 (видимо, разработчикам было слишком трудно осилить нормальную нумерацию). Игру можно запустить в браузере, используя онлайн-эмулятор на сайте Internet Archive.
Contents
Неиспользованная защита от копирования
В файлах игры есть код и графика, похожие на следы нереализованной системы защиты от копирования. Эта система показывает спрайт одного из 12 врагов и требует ввести его название, которое по идее нужно было бы найти в мануале с изображениями врагов ("FIND THE PICTURE IN THE MANUAL AND TYPE IN THE NAME"). При правильном ответе играет звук energy-collection (sound 5), а при неправильном воспроизводится звук, похожий на шум щита Volt Man'а (sound 12).
Этот снимок экрана был сделан путем взломы в прыжке к 0x154b0 (функция просто предшествует главную функцию).
Графика экрана защиты от копирования содержится в файле pass.frm.
Текст сообщения хранится в виде одного спрайта.
А символы, которые набираются на клавиатуре, записаны как 28 спрайтов размером 8×8 px.
Изображения врагов немного отличаются от спрайтов, видимых во время игрового процесса: на экране защиты от копирования они имеют непрозрачный фон и обведены чёрной рамкой. Выбор спрайта зависит от текущего времени и определяется 12-секундным циклом. Если время оканчивается на :01, :13, :25, :37 или на :49, то выбирается BATVIRE; если на :02, :14, :26, :38 или на :50, то показывается FROGBOT и т.д.
Правильные ответы находятся в коде игры в виде массива, состоящего из двенадцати 11-байтных строк. Текст записан в кодировке 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
Неиспользованные фоновые тайлы
В BLK-файлах записаны тайлы фонов для каждого уровня. Игра использует не все из них.
Все тайлы ниже показаны с 1-битовыми масками, определяющими тип отрисовки каждого пикселя (на переднем или на заднем плане). В таблицах также приведены некоторые использованные тайлы, которые внешне схожи с неиспользованными.
SECUR.BLK
SONIC.BLK
Неисполь- зованные |
Исполь- зованные |
Комментарии |
---|---|---|
|
Тайлы травы 17, 18 и 19 являются копиями тайлов 08, 09 и 0a из SECUR.BLK, но только первый из них используется на уровне Sonic Man'а. |
VOLT.BLK
VOLT.BLK весит больше, чем любой другой BLK-файл в папке игры, и содержит 216 тайлов. На уровне Volt Man'а используются все из них до единого.
DYNA.BLK
WILEY.BLK
В этом файле повторно используются многие тайлы, изначально созданные для уровней робот-мастеров. Некоторые из скопированных тайлов не встречаются ни в одном месте замка Вайли, несмотря на то, что они использовались на других уровнях. Среди оригинальных тайлов замка тоже есть один неиспользуемый.
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 |
Чит-код на неуязвимость
В самом первом меню (где настраивается графика, звук и т.д.) введите nd
перед началом игры. Да, именно так — просто нажмите и отпустите n
, сделайте то же самое с d
, выберите "Start Game" и нажмите Enter. Визуального подтверждения активации кода не будет, и поэтому его работоспособность получится проверить только во время прохождения вступительного уровня.
После введения кода Mega Man не будет получать урон от врагов, пуль и тайлов, наносящих повреждения. Он станет неуязвимым даже для шипов и других мгновенно убивающих тайлов, что, впрочем, может выйти боком и привести к застреванию в ямах, из которых не получится выпрыгнуть (при честном прохождении игрок не застрянет, потому что без чита эти ямы сразу отнимают жизнь). Если вы случайно упадёте в одну из таких ям, игру не придётся начинать с начала — можно будет просто перезапустить уровень, нажав Esc для перехода в меню, F10 для обнуления шкалы энергии и P для возвращения из меню.
Скрытые упоминания разработчиков
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.
Листы карты | Маска | Снимок экрана в игре |
---|---|---|
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. |
---|---|---|
Продолжение, Mega Man 3, тоже имеет неиспользованный код видео Tandy, но в менее функциональном состоянии.
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 publisher > Games published by Hi-Tech Expressions
Games > Games by series > Mega Man series