The current URL is datacrystal.tcrf.net.
Mega Man 2/ROM map: Difference between revisions
(→Mega Buster: Removed redundancy and corrected title priority) |
|||
(76 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
{{rommap|game=Mega Man 2}} | {{rommap|game=Mega Man 2}} | ||
=== | ==Gameplay Data== | ||
===Mega Man=== | |||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Function''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x03891F</tt> || Mega Man's standstill x-velocity (integer) || || <tt>00</tt> | |||
|- | |||
| <tt>0x038920</tt> || Mega Man's inching x-velocity (integer) || || <tt>00</tt> | |||
|- | |||
| <tt>0x038921</tt> || Mega Man's walking x-velocity (integer) || || <tt>01</tt> | |||
|- | |||
| <tt>0x038922</tt> || Mega Man's jumping x-velocity (integer) || || <tt>01</tt> | |||
|- | |||
| <tt>0x038923</tt> || Mega Man's slip x-velocity (integer) || || <tt>00</tt> | |||
|- | |||
| <tt>0x038924</tt> || Mega Man's landing x-velocity (integer) || || <tt>00</tt> | |||
|- | |||
| <tt>0x03892A</tt> || Mega Man's standstill x-velocity (fraction) || || <tt>00</tt> | |||
|- | |||
| <tt>0x03892B</tt> || Mega Man's inching x-velocity (fraction) || || <tt>20</tt> | |||
|- | |||
| <tt>0x03892C</tt> || Mega Man's walking x-velocity (fraction) || || <tt>60</tt> | |||
|- | |||
| <tt>0x03892D</tt> || Mega Man's jumping x-velocity (fraction) || || <tt>50</tt> | |||
|- | |||
| <tt>0x03892E</tt> || Mega Man's slip x-velocity (fraction) || || <tt>80</tt> | |||
|- | |||
| <tt>0x03892F</tt> || Mega Man's landing x-velocity (fraction) || || <tt>00</tt> | |||
|- | |||
| <tt>0x038A81</tt> || Mega Man's jump height || || <tt>04</tt> | |||
|- | |||
| <tt>0x03D312</tt> <tt>-</tt> <tt>0x03D341</tt> (USA), <tt>0x03D30F</tt> <tt>-</tt> <tt>0x03D33E</tt> (JPN) || Mega Man's palette for each weapon || Same order as pause menu || (Check respective weapons) | |||
|- | |||
|} | |||
===Heads-Up Display=== | |||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Function''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x02C142</tt> || How fast the robot masters' health fills up || || <tt>03</tt> | |||
|- | |||
| <tt>0x02E12B</tt> || How fast the fortress bosses' health fills up || || <tt>03</tt> | |||
|- | |||
| <tt>0x0352B2</tt> || How fast Mega Man's health fills up while paused || || <tt>03</tt> | |||
|- | |||
| <tt>0x038315</tt> || Maximum Energy for Mega Man || || 1C | |||
|- | |||
| <tt>0x03831B</tt> || How fast Mega Man's health fills up in-game || || <tt>07</tt> | |||
|- | |||
| <tt>0x03835A</tt> || How fast Mega Man's weapon energy fills up in-game || || <tt>07</tt> | |||
|- | |||
| <tt>0x03CF79</tt> || X position for energy bar || || <tt>18</tt> | |||
|- | |||
| <tt>0x03CF8F</tt> || X position for weapon bar || || <tt>10</tt> | |||
|- | |||
| <tt>0x03CFB1</tt> || X position for boss bar || || <tt>28</tt> | |||
|- | |||
| <tt>0x03CFD8</tt> || Graphics for Energy Bar || This defines the leftmost tile (full HP graphic) and automatically picks to the right of it the remaining 4 tiles in descending order of HP, ex. <tt>87</tt>><tt>8B</tt>, <tt>DB</tt>><tt>DF</tt>. || <tt>87</tt> | |||
|- | |||
| <tt>0x03CFF5</tt> || Y position for 1/7 energy || || <tt>18</tt> | |||
|- | |||
| <tt>0x03CFF6</tt> || Y position for 2/7 energy || || <tt>20</tt> | |||
|- | |||
| <tt>0x03CFF7</tt> || Y position for 3/7 energy || || <tt>28</tt> | |||
|- | |||
| <tt>0x03CFF8</tt> || Y position for 4/7 energy || || <tt>30</tt> | |||
|- | |||
| <tt>0x03CFF9</tt> || Y position for 5/7 energy || || <tt>38</tt> | |||
|- | |||
| <tt>0x03CFFA</tt> || Y position for 6/7 energy || || <tt>40</tt> | |||
|- | |||
| <tt>0x03CFFB</tt> || Y position for 7/7 energy || || <tt>48</tt> | |||
|- | |||
|} | |||
=== | ====READY Sprites==== | ||
* | * <tt>0x0381CC</tt> <tt>-</tt> <tt>0x0381DF</tt> (<tt>0x14</tt> = sprite data) | ||
* <tt>0x0381CC</tt> = Y position | |||
* <tt>0x0381CD</tt> = PPU Tile | |||
* <tt>0x0381CE</tt> = Palette, mirroring | |||
* <tt>0x0381CF</tt> = X position | |||
format repeats | |||
* | |||
* | |||
* | |||
* | |||
===Sound Effects during Stage=== | ===Sound Effects during Stage=== | ||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Function''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x03524E</tt> || Changing selections in menu, Mega Man forming || || <tt>2F</tt> | |||
|- | |||
| <tt>0x0381E0</tt> <tt>-</tt> <tt>0x0381ED</tt> || Music played for each level || || | |||
|- | |||
| <tt>0x038685</tt> || Sound for Mega Man landing || || <tt>29</tt> | |||
|- | |||
| <tt>0x03C59F</tt> || Sound for entering menu screen during action || || <tt>32</tt> | |||
|- | |||
| <tt>0x03C802</tt> || Sound effect for Mega Man beamed down || || <tt>30</tt> | |||
|- | |||
|} | |||
===Pause Menu=== | ===Pause Menu=== | ||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Function''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x0352AC</tt> || The amount of energy that E-Tanks set || || <tt>1C</tt> | |||
|- | |||
| <tt>0x03539E</tt> || Sound effect for turning off menu during action || || <tt>30</tt> | |||
|- | |||
| <tt>0x0353E8</tt> || Starting Y position of the weapon icon sprites || || <tt>44</tt> | |||
|- | |||
| <tt>0x035403</tt> || X position of the weapon icon sprites || || <tt>0C</tt> | |||
|- | |||
| <tt>0x03542C</tt> || Y position of Mega Man's health bar || || <tt>44</tt> | |||
|- | |||
| <tt>0x03543D</tt> || Y position of the first set of weapon energy bars || || <tt>54</tt> | |||
|- | |||
| <tt>0x03549C</tt> || Y position of the second set of weapon energy bars || || <tt>44</tt> | |||
|- | |||
| <tt>0x03559E</tt> <tt>-</tt> <tt>0x03562D</tt> || Pause menu tile layout || || | |||
|- | |||
|} | |||
====Arrow and NEXT Sprites==== | ====Arrow and NEXT Sprites==== | ||
* 0x03563C - 0x03564F | * <tt>0x03563C</tt> <tt>-</tt> <tt>0x03564F</tt> (<tt>0x14</tt>) = sprite data | ||
* 0x03563C | * <tt>0x03563C</tt> = Y position | ||
* 0x03563D | * <tt>0x03563D</tt> = PPU Tile | ||
* 0x03563E | * <tt>0x03563E</tt> = Palette, mirroring | ||
* 0x03563F | * <tt>0x03563F</tt> = X position | ||
format repeats | format repeats | ||
====Weapon Icon Sprites==== | ====Weapon Icon Sprites==== | ||
* 0x035650 - 0x03565B | * <tt>0x035650</tt> <tt>-</tt> <tt>0x03565B</tt> (<tt>0xC</tt>) = sprite data | ||
* 0x035650 | * <tt>0x035650</tt> = P / Mega Buster (Default: <tt>1F</tt>) | ||
* 0x035651 | * <tt>0x035651</tt> = H / Atomic Fire (Default: <tt>9F</tt>) | ||
* 0x035652 | * <tt>0x035652</tt> = A / Air Shooter (Default: <tt>9B</tt>) | ||
* 0x035653 | * <tt>0x035653</tt> = W / Leaf Shield (Default: <tt>99</tt>) | ||
* 0x035654 | * <tt>0x035654</tt> = B / Bubble Lead (Default: <tt>9D</tt>) | ||
* 0x035655 | * <tt>0x035655</tt> = Q / Quick Boomerang (Default: <tt>9C</tt>) | ||
* 0x035656 | * <tt>0x035656</tt> = F / Flash Stopper (Default: <tt>9A</tt>) | ||
* 0x035657 | * <tt>0x035657</tt> = M / Metal Blade (Default: <tt>9E</tt>) | ||
* 0x035658 | * <tt>0x035658</tt> = C / Crash Bomber (Default: <tt>10</tt>) | ||
* 0x035659 | * <tt>0x035659</tt> = 1 / Item 1 (Default: <tt>15</tt>) | ||
* 0x03565A | * <tt>0x03565A</tt> = 2 / Item 2 (Default: <tt>16</tt>) | ||
* 0x03565B | * <tt>0x03565B</tt> = 3 / Item 3 (Default: <tt>17</tt>) | ||
====E-Tank Menu Sprite==== | ====E-Tank Menu Sprite==== | ||
* 0x03565C - 0x03565F | * <tt>0x03565C</tt> <tt>-</tt> <tt>0x03565F</tt> (<tt>0x4</tt>) = sprite data | ||
* 0x03565C | * <tt>0x03565C</tt> = Y position | ||
* 0x03565D | * <tt>0x03565D</tt> = PPU Tile | ||
* 0x03565E | * <tt>0x03565E</tt> = Palette, mirroring | ||
* 0x03565F | * <tt>0x03565F</tt> = X position | ||
====Extra Life Menu Sprite==== | ====Extra Life Menu Sprite==== | ||
* 0x035660 - 0x03566F | * <tt>0x035660</tt> <tt>-</tt> <tt>0x03566F</tt> (<tt>0x10</tt>) = sprite data | ||
* 0x035660 | * <tt>0x035660</tt> = Y position | ||
* 0x035661 | * <tt>0x035661</tt> = PPU Tile | ||
* 0x035662 | * <tt>0x035662</tt> = Palette, mirroring | ||
* 0x035663 | * <tt>0x035663</tt> = X position | ||
format repeats | format repeats | ||
===Weapon | ===Items=== | ||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Function''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x0380D5</tt> || Beginning amount of Health || || <tt>1C</tt> | |||
|- | |||
| <tt>0x0382FD</tt> || Amount of HP large Energy returns || || <tt>0A</tt> | |||
|- | |||
| <tt>0x038301</tt> || Amount of HP small Energy returns|| || <tt>02</tt> | |||
|- | |||
| <tt>0x03806C</tt> || Amount of E-Tanks set after starting a new game || || <tt>00</tt> | |||
|- | |||
| <tt>0x038382</tt> || Maximum amount of E-Tanks you can carry || Carrying anything higher than 4 E-Tanks will generate bad passwords. || <tt>04</tt> | |||
|- | |||
| <tt>0x038390</tt> || Maximum amount of lives you can carry || Due to how lives actually work, <tt>00</tt> is game over and <tt>01</tt> is actually 0 lives, so <tt>63</tt> would yield a 98 life limit instead of the usual 99. || <tt>63</tt> | |||
|- | |||
| <tt>0x03C1CB</tt> || Amount of E-Tanks set after continuing from a game over || || <tt>00</tt> | |||
|- | |||
|} | |||
===Power Ups=== | |||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Function''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x03C289</tt> || Power Up from Heat Man || || <tt>01</tt> | |||
|- | |||
| <tt>0x03C28A</tt> || Power Up from Air Man || || <tt>02</tt> | |||
|- | |||
| <tt>0x03C28B</tt> || Power Up from Wood Man || || <tt>04</tt> | |||
|- | |||
| <tt>0x03C28C</tt> || Power Up from Bubble Man || || <tt>08</tt> | |||
|- | |||
| <tt>0x03C28D</tt> || Power Up from Quick Man || || <tt>10</tt> | |||
|- | |||
| <tt>0x03C28E</tt> || Power Up from Flash Man || || <tt>20</tt> | |||
|- | |||
| <tt>0x03C28F</tt> || Power Up from Metal Man || || <tt>40</tt> | |||
|- | |||
| <tt>0x03C290</tt> || Power Up from Crash Man || || <tt>80</tt> | |||
|- | |||
| <tt>0x03C291</tt> || Item # from Heat Man || || <tt>01</tt> | |||
|- | |||
| <tt>0x03C292</tt> || Item # from Air Man || || <tt>02</tt> | |||
|- | |||
| <tt>0x03C293</tt> || Item # from Wood Man || || <tt>00</tt> | |||
|- | |||
| <tt>0x03C294</tt> || Item # from Bubble Man || || <tt>00</tt> | |||
|- | |||
| <tt>0x03C295</tt> || Item # from Quick Man || || <tt>00</tt> | |||
|- | |||
| <tt>0x03C296</tt> || Item # from Flash Man || || <tt>04</tt> | |||
|- | |||
| <tt>0x03C297</tt> || Item # from Metal Man || || <tt>00</tt> | |||
|- | |||
| <tt>0x03C298</tt> || Item # from Crash Man || || <tt>00</tt> | |||
|- | |||
|} | |||
==Screen Data== | |||
===Stage Select=== | |||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Function''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x02EE10</tt> <tt>-</tt> <tt>0x02F1CF</tt> || Stage select screen 8x8 tile placement || || | |||
|- | |||
| <tt>0x02F1D0</tt> <tt>-</tt> <tt>0x02F20F</tt> || Stage select screen 16x16 tile attribute || || | |||
|- | |||
| <tt>0x0340D8</tt> || Routine for checking if a level has been cleared || || | |||
|- | |||
| <tt>0x0340EC</tt> <tt>-</tt> <tt>0x0340EF</tt> || Routine for checking if a level has been cleared || || | |||
|- | |||
| <tt>0x0340F6</tt> || Confirming selection || || | |||
|- | |||
| <tt>0x034186</tt> || First override palette for Boss posing screen || || <tt>2C</tt> | |||
|- | |||
| <tt>0x03418B</tt> || Second override palette for Boss posing screen || || <tt>11</tt> | |||
|- | |||
| <tt>0x0341BA</tt> || Preview boss music || || <tt>0A</tt> | |||
|- | |||
| <tt>0x0342ED</tt> || Selection for Bubble Man cursor || || | |||
|- | |||
| <tt>0x0344A9</tt> <tt>-</tt> <tt>0x0344B8</tt> || Palette background for Stage Select Screen || || | |||
|- | |||
| <tt>0x0344B9</tt> <tt>-</tt> <tt>0x0344C8</tt> || Palette foreground for Stage Select Screen || || | |||
|- | |||
| <tt>0x034551</tt> <tt>-</tt> <tt>0x03460C</tt> || Sprite table for Stage Select Screen (4 bytes per sprite) || || | |||
|- | |||
| <tt>0x03460D</tt> <tt>-</tt> <tt>0x034614</tt> || Starting index for mugshot group in sprite table || Order is Heat, Air, Wood, Bubble, Quick, Flash, Metal, Crash || | |||
|- | |||
| <tt>0x034615</tt> <tt>-</tt> <tt>0x03461C</tt> || Number of bytes per mugshot group in sprite table || Order is Heat, Air, Wood, Bubble, Quick, Flash, Metal, Crash || | |||
|- | |||
| <tt>0x03462D</tt> || Cursor Y position for Dr. Wily || || <tt>60</tt> | |||
|- | |||
| <tt>0x03462E</tt> || Cursor Y position for Bubble Man || || <tt>20</tt> | |||
|- | |||
| <tt>0x03462F</tt> || Cursor Y position for Air Man || || <tt>20</tt> | |||
|- | |||
| <tt>0x034630</tt> || Cursor Y position for Quick Man || || <tt>20</tt> | |||
|- | |||
| <tt>0x034631</tt> || Cursor Y position for Wood Man || || <tt>60</tt> | |||
|- | |||
| <tt>0x034632</tt> || Cursor Y position for Crash Man || || <tt>A0</tt> | |||
|- | |||
| <tt>0x034633</tt> || Cursor Y position for Flash Man || || <tt>A0</tt> | |||
|- | |||
| <tt>0x034634</tt> || Cursor Y position for Metal Man || || <tt>A0</tt> | |||
|- | |||
| <tt>0x034635</tt> || Cursor Y position for Heat Man || || <tt>60</tt> | |||
|- | |||
| <tt>0x034636</tt> || Cursor X position for Dr. Wily || || <tt>70</tt> | |||
|- | |||
| <tt>0x034637</tt> || Cursor X position for Bubble Man || || <tt>30</tt> | |||
|- | |||
| <tt>0x034638</tt> || Cursor X position for Air Man || || <tt>70</tt> | |||
|- | |||
| <tt>0x034639</tt> || Cursor X position for Quick Man || || <tt>B0</tt> | |||
|- | |||
| <tt>0x03463A</tt> || Cursor X position for Wood Man || || <tt>B0</tt> | |||
|- | |||
| <tt>0x03463B</tt> || Cursor X position for Crash Man || || <tt>B0</tt> | |||
|- | |||
| <tt>0x03463C</tt> || Cursor X position for Flash Man || || <tt>70</tt> | |||
|- | |||
| <tt>0x03463D</tt> || Cursor X position for Metal Man || || <tt>30</tt> | |||
|- | |||
| <tt>0x03463E</tt> || Cursor X position for Heat Man || || <tt>30</tt> | |||
|- | |||
| <tt>0x03464F</tt> <tt>-</tt> <tt>0x034650</tt> || Palette attribute data for Boss posing screen || || | |||
|- | |||
| <tt>0x034651</tt> <tt>-</tt> <tt>0x03466E</tt> || Lines for Boss posing screen data (reverse order) || || | |||
|- | |||
| <tt>0x034670</tt> || Pointer for Bubble Man Stage from selection || || | |||
|- | |||
| <tt>0x034671</tt> || Pointer for Air Man Stage from selection || || | |||
|- | |||
| <tt>0x034672</tt> || Pointer for Quick Man Stage from selection || || | |||
|- | |||
| <tt>0x034673</tt> || Pointer for Wood Man Stage from selection || || | |||
|- | |||
| <tt>0x034674</tt> || Pointer for Crash Man Stage from selection || || | |||
|- | |||
| <tt>0x034675</tt> || Pointer for Flash Man Stage from selection || || | |||
|- | |||
| <tt>0x034676</tt> || Pointer for Metal Man Stage from selection || || | |||
|- | |||
| <tt>0x034677</tt> || Pointer for Heat Man Stage from selection || || | |||
|- | |||
| <tt>0x038076</tt> <tt>-</tt> <tt>0x03807D</tt> || routine to see all weapons gained to go to Wily when selecting Start || || | |||
|- | |||
| <tt>0x03C264</tt> <tt>-</tt> <tt>0x03C269</tt> || routine to see all weapons gained to go to Wily after gaining a weapon || || | |||
|- | |||
|} | |||
===Wily Castle=== | |||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Function''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x0340E3</tt> || First level of Wily's castle || || <tt>08</tt> | |||
|- | |||
| <tt>0x035994</tt> || Path velocity in Wily's castle map || || <tt>03</tt> | |||
|- | |||
| <tt>0x035998</tt> || Sound effect played when revealing a path tile || || <tt>28</tt> | |||
|- | |||
|} | |||
====Wily Castle Dots==== | |||
* <tt>0x035D9C</tt> <tt>-</tt> <tt>0x035DAF</tt> (0x14) = sprite data | |||
* <tt>0x035D9C</tt> = Y position | |||
* <tt>0x035D9D</tt> = PPU Tile | |||
* <tt>0x035D9E</tt> = Palette, mirroring | |||
* <tt>0x035D9F</tt> = X position | |||
format repeats | |||
===Weapon Get Screens=== | |||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Function''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x037B95</tt> || How long Megaman flashes while getting a weapon || 00 isn't instantaneous, but 01 is || <tt>9C</tt> | |||
|- | |||
| <tt>0x037C8C</tt> || How long the screen flashes red before Dr. Light's message || 00 isn't instantaneous, but 01 is || <tt>7D</tt> | |||
|- | |||
| <tt>0x037D07</tt> || How long Megaman flashes while getting an item || 00 isn't instantaneous, but 01 is || <tt>7D</tt> | |||
|- | |||
| <tt>0x037D4A</tt> || How fast every letter gets revealed || || <tt>07</tt> | |||
|- | |||
| <tt>0x037DBC</tt> || Length of pauses between Dr. Light's text boxes || 00 isn't instantaneous, but 01 is || <tt>7D</tt> | |||
|- | |||
|} | |||
====Mega Man==== | ====Mega Man==== | ||
* 0x0249FE - 0x024A8A (0x8D) | * <tt>0x0249FE</tt> <tt>-</tt> <tt>0x024A8A</tt> (0x8D = Sprite data) | ||
* 0x0249FF | * <tt>0x0249FF</tt> = Y position | ||
* 0x024A00 | * <tt>0x024A00</tt> = PPU Tile | ||
* 0x024A01 | * <tt>0x024A01</tt> = Palette, mirroring | ||
* 0x024A02 | * <tt>0x024A02</tt> = X position | ||
format repeats | format repeats | ||
====Dr. Light==== | ====Dr. Light==== | ||
0x024A8B - 0x024AD7 (0x4D) | * <tt>0x024A8B</tt> <tt>-</tt> <tt>0x024AD7</tt> (0x4D = Sprite data) | ||
* 0x024A8C | * <tt>0x024A8C</tt> = Y position | ||
* 0x024A8D | * <tt>0x024A8D</tt> = PPU Tile | ||
* 0x024A8E | * <tt>0x024A8E</tt> = Palette, mirroring | ||
* 0x024A8F | * <tt>0x024A8F</tt> = X position | ||
format repeats | format repeats | ||
===Title=== | ===Title=== | ||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Function''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x036235</tt> || Sound effect for switching between Normal and Difficult on Title || || <tt>2F</tt> | |||
|- | |||
| <tt>0x0362D1</tt> || Difficulty select arrow sprite tile || || <tt>A2</tt> | |||
|- | |||
| <tt>0x0362D2</tt> || Palette, mirroring for arrow sprite || || <tt>01</tt> | |||
|- | |||
| <tt>0x0362D4</tt> || X position for arrow || || <tt>30</tt> | |||
|- | |||
| <tt>0x0362D4</tt> || Y position for arrow when selecting Normal || || <tt>98</tt> | |||
|- | |||
| <tt>0x0362D5</tt> || Y position for arrow when selecting Difficult || || <tt>A8</tt> | |||
|- | |||
| <tt>0x036322</tt> || Removes all power ups and $00FD || || | |||
|- | |||
| <tt>0x03686D</tt> || Sprite 1 for Title || || | |||
|- | |||
| <tt>0x036877</tt> || Sprite 2 for Title || || | |||
|- | |||
| <tt>0x036AAF</tt> <tt>-</tt> <tt>0x036ABE</tt> || Palette for sprites on Title || || | |||
|- | |||
| <tt>0x036ACF</tt> <tt>-</tt> <tt>0x036ADE</tt> || Palette background for Title || || | |||
|- | |||
| <tt>0x037341</tt> || Title Screen Last byte (reversed order) || || | |||
|- | |||
| <tt>0x037700</tt> || Title Screen First byte (reversed order) || || | |||
|- | |||
|} | |||
===Password=== | |||
====Sprites==== | |||
* <tt>0x036FD7</tt> <tt>-</tt> <tt>0x03700A</tt> (0x8D) = Sprite data | |||
* <tt>0x036FD7</tt> = Y position | |||
* <tt>0x036FD8</tt> = PPU Tile | |||
* <tt>0x036FD9</tt> = Palette, mirroring | |||
* <tt>0x036FDA</tt> = X position | |||
format repeats | |||
{| border="1" cellpadding="1" | |||
====Positions==== | |||
|'''Address''' || '''Function''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x03700B</tt> || Password Y position (A,1) || || <tt>40</tt> | |||
|- | |||
| <tt>0x03700C</tt> || Password Y position (A,2) || || <tt>40</tt> | |||
|- | |||
| <tt>0x03700D</tt> || Password Y position (A,3) || || <tt>40</tt> | |||
|- | |||
| <tt>0x03700E</tt> || Password Y position (A,4) || || <tt>40</tt> | |||
|- | |||
| <tt>0x03700F</tt> || Password Y position (A,5) || || <tt>40</tt> | |||
|- | |||
| <tt>0x037010</tt> || Password Y position (B,1) || || <tt>50</tt> | |||
|- | |||
| <tt>0x037011</tt> || Password Y position (B,2) || || <tt>50</tt> | |||
|- | |||
| <tt>0x037012</tt> || Password Y position (B,3) || || <tt>50</tt> | |||
|- | |||
| <tt>0x037013</tt> || Password Y position (B,4) || || <tt>50</tt> | |||
|- | |||
| <tt>0x037014</tt> || Password Y position (B,5) || || <tt>50</tt> | |||
|- | |||
| <tt>0x037015</tt> || Password Y position (C,1) || || <tt>60</tt> | |||
|- | |||
| <tt>0x037016</tt> || Password Y position (C,2) || || <tt>60</tt> | |||
|- | |||
| <tt>0x037017</tt> || Password Y position (C,3) || || <tt>60</tt> | |||
|- | |||
| <tt>0x037018</tt> || Password Y position (C,4) || || <tt>60</tt> | |||
|- | |||
| <tt>0x037019</tt> || Password Y position (C,5) || || <tt>60</tt> | |||
|- | |||
| <tt>0x03701A</tt> || Password Y position (D,1) || || <tt>70</tt> | |||
|- | |||
| <tt>0x03701B</tt> || Password Y position (D,2) || || <tt>70</tt> | |||
|- | |||
| <tt>0x03701C</tt> || Password Y position (D,3) || || <tt>70</tt> | |||
|- | |||
| <tt>0x03701D</tt> || Password Y position (D,4) || || <tt>70</tt> | |||
|- | |||
| <tt>0x03701E</tt> || Password Y position (D,5) || || <tt>70</tt> | |||
|- | |||
| <tt>0x03701F</tt> || Password Y position (E,1) || || <tt>80</tt> | |||
|- | |||
| <tt>0x037020</tt> || Password Y position (E,2) || || <tt>80</tt> | |||
|- | |||
| <tt>0x037021</tt> || Password Y position (E,3) || || <tt>80</tt> | |||
|- | |||
| <tt>0x037022</tt> || Password Y position (E,4) || || <tt>80</tt> | |||
|- | |||
| <tt>0x037023</tt> || Password Y position (E,5) || || <tt>80</tt> | |||
|- | |||
| <tt>0x037024</tt> || Password X position (A,1) || || <tt>41</tt> | |||
|- | |||
| <tt>0x037025</tt> || Password X position (A,2) || || <tt>51</tt> | |||
|- | |||
| <tt>0x037026</tt> || Password X position (A,3) || || <tt>61</tt> | |||
|- | |||
| <tt>0x037027</tt> || Password X position (A,4) || || <tt>71</tt> | |||
|- | |||
| <tt>0x037028</tt> || Password X position (A,5) || || <tt>81</tt> | |||
|- | |||
| <tt>0x037029</tt> || Password X position (B,1) || || <tt>41</tt> | |||
|- | |||
| <tt>0x03702A</tt> || Password X position (B,2) || || <tt>51</tt> | |||
|- | |||
| <tt>0x03702B</tt> || Password X position (B,3) || || <tt>61</tt> | |||
|- | |||
| <tt>0x03702C</tt> || Password X position (B,4) || || <tt>71</tt> | |||
|- | |||
| <tt>0x03702D</tt> || Password X position (B,5) || || <tt>81</tt> | |||
|- | |||
| <tt>0x03702E</tt> || Password X position (C,1) || || <tt>41</tt> | |||
|- | |||
| <tt>0x03702F</tt> || Password X position (C,2) || || <tt>51</tt> | |||
|- | |||
| <tt>0x037030</tt> || Password X position (C,3) || || <tt>61</tt> | |||
|- | |||
| <tt>0x037031</tt> || Password X position (C,4) || || <tt>71</tt> | |||
|- | |||
| <tt>0x037032</tt> || Password X position (C,5) || || <tt>81</tt> | |||
|- | |||
| <tt>0x037033</tt> || Password X position (D,1) || || <tt>41</tt> | |||
|- | |||
| <tt>0x037034</tt> || Password X position (D,2) || || <tt>51</tt> | |||
|- | |||
| <tt>0x037035</tt> || Password X position (D,3) || || <tt>61</tt> | |||
|- | |||
| <tt>0x037036</tt> || Password X position (D,4) || || <tt>71</tt> | |||
|- | |||
| <tt>0x037037</tt> || Password X position (D,5) || || <tt>81</tt> | |||
|- | |||
| <tt>0x037038</tt> || Password X position (E,1) || || <tt>41</tt> | |||
|- | |||
| <tt>0x037039</tt> || Password X position (E,2) || || <tt>51</tt> | |||
|- | |||
| <tt>0x03703A</tt> || Password X position (E,3) || || <tt>61</tt> | |||
|- | |||
| <tt>0x03703B</tt> || Password X position (E,4) || || <tt>71</tt> | |||
|- | |||
| <tt>0x03703C</tt> || Password X position (E,5) || || <tt>81</tt> | |||
|- | |||
| <tt>0x037056</tt> || Password related (A,1) || || | |||
|- | |||
| <tt>0x03709B</tt> || Password related (E,5) || || | |||
|- | |||
|} | |||
==Weapon Attributes== | ==Weapon Attributes== | ||
===Mega Buster=== | ===Mega Buster=== | ||
* 0x03DA7C - 0x03DA8F (0x14) | * <tt>0x03DA7C</tt> <tt>-</tt> <tt>0x03DA8F</tt> (<tt>0x14</tt>) = Routine | ||
$DA6C:A5 27 LDA $0027 | $DA6C:A5 27 LDA $0027 ;Load single frame input poll | ||
$DA6E:29 02 AND #$02 | $DA6E:29 02 AND #$02 ;Check bit 2 (Whether player pressed B) | ||
$DA70:F0 2B BEQ $ | $DA70:F0 2B BEQ $DA9C ;If bit 2 not on, player didn't press B, skip to end and leave subroutine | ||
$DA72:A2 04 LDX #$04 | $DA72:A2 04 LDX #$04 ;Loads X with #$04 | ||
$DA74:BD 20 04 LDA $0420,X | $DA74:BD 20 04 LDA $0420,X ;Check memory position $0424, status of third projectile slot | ||
$DA77:10 07 BPL $DA80 | $DA77:10 07 BPL $DA80 ;Branch if Bit 7 is not set - Bit 7 of 424 is 1 if a projectile exists and 0 if not. In other words, if a projectile is in this slot, continue, otherwise jump to shooting routine | ||
$DA79:CA DEX | $DA79:CA DEX ;Decrement X | ||
$DA7A:E0 01 CPX #$01 | $DA7A:E0 01 CPX #$01 ;Check if X is 1 | ||
$DA7C:D0 F6 BNE $DA74 | $DA7C:D0 F6 BNE $DA74 ;If X isn't, branch back to projectile check. This repeats until you have checked all 3 projectile slots | ||
$DA7E:F0 1D BEQ $ | $DA7E:F0 1D BEQ $DA9C ;If it is 1, you've checked every projectile slot, end subroutine | ||
$DA80:A9 24 LDA #$24 | $DA80:A9 24 LDA #$24 ;Load Accumulator w/ #$24 | ||
$DA82:20 51 C0 JSR $C051 | $DA82:20 51 C0 JSR $C051 ;Jump to sound effect routine (Play sound #24, Mega Buster shot) | ||
$DA85:A0 00 LDY #$00 | $DA85:A0 00 LDY #$00 ;Load Y with #$00 | ||
$DA87:20 E0 D3 JSR $D3E0 | $DA87:20 E0 D3 JSR $D3E0 ;Jump to bullet generation routine - X, set by the previous loop, is the projectile slot to create bullet in. Y is bullet type, in this case 0 is Mega Buster shots | ||
$DA8A:A9 0F LDA #$0F | $DA8A:A9 0F LDA #$0F ;Load Accumulator with #$0F | ||
$DA8C:85 36 STA $0036 | $DA8C:85 36 STA $0036 ;Set timer for how long it takes MM to lower arm after firing to 15 frames | ||
$DA8E:A9 01 LDA #$01 | $DA8E:A9 01 LDA #$01 ;Load Accumulator with #$01 | ||
$DA90:85 3D STA $003D | $DA90:85 3D STA $003D ;Set sprite for firing this to 1, buster shot (0 is none, 2 is super arm, 3 is throw) | ||
$DA92:A6 2C LDX $002C | $DA92:A6 2C LDX $002C ;Load $002C, Mega Man's current state, into X | ||
$DA94:18 CLC | $DA94:18 CLC ;Always clear carry flag before addition! | ||
$DA95:7D D4 D3 ADC $D3D4,X | $DA95:7D D4 D3 ADC $D3D4,X ;Add something at $D3D4 + $002C's position. I think this is deciding which shooting sprite to use (2C indicates whether MM is standing, jumping, walking, etc). | ||
$DA98:8D 00 04 STA $0400 | $DA98:8D 00 04 STA $0400 ;Store Rockman animation | ||
$DA9B:18 CLC | $DA9B:18 CLC ;Clear carry | ||
$DA9C:60 RTS | $DA9C:60 RTS ;We're done here folks | ||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Function''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x03D313</tt> <tt>-</tt> <tt>0x03D315</tt> (USA), <tt>0x03D310</tt> <tt>-</tt> <tt>0x03D312</tt> (JPN) || Mega Buster palette || || <tt>0F2C11</tt> | |||
|- | |||
| <tt>0x03D45F</tt> (USA), <tt>0x03D45C</tt> (JPN) || Projectile type of buster shot || || <tt>00</tt> | |||
|- | |||
| <tt>0x03D495</tt> (USA), <tt>0x03D492</tt> (JPN) || X-Velocity of buster shot (fraction) || || <tt>00</tt> | |||
|- | |||
| <tt>0x03D4A7</tt> (USA), <tt>0x03D4A4</tt> (JPN) || X-Velocity of buster shot (integer) || Shots that are too fast will not be able to properly register hits at all, so avoid going beyond around <tt>0B</tt>. || <tt>04</tt> | |||
|- | |||
| <tt>0x03D4B9</tt> (USA), <tt>0x03D4B6</tt> (JPN) || Y-Velocity of buster shot (fraction) || || <tt>00</tt> | |||
|- | |||
| <tt>0x03D4CB</tt> (USA), <tt>0x03D4C8</tt> (JPN) || Y-Velocity of buster shot (integer) || || <tt>00</tt> | |||
|- | |||
| <tt>0x03DA83</tt> (USA), <tt>0x03DA80</tt> (JPN) || Maximum number of buster shots on-screen || Values <tt>00</tt>, <tt>01</tt>, and <tt>10</tt> and beyond are all invalid, while <tt>02</tt> is actually 1, so <tt>04</tt> would actually mean 3 shots on-screen. | |||
What this literally is is how far into the object handling chart in memory ($0420 - $043F) the projectile generation loop is going. Weapons are normally stored in $0422 - $0429, so with a maximum of 3 bullets on screen, the loop checks $0424, $0423, and $0422. Increasing this past 0F enters the enemy handling range ($0430~$043F). | |||
|| <tt>04</tt> | |||
|- | |||
| <tt>0x03DA91</tt> (USA), <tt>0x03DA8E</tt> (JPN) || Sound effect for basic Mega Man shooting || || <tt>24</tt> | |||
|- | |||
| <tt>0x03E6AA</tt> (USA), <tt>0x03E6A4</tt> (JPN) || Buster shot speed when being deflected || || <tt>05</tt> | |||
|- | |||
|} | |||
===Atomic Fire=== | |||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Function''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x03D317</tt> <tt>-</tt> <tt>0x03D319</tt> (USA), <tt>0x03D314</tt> <tt>-</tt> <tt>0x03D316</tt> (JPN) || Atomic Fire palette || || <tt>0F2815</tt> | |||
|- | |||
| <tt>0x03DD61</tt> || Charge time between first and second level || || <tt>7D</tt> | |||
|- | |||
| <tt>0x03DD67</tt> || Charge time between first and third level || If this value is lower than the value above, then that value is overwritten and it jumps straight to the third charge level. || <tt>BB</tt> | |||
|- | |||
| <tt>0x03DE46</tt> <tt>-</tt> <tt>0x03DE48</tt> || Sound effect for Atomic Heat charge per level || || <tt>35</tt>, <tt>36</tt>, <tt>37</tt> | |||
|- | |||
| <tt>0x03DE49</tt> <tt>-</tt> <tt>0x03DE50</tt> || First and third color of Atomic Heat per level, including non-charging || || <tt>0F15</tt>, <tt>3115</tt>, <tt>352C</tt>, <tt>3030</tt> | |||
|- | |||
| <tt>0x03DE55</tt> <tt>-</tt> <tt>0x03DE57</tt> || Amount of energy that Atomic Heat uses per shot per level || || <tt>01</tt>, <tt>06</tt>, <tt>0A</tt> | |||
|- | |||
| <tt>0x03DDF1</tt> || Atomic Fire x-speed || Applies to all levels || <tt>04</tt> | |||
|- | |||
|} | |||
===Air Shooter=== | |||
0x03DAC3 - 0x03DAF5 (0x33) | * <tt>0x03DAC3</tt> <tt>-</tt> <tt>0x03DAF5</tt> (<tt>0x33</tt>) = Routine | ||
$DAB3:A5 27 LDA $0027 = #$00 | $DAB3:A5 27 LDA $0027 = #$00 | ||
$DAB5:29 02 AND #$02 | $DAB5:29 02 AND #$02 | ||
Line 249: | Line 599: | ||
$DAD1:E0 01 CPX #$01 | $DAD1:E0 01 CPX #$01 | ||
$DAD3:D0 F2 BNE $DAC7 | $DAD3:D0 F2 BNE $DAC7 | ||
$DAD5:A9 3F LDA #$3F | $DAD5:A9 3F LDA #$3F | ||
$DAD7:20 51 C0 JSR $C051 | $DAD7:20 51 C0 JSR $C051 | ||
$DADA:38 SEC | $DADA:38 SEC | ||
$DADB:A5 9D LDA $009D = #$16 | $DADB:A5 9D LDA $009D = #$16 | ||
$DADD:E9 02 SBC #$02 | $DADD:E9 02 SBC #$02 | ||
$DADF:85 9D STA $009D = #$16 | $DADF:85 9D STA $009D = #$16 | ||
$DAE1:4C 8A DA JMP $DA8A | $DAE1:4C 8A DA JMP $DA8A | ||
$DAE4:38 SEC | $DAE4:38 SEC | ||
$DAE5:60 RTS | $DAE5:60 RTS | ||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Function''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x03D31B</tt> <tt>-</tt> <tt>0x03D31D</tt> (USA), <tt>0x03D318</tt> <tt>-</tt> <tt>0x03D31A</tt> (JPN) || Air Shooter palette || || <tt>0F3011</tt> | |||
|- | |||
| <tt>0x03DAE6</tt> || Sound effect for Air Shooter || || <tt>3F</tt> | |||
|- | |||
| <tt>0x03DAEE</tt> || Amount of energy that Air Shooter uses per shot || || <tt>02</tt> | |||
|- | |||
|} | |||
====Bubble==== | ===Leaf Shield=== | ||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Function''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x03D31F</tt> <tt>-</tt> <tt>0x03D321</tt> (USA), <tt>0x03D31C</tt> <tt>-</tt> <tt>0x03D31E</tt> (JPN) || Leaf Shield palette || || <tt>0F3019</tt> | |||
|- | |||
| <tt>0x03DF0D</tt> || Sound effect for Leaf Shield turning || || <tt>01</tt> | |||
|- | |||
| <tt>0x03DF1F</tt> || Sound effect for Leaf Shield appearing || || <tt>31</tt> | |||
|- | |||
| <tt>0x03DF72</tt> || Amount of energy that Leaf Shield uses per shot || || <tt>03</tt> | |||
|- | |||
|} | |||
===Bubble Lead=== | |||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Function''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x03D323</tt> <tt>-</tt> <tt>0x03D325</tt> (USA), <tt>0x03D320</tt> <tt>-</tt> <tt>0x03D322</tt> (JPN) || Bubble Lead palette || || <tt>0F3000</tt> | |||
|- | |||
| <tt>0x03DB34</tt> || Bubble Lead x-speed || || <tt>01</tt> | |||
|- | |||
| <tt>0x03DB34</tt> || Sound effect for Bubble Lead || || <tt>24</tt> | |||
|- | |||
| <tt>0x03DB3D</tt> || Amount of Bubble Lead shots before reducing energy || || <tt>02</tt> | |||
|- | |||
|} | |||
===Quick Boomerang=== | ===Quick Boomerang=== | ||
* 0x03DB4B - 0x03DB89 (0x3F) | * <tt>0x03DB4B</tt> <tt>-</tt> <tt>0x03DB89</tt> (<tt>0x3F</tt>) = Routine | ||
$DB3B:A5 27 LDA $0027 = #$00 | $DB3B:A5 27 LDA $0027 = #$00 | ||
$DB3D:29 02 AND #$02 | $DB3D:29 02 AND #$02 | ||
$DB3F:D0 0A BNE $DB4B | $DB3F:D0 0A BNE $DB4B | ||
$DB41:A5 AB LDA $00AB = #$03 | $DB41:A5 AB LDA $00AB = #$03 | ||
$DB43:C9 0B CMP #$0B | $DB43:C9 0B CMP #$0B | ||
$DB45:F0 04 BEQ $DB4B | $DB45:F0 04 BEQ $DB4B | ||
$DB47:E6 AB INC $00AB = #$03 | $DB47:E6 AB INC $00AB = #$03 | ||
Line 297: | Line 681: | ||
$DB78:38 SEC | $DB78:38 SEC | ||
$DB79:60 RTS | $DB79:60 RTS | ||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Function''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x03D327</tt> <tt>-</tt> <tt>0x03D329</tt> (USA), <tt>0x03D324</tt> <tt>-</tt> <tt>0x03D326</tt> (JPN) || Quick Boomerang palette || || <tt>0F3425</tt> | |||
|- | |||
| <tt>0x03DB54</tt> || Fire rate velocity for Quick Boomerang || || <tt>0B</tt> | |||
|- | |||
| <tt>0x03DB6F</tt> || Sound effect for Quick Boomerang || || <tt>24</tt> | |||
|- | |||
| <tt>0x03DB78</tt> || Amount of Quick Boomerang shots before reducing energy || || <tt>08</tt> | |||
|- | |||
|} | |||
===Quick Boomerang Mechanics=== | ===Quick Boomerang Mechanics=== | ||
* 0x03DFDE - 0x03E025 (0x48) | * <tt>0x03DFDE</tt> <tt>-</tt> <tt>0x03E025</tt> (<tt>0x48</tt>) = Routine | ||
$DFCE:BD E0 04 LDA $04E0,X @ $04E3 = #$0D | $DFCE:BD E0 04 LDA $04E0,X @ $04E3 = #$0D | ||
$DFD1:C9 12 CMP #$12 | $DFD1:C9 12 CMP #$12 | ||
$DFD3:B0 14 BCS $DFE9 | $DFD3:B0 14 BCS $DFE9 | ||
$DFD5:38 SEC | $DFD5:38 SEC | ||
Line 344: | Line 709: | ||
$DFE9:D0 08 BNE $DFF3 | $DFE9:D0 08 BNE $DFF3 | ||
$DFEB:BD 20 04 LDA $0420,X @ $0423 = #$C3 | $DFEB:BD 20 04 LDA $0420,X @ $0423 = #$C3 | ||
$DFEE:49 40 EOR #$40 | $DFEE:49 40 EOR #$40 | ||
$DFF0:9D 20 04 STA $0420,X @ $0423 = #$C3 | $DFF0:9D 20 04 STA $0420,X @ $0423 = #$C3 | ||
$DFF3:BD E0 04 LDA $04E0,X @ $04E3 = #$0D | $DFF3:BD E0 04 LDA $04E0,X @ $04E3 = #$0D | ||
$DFF6:C9 23 CMP #$23 | $DFF6:C9 23 CMP #$23 | ||
$DFF8:D0 04 BNE $DFFE | $DFF8:D0 04 BNE $DFFE | ||
$DFFA:5E 20 04 LSR $0420,X @ $0423 = #$C3 | $DFFA:5E 20 04 LSR $0420,X @ $0423 = #$C3 | ||
Line 361: | Line 726: | ||
$E012:20 EF EE JSR $EEEF | $E012:20 EF EE JSR $EEEF | ||
$E015:60 RTS | $E015:60 RTS | ||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Function''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x03DFE2</tt> || How far Quick Boomerang flies out || || <tt>12</tt> | |||
|- | |||
| <tt>0x03DFFF</tt> || How far Quick Boomerang flies down before coming up || || <tt>40</tt> | |||
|- | |||
| <tt>0x03E007</tt> || How far Quick Boomerang flies back || || <tt>23</tt> | |||
|- | |||
|} | |||
===Flash Stopper=== | |||
* <tt>0x03DC41</tt> <tt>-</tt> <tt>0x03DC5C</tt> (<tt>0x1C</tt>) = Routine | |||
$DC31:A5 27 LDA $0027 = #$00 | |||
$DC33:29 02 AND #$02 | |||
$DC35:F0 1F BEQ $DC56 | |||
$DC37:A2 02 LDX #$02 | |||
$DC39:AD 22 04 LDA $0422 = #$00 | |||
$DC3C:30 18 BMI $DC56 | |||
$DC3E:A0 08 LDY #$08 | |||
$DC40:20 E0 D3 JSR $D3E0 | |||
$DC43:A9 01 LDA #$01 | |||
$DC45:8D A6 05 STA $05A6 = #$01 | |||
$DC48:A9 21 LDA #$21 | |||
$DC4A:20 51 C0 JSR $C051 | |||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Function''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x03D32B</tt> <tt>-</tt> <tt>0x03D32D</tt> (USA), <tt>0x03D328</tt> <tt>-</tt> <tt>0x03D32A</tt> (JPN) || Flash Stopper palette || || <tt>0F3414</tt> | |||
|- | |||
| <tt>0x03DC59</tt> || Sound effect for Flash Stopper || || <tt>21</tt> | |||
|- | |||
|} | |||
===Flash Stopper Mechanics=== | ===Flash Stopper Mechanics=== | ||
* 0x03E168 - 0x03E19F (0x38) | * <tt>0x03E168</tt> <tt>-</tt> <tt>0x03E19F</tt> (<tt>0x38</tt>) = Routine | ||
$E158:DE 20 06 DEC $0620,X @ $0680 = #$03 | $E158:DE 20 06 DEC $0620,X @ $0680 = #$03 | ||
$E15B:D0 15 BNE $E172 | $E15B:D0 15 BNE $E172 | ||
$E15D:A9 0F LDA #$0F | $E15D:A9 0F LDA #$0F | ||
$E15F:9D 20 06 STA $0620,X @ $0680 = #$03 | $E15F:9D 20 06 STA $0620,X @ $0680 = #$03 | ||
$E162:C6 A1 DEC $00A1 = #$1C | $E162:C6 A1 DEC $00A1 = #$1C | ||
Line 376: | Line 774: | ||
$E16F:85 50 STA $0050 = #$00 | $E16F:85 50 STA $0050 = #$00 | ||
$E171:60 RTS | $E171:60 RTS | ||
$E172:A9 01 LDA #$01 | $E172:A9 01 LDA #$01 | ||
$E174:85 AA STA $00AA = #$00 | $E174:85 AA STA $00AA = #$00 | ||
$E176:A9 00 LDA #$00 | $E176:A9 00 LDA #$00 | ||
$E178:85 50 STA $0050 = #$00 | $E178:85 50 STA $0050 = #$00 | ||
Line 390: | Line 788: | ||
$E18C:9D 40 04 STA $0440,X @ $04A0 = #$B4 | $E18C:9D 40 04 STA $0440,X @ $04A0 = #$B4 | ||
$E18F:60 RTS | $E18F:60 RTS | ||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Function''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x03D49D</tt> || Duration until weapon energy starts to drain || || <tt>0F</tt> | |||
|- | |||
| <tt>0x03E16E</tt> || Every nth frame to drain one bar of weapon energy|| || <tt>0F</tt> | |||
|- | |||
|} | |||
===Metal Blade=== | |||
* <tt>0x03DC5D</tt> <tt>-</tt> <tt>0x03DC65</tt> (<tt>0x9</tt>) = Routine | |||
$DC4D:A9 0F LDA #$0F | |||
$DC4F:85 36 STA $0036 = #$00 | |||
$DC51:A9 03 LDA #$03 | |||
$DC53:4C 90 DA JMP $DA90 | |||
$DC56:38 SEC | |||
$DC57:60 RTS | |||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Function''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x03D32F</tt> <tt>-</tt> <tt>0x03D331</tt> (USA), <tt>0x03D32C</tt> <tt>-</tt> <tt>0x03D32E</tt> (JPN) || Metal Blade palette || || <tt>0F3718</tt> | |||
|- | |||
| <tt>0x03DBC9</tt> || Sound effect for Metal Blade || || <tt>23</tt> | |||
|- | |||
| <tt>0x03DBD2</tt> || Amount of Metal Blade shots before reducing energy || || <tt>04</tt> | |||
|- | |||
|} | |||
==== | ===Crash Bomber=== | ||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Function''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x03D333</tt> <tt>-</tt> <tt>0x03D335</tt> (USA), <tt>0x03D330</tt> <tt>-</tt> <tt>0x03D332</tt> (JPN) || Crash Bomber palette || || <tt>0F3026</tt> | |||
|- | |||
| <tt>0x03DBA6</tt> || Sound effect for Crash Bomber || || <tt>24</tt> | |||
|- | |||
| <tt>0x03DB99</tt> || Amount of energy that Crash Bomber uses per shot || || <tt>04</tt> | |||
|- | |||
| <tt>0x03E089</tt> || Sound effect for Crash Bomber clasping wall || || <tt>2E</tt> | |||
|- | |||
| <tt>0x03E09C</tt> || Timer until Crash Bomber detonates || || <tt>7E</tt> | |||
|- | |||
| <tt>0x03E0DA</tt> || Sound effect for Crash Bomber exploding || || <tt>2B</tt> | |||
|- | |||
|} | |||
==== | ===Items=== | ||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Function''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x03D337</tt> <tt>-</tt> <tt>0x03D339</tt> (USA), <tt>0x03D334</tt> <tt>-</tt> <tt>0x03D336</tt> (JPN) || Item 1 palette || || <tt>0F3016</tt> | |||
|- | |||
| <tt>0x03D33B</tt> <tt>-</tt> <tt>0x03D33D</tt> (USA), <tt>0x03D338</tt> <tt>-</tt> <tt>0x03D33A</tt> (JPN) || Item 2 palette || || <tt>0F3016</tt> | |||
|- | |||
| <tt>0x03D33F</tt> <tt>-</tt> <tt>0x03D341</tt> (USA), <tt>0x03D33C</tt> <tt>-</tt> <tt>0x03D33E</tt> (JPN) || Item 3 palette || || <tt>0F3016</tt> | |||
|- | |||
| <tt>0x03DC85</tt> || Amount of energy that Item 1 uses per use || || <tt>02</tt> | |||
|- | |||
| <tt>0x03E230</tt> || Amount of time before subtracting one energy from Item 2 || || <tt>13</tt> | |||
|- | |||
| <tt>0x03E34C</tt> || Amount of time before subtracting one energy from Item 3 || || <tt>1F</tt> | |||
|- | |||
|} | |||
==== | ==Enemy Behavior== | ||
===Attack Power Table=== | ===Attack Power Table=== | ||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Function''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x02E9C4</tt> || Wood Man's contact damage || || <tt>08</tt> | |||
|- | |||
| <tt>0x02E9C8</tt> || Flash Man's contact damage || || <tt>06</tt> | |||
|- | |||
| <tt>0x03ED6C</tt> || Normal Shrink's contact damage || || <tt>04</tt> | |||
|- | |||
| <tt>0x03ED6D</tt> || Lantern Fish Shrink's contact damage || || <tt>04</tt> | |||
|- | |||
| <tt>0x03ED74</tt> || Snapper's contact damage || || <tt>04</tt> | |||
|- | |||
| <tt>0x03ED76</tt> || Crabbot's contact damage || || <tt>04</tt> | |||
|- | |||
| <tt>0x03ED77</tt> || Crabbot's shell damage || || <tt>04</tt> | |||
|- | |||
| <tt>0x03ED78</tt> || Grand Croaker's contact damage || || <tt>04</tt> | |||
|- | |||
| <tt>0x03ED79</tt> || Petit Croaker's contact damage || || <tt>01</tt> | |||
|- | |||
| <tt>0x03ED82</tt> || Bubble Bat's contact damage || || <tt>04</tt> | |||
|- | |||
| <tt>0x03ED83</tt> || Robo-Rabbit's contact damage || || <tt>04</tt> | |||
|- | |||
| <tt>0x03ED84</tt> || Robo-Rabbit's projectile carrot || || <tt>02</tt> | |||
|- | |||
| <tt>0x03ED85</tt> || Hot Dog's contact damage || || <tt>08</tt> | |||
|- | |||
| <tt>0x03ED87</tt> || Hot Dog's projectile fire stream || || <tt>04</tt> | |||
|- | |||
| <tt>0x03ED89</tt> || Mecha Monkey's contact damage || || <tt>04</tt> | |||
|- | |||
| <tt>0x03ED8B</tt> || Atomic Chicken's contact damage || || <tt>04</tt> | |||
|- | |||
| <tt>0x03EDA1</tt> || Returning Sniper Joe's projectile pellet || || <tt>02</tt> | |||
|- | |||
| <tt>0x03EDA4</tt> || Pipi's contact damage || || <tt>04</tt> | |||
|- | |||
| <tt>0x03EDA6</tt> || Pipi's egg projectile || || <tt>04</tt> | |||
|- | |||
| <tt>0x03EDA8</tt> || Copipi's contact damage || || <tt>02</tt> | |||
|- | |||
| <tt>0x03EDB7</tt> || Crazy Cannon's contact damage || || <tt>04</tt> | |||
|- | |||
| <tt>0x03EDB9</tt> || Crazy Cannon's projectile pellet || || <tt>02</tt> | |||
|- | |||
| <tt>0x03EDBA</tt> || Sniper Armor's contact damage || || <tt>08</tt> | |||
|- | |||
| <tt>0x03EDBB</tt> || Sniper Armor's projectile pellet || || <tt>04</tt> | |||
|- | |||
| <tt>0x03EDBC</tt> || Schworm's contact damage || || <tt>02</tt> | |||
|- | |||
| <tt>0x03EDBD</tt> || Schworm's projectile snake rod || || <tt>02</tt> | |||
|- | |||
| <tt>0x03EDCD</tt> || Wood Man's Leaf Shield || || <tt>08</tt> | |||
|- | |||
| <tt>0x03EDCE</tt> || Wood Man's Falling Leaves || || <tt>04</tt> | |||
|- | |||
|} | |||
===Heat Man=== | |||
* <tt>0x02C16E</tt> <tt>-</tt> <tt>0x02C---</tt> (<tt>0x??</tt>) = Routine for attack | |||
* <tt> | {| border="1" cellpadding="1" | ||
|'''Address''' || '''Function''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x02C207</tt> || Atomic Fire 1's y-velocity || || <tt>07</tt> | |||
|- | |||
| <tt>0x02C208</tt> || Atomic Fire 2's y-velocity || || <tt>05</tt> | |||
|- | |||
| <tt>0x02C209</tt> || Atomic Fire 3's y-velocity || || <tt>03</tt> | |||
|- | |||
| <tt>0x02C20A</tt> || Atomic Fire 1's x-velocity || Unlike other instances of velocity, lower values for these x-velocities means faster velocity. || <tt>3A</tt> | |||
|- | |||
| <tt>0x02C20B</tt> || Atomic Fire 2's x-velocity || || <tt>2E</tt> | |||
|- | |||
| <tt>0x02C20C</tt> || Atomic Fire 3's x-velocity || || <tt>1C</tt> | |||
|- | |||
| <tt>0x02C1BB</tt> || Projectile type || || <tt>58</tt> | |||
|- | |||
| <tt>0x02C1A1</tt> || Number of Atomic Fires thrown || Extra shots tend to be glitchy. || <tt>02</tt> | |||
|- | |||
| <tt>0x02C253</tt> || Charge x-velocity || || <tt>04</tt> | |||
|- | |||
| <tt>0x02C29D</tt> || Delay 1 before charge || After Heat Man is damaged, he will wait before charging. This and the two values below are randomly chosen as the delay interval. || <tt>1F</tt> | |||
|- | |||
| <tt>0x02C29E</tt> || Delay 2 before charge || || <tt>3E</tt> | |||
|- | |||
| <tt>0x02C29F</tt> || Delay 3 before charge || || <tt>5D</tt> | |||
|- | |||
|} | |||
===Flash Man=== | |||
* <tt>''' | * <tt>0x02C966</tt> <tt>-</tt> <tt>0x02CAF8</tt> (<tt>0x193</tt> = Routine for attack | ||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Function''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x02C97D</tt> || Walk x-velocity fraction || || <tt>06</tt> | |||
|- | |||
| <tt>0x02C982</tt> || Walk x-velocity integer || || <tt>01</tt> | |||
|- | |||
| <tt>0x02C98B</tt> || Delay before Time Stopper || It only counts down while the boss is walking. || <tt>BB</tt> | |||
|- | |||
| <tt>0x02CA09</tt> || Number of pellets to shoot || || <tt>06</tt> | |||
|- | |||
| <tt>0x02CA52</tt> || Length of Time Stopper/projectile frequency? || Uncertain about value's function; alter it at own risk. || <tt>06</tt> | |||
|- | |||
| <tt>0x02CA71</tt> || Projectile type || || <tt>35</tt> | |||
|- | |||
| <tt>0x02CA81</tt> || Pellet x-velocity || || <tt>08</tt> | |||
|- | |||
| <tt>0x02CAC6</tt> || Jump x-velocity integer || || <tt>00</tt> | |||
|- | |||
| <tt>0x02CACE</tt> || Jump y-velocity integer || || <tt>04</tt> | |||
|- | |||
|} | |||
===Metal Man=== | |||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Function''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x02CBB5</tt> || Jump height 1 || Anything higher than 07 will make Metal Man bonk the ceiling. || <tt>06</tt> | |||
|- | |||
| <tt>0x02CBB6</tt> || Jump height 2 || || <tt>05</tt> | |||
|- | |||
| <tt>0x02CBB7</tt> || Jump height 3 || || <tt>04</tt> | |||
|- | |||
| <tt>0x02CC1D</tt> || Metal Blade frequency? || Uncertain about value's function, seems to change behavior if value's different than 06; alter it at own risk. || <tt>06</tt> | |||
|- | |||
| <tt>0x02CC29</tt> || Metal Blade sound || || <tt>20</tt> | |||
|- | |||
| <tt>0x02CC2D</tt> || Projectile type || || <tt>5C</tt> | |||
|- | |||
| <tt>0x02CC3F</tt> || Metal Blade x-velocity || || <tt>04</tt> | |||
|- | |||
|} | |||
===Crash Man=== | |||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Function''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x02CCF2</tt> || Walk x-velocity fraction || || <tt>47</tt> | |||
|- | |||
| <tt>0x02CCF7</tt> || Walk x-velocity integer || || <tt>01</tt> | |||
|- | |||
| <tt>0x02CD07</tt> || RAM address to check for jumping (see below) || If changed to 0x17, he always jumps. If any value other than 0x27 or 0x17, he doesn't react to your attacks with a jump anymore. || <tt>27</tt> | |||
|- | |||
| <tt>0x02CD09</tt> || Button to check for jumping || What it does is that it checks if x button is pressed. Ex. if set to 02, Crash Man will check the B button; if set to 01, he will check the A button instead; if set to 03, Crash Man will check both A and B, etc. || <tt>02</tt> | |||
|- | |||
| <tt>0x02CD2A</tt> || Jump y-velocity integer || || <tt>06</tt> | |||
|- | |||
| <tt>0x02CDAF</tt> || Jump y-velocity fraction || || <tt>44</tt> | |||
|- | |||
| <tt>0x02CDD3</tt> || If an object of this type currently exists, Crash Man won't shoot when jumping || || <tt>5E</tt> | |||
|- | |||
| <tt>0x02CDDA</tt> || Projectile type || || <tt>5E</tt> | |||
|- | |||
| <tt>0x02CDEE</tt> || Crash Bomber x-velocity integer || || <tt>06</tt> | |||
|- | |||
|} | |||
===Quick Man=== | |||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Function''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x02C86E</tt> || Number of Quick Boomerangs || || <tt>03</tt> | |||
|- | |||
| <tt>0x02C872</tt> || Projectile type || || <tt>59</tt> | |||
|- | |||
| <tt>0x02C882</tt> || Quick Boomerang delay in frames before second motion || || <tt>25</tt> | |||
|- | |||
| <tt>0x02C887</tt> || Boomerang x-velocity first motion || || <tt>04</tt> | |||
|- | |||
| <tt>0x03B726</tt> || Boomerang x-velocity second motion || || <tt>04</tt> | |||
|- | |||
| <tt>0x02C8A3</tt> || Medium jump y-velocity || || <tt>07</tt> | |||
|- | |||
| <tt>0x02C8A4</tt> || High jump y-velocity || || <tt>08</tt> | |||
|- | |||
| <tt>0x02C8A5</tt> || Low jump y-velocity || || <tt>04</tt> | |||
|- | |||
| <tt>0x02C8E4</tt> || Running time in frames || || <tt>3E</tt> | |||
|- | |||
| <tt>0x02C8DF</tt> || Running velocity integer || || <tt>02</tt> | |||
|- | |||
|} | |||
===Bubble Man=== | |||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Function''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x02C70B</tt> || Landing speed integer || || <tt>FF</tt> | |||
|- | |||
| <tt>0x02C6D3</tt> || Rising speed integer || || <tt>01</tt> | |||
|- | |||
| <tt>0x02C74F</tt> || Gun projectile type || || <tt>5A</tt> | |||
|- | |||
|} | |||
===Wood Man=== | |||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Function''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x02C537</tt> || Delay between rising leaves || || <tt>12</tt> | |||
|- | |||
| <tt>0x02C5DD</tt> || Jump y-velocity integer || || <tt>04</tt> | |||
|- | |||
| <tt>0x02C5E2</tt> || Jump x-velocity integer || || <tt>01</tt> | |||
|- | |||
| <tt>0x02C5A9</tt> || Leaf Shield launch x-velocity integer || || <tt>04</tt> | |||
|- | |||
| <tt>0x02C553</tt> || Number of falling leaves || || <tt>03</tt> | |||
|- | |||
| <tt>0x02C576</tt> || Falling leaf x-velocity integer || || <tt>02</tt> | |||
|- | |||
| <tt>0x02C567</tt> || Falling leaf y-position start || || <tt>20</tt> | |||
|- | |||
| <tt>0x02C522</tt> || Leaf Shield projectile type || || <tt>61</tt> | |||
|- | |||
| <tt>0x02C557</tt> || Falling leaves projectile type || || <tt>62</tt> | |||
|- | |||
| <tt>0x02C542</tt> || Rising leaves projectile type || || <tt>62</tt> | |||
|- | |||
| <tt>0x03DA34</tt> || Leaf Shield fall y-velocity? || Uncertain about value's function; alter it at own risk. || <tt>00</tt> | |||
|- | |||
| <tt>0x03D8F6</tt> || Unsure; changing this value to <tt>06</tt> makes an interesting Leaf Shield pattern. || || <tt>02</tt> | |||
|- | |||
| <tt>0x03B855</tt> || Leaf fall y-velocity? || Uncertain about value's function; alter it at own risk. Unlike other instances of velocity, lower values means faster velocity. Values <tt>40</tt> and higher make it so that it doesn't fall. Low numbers make leaves instantly despawn, causing faster patterns || <tt>20</tt> | |||
|- | |||
|} | |||
===Air Man=== | |||
* <tt> | * <tt>0x02C2F3</tt> <tt>-</tt> <tt>0x02C50A</tt> (<tt>0x218</tt>) = Routine for attack | ||
* <tt>0x02C30C</tt> = Number of tornado patterns before jump phase <tt>03</tt> | |||
* <tt>0x02C393 | * <tt>0x02C393</tt> <tt>-</tt> <tt>0x02C428</tt> (0x96) = Tornado properties [NOTE: Air Man has 5 possible tornado patterns, each with 6 tornadoes. In each 30-byte block of properties, the first 6 bytes correspond to the tornadoes in the first pattern, the next 6 bytes correspond to the tornadoes in the second pattern, etc.] | ||
** <tt>0x02C393</tt> <tt>-</tt> <tt>0x02C3B0</tt> (0x1E) = y-velocity fractions | |||
** <tt>0x02C3B1</tt> <tt>-</tt> <tt>0x02C3CE</tt> (0x1E) = y-velocity integers | |||
** <tt>0x02C3CF</tt> <tt>-</tt> <tt>0x02C3EC</tt> (0x1E) = x-velocity fractions | |||
** <tt>0x02C3ED</tt> <tt>-</tt> <tt>0x02C40A</tt> (0x1E) = x-velocity integers | |||
** <tt>0x02C40B</tt> <tt>-</tt> <tt>0x02C428</tt> (0x1E) = delay before tornado finishes deploying | |||
* <tt>0x02C4DD</tt> = First jump y-velocity fraction <tt>E6</tt> | |||
* <tt>0x02C4DE</tt> = Second jump y-velocity fraction <tt>76</tt> | |||
* <tt>0x02C4E0</tt> = First jump y-velocity integer <tt>04</tt> | |||
* <tt>0x02C4E1</tt> = Second jump y-velocity integer <tt>07</tt> | |||
* <tt>0x02C4E3</tt> = First jump x-velocity fraction <tt>39</tt> | |||
* <tt>0x02C4E4</tt> = Second jump x-velocity fraction <tt>9A</tt> | |||
* <tt>0x02C4E6</tt> = First jump x-velocity integer <tt>01</tt> | |||
* <tt>0x02C4DE = | * <tt>0x02C4E7</tt> = Second jump x-velocity integer <tt>01</tt> | ||
* <tt>0x02C4E0 = | |||
* <tt>0x02C4E1 = | |||
* <tt>0x02C4E3 = | |||
* <tt>0x02C4E4 = | |||
* <tt>0x02C4E6 = | |||
* <tt>0x02C4E7 = | |||
===Wily Machine=== | |||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Function''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x02DA2E</tt> || Phase 1 weakness #1 to disable || Only one damage table is provided for Wily Machine's weaknesses. However, during each phase, the game manually ignores damage when you have certain weapons equipped. By default, damage is negated if you have Air Shooter or Quick Boomerang equipped in phase 1, or if you have Atomic Fire equipped in phase 2. || <tt>02</tt> | |||
|- | |||
| <tt>0x02DA32</tt> || Phase 1 weakness #2 to disable || || <tt>05</tt> | |||
|- | |||
| <tt>0x02DA3A</tt> || Phase 2 weakness to disable || || <tt>01</tt> | |||
|- | |||
|} | |||
==Damage | ==Boss Weakness Damage== | ||
'''(Credit to [[Overseer190]])''' | |||
[NOTE: This is based on the USA version of Mega Man 2. Japanese values are located further up in the ROM (specifically starting from 2E933). Also, any hex value from 00 to 7F (0 to 127) deals damage to the enemy, whereas hex values ranging from 80 to FF (128 to 255) will fully heal the enemy.] | |||
''' | ===Mega Buster=== | ||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Boss''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x02E952</tt> || Heat Man || || <tt>02</tt> | |||
|- | |||
| <tt>0x02E953</tt> || Air Man || || <tt>02</tt> | |||
|- | |||
| <tt>0x02E954</tt> || Wood Man || || <tt>01</tt> | |||
|- | |||
| <tt>0x02E955</tt> || Bubble Man || || <tt>01</tt> | |||
|- | |||
| <tt>0x02E956</tt> || Quick Man || || <tt>02</tt> | |||
|- | |||
| <tt>0x02E957</tt> || Flash Man || || <tt>02</tt> | |||
|- | |||
| <tt>0x02E958</tt> || Metal Man || || <tt>01</tt> | |||
|- | |||
| <tt>0x02E959</tt> || Crash Man || || <tt>01</tt> | |||
|- | |||
| <tt>0x02E95A</tt> || Mecha Dragon || || <tt>01</tt> | |||
|- | |||
| <tt>0x02E95B</tt> || Picopico-kun || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E95C</tt> || Guts Tank || || <tt>01</tt> | |||
|- | |||
| <tt>0x02E95D</tt> || Boobeam Trap || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E95E</tt> || Wily Machine 2 || || <tt>01</tt> | |||
|- | |||
| <tt>0x02E95F</tt> || Alien || || <tt>FF</tt> | |||
|- | |||
|} | |||
===Atomic Fire=== | |||
An uncharged shot uses the Mega Buster's damage chart, a partially charged shot uses the Mega Buster's damage chart and multiplies the value by 2, and a charged shot uses the table below. | |||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Boss''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x02E960</tt> || Heat Man || || <tt>FF</tt> | |||
|- | |||
| <tt>0x02E961</tt> || Air Man || || <tt>06</tt> | |||
|- | |||
| <tt>0x02E962</tt> || Wood Man || || <tt>0E</tt> | |||
|- | |||
| <tt>0x02E963</tt> || Bubble Man || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E964</tt> || Quick Man || || <tt>0A</tt> | |||
|- | |||
| <tt>0x02E965</tt> || Flash Man || || <tt>06</tt> | |||
|- | |||
| <tt>0x02E966</tt> || Metal Man || || <tt>04</tt> | |||
|- | |||
| <tt>0x02E967</tt> || Crash Man || || <tt>06</tt> | |||
|- | |||
| <tt>0x02E968</tt> || Mecha Dragon || || <tt>08</tt> | |||
|- | |||
| <tt>0x02E969</tt> || Picopico-kun || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E96A</tt> || Guts Tank || || <tt>08</tt> | |||
|- | |||
| <tt>0x02E96B</tt> || Boobeam Trap || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E96C</tt> || Wily Machine 2 || || <tt>0E</tt> | |||
|- | |||
| <tt>0x02E96D</tt> || Alien || || <tt>FF</tt> | |||
|- | |||
|} | |||
===Air Shooter=== | |||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Boss''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x02E96E</tt> || Heat Man || || <tt>02</tt> | |||
|- | |||
| <tt>0x02E96F</tt> || Air Man || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E970</tt> || Wood Man || || <tt>04</tt> | |||
|- | |||
| <tt>0x02E971</tt> || Bubble Man || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E972</tt> || Quick Man || || <tt>02</tt> | |||
|- | |||
| <tt>0x02E973</tt> || Flash Man || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E974</tt> || Metal Man || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E975</tt> || Crash Man || || <tt>0A</tt> | |||
|- | |||
| <tt>0x02E976</tt> || Mecha Dragon || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E977</tt> || Picopico-kun || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E978</tt> || Guts Tank || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E979</tt> || Boobeam Trap || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E97A</tt> || Wily Machine 2 || || <tt>01</tt> | |||
|- | |||
| <tt>0x02E97B</tt> || Alien || || <tt>FF</tt> | |||
|- | |||
|} | |||
==== | ===Leaf Shield=== | ||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Boss''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x02E97C</tt> || Heat Man || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E97D</tt> || Air Man || || <tt>08</tt> | |||
|- | |||
| <tt>0x02E97E</tt> || Wood Man || || <tt>FF</tt> | |||
|- | |||
| <tt>0x02E97F</tt> || Bubble Man || ||<tt>00</tt> | |||
|- | |||
| <tt>0x02E980</tt> || Quick Man || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E981</tt> || Flash Man || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E982</tt> || Metal Man || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E983</tt> || Crash Man || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E984</tt> || Mecha Dragon || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E985</tt> || Picopico-kun || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E986</tt> || Guts Tank || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E987</tt> || Boobeam Trap || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E988</tt> || Wily Machine 2 || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E989</tt> || Alien || || <tt>FF</tt> | |||
|- | |||
|} | |||
==== | ===Bubble Lead=== | ||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Boss''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x02E98A</tt> || Heat Man || || <tt>06</tt> | |||
|- | |||
| <tt>0x02E98B</tt> || Air Man || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E98C</tt> || Wood Man || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E98D</tt> || Bubble Man || || <tt>FF</tt> | |||
|- | |||
| <tt>0x02E98E</tt> || Quick Man || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E98F</tt> || Flash Man || || <tt>02</tt> | |||
|- | |||
| <tt>0x02E990</tt> || Metal Man || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E991</tt> || Crash Man || || <tt>01</tt> | |||
|- | |||
| <tt>0x02E992</tt> || Mecha Dragon || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E993</tt> || Picopico-kun || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E994</tt> || Guts Tank || || <tt>01</tt> | |||
|- | |||
| <tt>0x02E995</tt> || Boobeam Trap || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E996</tt> || Wily Machine 2 || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E997</tt> || Alien || || <tt>01</tt> | |||
|- | |||
|} | |||
==== | ===Quick Boomerang=== | ||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Boss''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x02E998</tt> || Heat Man || || <tt>02</tt> | |||
|- | |||
| <tt>0x02E999</tt> || Air Man || || <tt>02</tt> | |||
|- | |||
| <tt>0x02E99A</tt> || Wood Man || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E99B</tt> || Bubble Man || || <tt>02</tt> | |||
|- | |||
| <tt>0x02E99C</tt> || Quick Man || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E99D</tt> || Flash Man || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E99E</tt> || Metal Man || || <tt>04</tt> | |||
|- | |||
| <tt>0x02E99F</tt> || Crash Man || || <tt>01</tt> | |||
|- | |||
| <tt>0x02E9A0</tt> || Mecha Dragon || || <tt>01</tt> | |||
|- | |||
| <tt>0x02E9A1</tt> || Picopico-kun || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E9A2</tt> || Guts Tank || || <tt>02</tt> | |||
|- | |||
| <tt>0x02E9A3</tt> || Boobeam Trap || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E9A4</tt> || Wily Machine 2 || || <tt>01</tt> | |||
|- | |||
| <tt>0x02E9A5</tt> || Alien || || <tt>FF</tt> | |||
|- | |||
|} | |||
==== | ===Crash Bombs=== | ||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Boss''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x02E9A6</tt> || Heat Man || || <tt>FF</tt> | |||
|- | |||
| <tt>0x02E9A7</tt> || Air Man || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E9A8</tt> || Wood Man || || <tt>02</tt> | |||
|- | |||
| <tt>0x02E9A9</tt> || Bubble Man || || <tt>02</tt> | |||
|- | |||
| <tt>0x02E9AA</tt> || Quick Man || || <tt>04</tt> | |||
|- | |||
| <tt>0x02E9AB</tt> || Flash Man || || <tt>03</tt> | |||
|- | |||
| <tt>0x02E9AC</tt> || Metal Man || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E9AD</tt> || Crash Man || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E9AE</tt> || Mecha Dragon || || <tt>01</tt> | |||
|- | |||
| <tt>0x02E9AF</tt> || Picopico-kun || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E9B0</tt> || Guts Tank || || <tt>01</tt> | |||
|- | |||
| <tt>0x02E9B1</tt> || Boobeam Trap || This value is unused as Boobeam Traps take 4 damage from being hit by "a weapon that does not have a 'no hit' flag." The location of this flag is unknown. || <tt>00</tt> | |||
|- | |||
| <tt>0x02E9B2</tt> || Wily Machine 2 || || <tt>04</tt> | |||
|- | |||
| <tt>0x02E9B3</tt> || Alien || || <tt>FF</tt> | |||
|- | |||
|} | |||
==== | ===Metal Blade=== | ||
{| border="1" cellpadding="1" | |||
|'''Address''' || '''Boss''' || '''Details''' || '''Default value''' | |||
|- | |||
| <tt>0x02E9B4</tt> || Heat Man || || <tt>01</tt> | |||
|- | |||
| <tt>0x02E9B5</tt> || Air Man || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E9B6</tt> || Wood Man || || <tt>02</tt> | |||
|- | |||
| <tt>0x02E9B7</tt> || Bubble Man || || <tt>04</tt> | |||
|- | |||
| <tt>0x02E9B8</tt> || Quick Man || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E9B9</tt> || Flash Man || || <tt>04</tt> | |||
|- | |||
| <tt>0x02E9BA</tt> || Metal Man || || <tt>0E</tt> | |||
|- | |||
| <tt>0x02E9BB</tt> || Crash Man || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E9BC</tt> || Mecha Dragon || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E9BD</tt> || Picopico-kun || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E9BE</tt> || Guts Tank || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E9BF</tt> || Boobeam Trap || || <tt>00</tt> | |||
|- | |||
| <tt>0x02E9C0</tt> || Wily Machine 2 || || <tt>01</tt> | |||
|- | |||
| <tt>0x02E9C1</tt> || Alien || || <tt>FF</tt> | |||
|- | |||
|} | |||
{{Internal Data}} | |||
Latest revision as of 14:27, 24 January 2024
The following article is a ROM map for Mega Man 2.
Gameplay Data
Mega Man
Address | Function | Details | Default value |
0x03891F | Mega Man's standstill x-velocity (integer) | 00 | |
0x038920 | Mega Man's inching x-velocity (integer) | 00 | |
0x038921 | Mega Man's walking x-velocity (integer) | 01 | |
0x038922 | Mega Man's jumping x-velocity (integer) | 01 | |
0x038923 | Mega Man's slip x-velocity (integer) | 00 | |
0x038924 | Mega Man's landing x-velocity (integer) | 00 | |
0x03892A | Mega Man's standstill x-velocity (fraction) | 00 | |
0x03892B | Mega Man's inching x-velocity (fraction) | 20 | |
0x03892C | Mega Man's walking x-velocity (fraction) | 60 | |
0x03892D | Mega Man's jumping x-velocity (fraction) | 50 | |
0x03892E | Mega Man's slip x-velocity (fraction) | 80 | |
0x03892F | Mega Man's landing x-velocity (fraction) | 00 | |
0x038A81 | Mega Man's jump height | 04 | |
0x03D312 - 0x03D341 (USA), 0x03D30F - 0x03D33E (JPN) | Mega Man's palette for each weapon | Same order as pause menu | (Check respective weapons) |
Heads-Up Display
Address | Function | Details | Default value |
0x02C142 | How fast the robot masters' health fills up | 03 | |
0x02E12B | How fast the fortress bosses' health fills up | 03 | |
0x0352B2 | How fast Mega Man's health fills up while paused | 03 | |
0x038315 | Maximum Energy for Mega Man | 1C | |
0x03831B | How fast Mega Man's health fills up in-game | 07 | |
0x03835A | How fast Mega Man's weapon energy fills up in-game | 07 | |
0x03CF79 | X position for energy bar | 18 | |
0x03CF8F | X position for weapon bar | 10 | |
0x03CFB1 | X position for boss bar | 28 | |
0x03CFD8 | Graphics for Energy Bar | This defines the leftmost tile (full HP graphic) and automatically picks to the right of it the remaining 4 tiles in descending order of HP, ex. 87>8B, DB>DF. | 87 |
0x03CFF5 | Y position for 1/7 energy | 18 | |
0x03CFF6 | Y position for 2/7 energy | 20 | |
0x03CFF7 | Y position for 3/7 energy | 28 | |
0x03CFF8 | Y position for 4/7 energy | 30 | |
0x03CFF9 | Y position for 5/7 energy | 38 | |
0x03CFFA | Y position for 6/7 energy | 40 | |
0x03CFFB | Y position for 7/7 energy | 48 |
READY Sprites
- 0x0381CC - 0x0381DF (0x14 = sprite data)
- 0x0381CC = Y position
- 0x0381CD = PPU Tile
- 0x0381CE = Palette, mirroring
- 0x0381CF = X position
format repeats
Sound Effects during Stage
Address | Function | Details | Default value |
0x03524E | Changing selections in menu, Mega Man forming | 2F | |
0x0381E0 - 0x0381ED | Music played for each level | ||
0x038685 | Sound for Mega Man landing | 29 | |
0x03C59F | Sound for entering menu screen during action | 32 | |
0x03C802 | Sound effect for Mega Man beamed down | 30 |
Pause Menu
Address | Function | Details | Default value |
0x0352AC | The amount of energy that E-Tanks set | 1C | |
0x03539E | Sound effect for turning off menu during action | 30 | |
0x0353E8 | Starting Y position of the weapon icon sprites | 44 | |
0x035403 | X position of the weapon icon sprites | 0C | |
0x03542C | Y position of Mega Man's health bar | 44 | |
0x03543D | Y position of the first set of weapon energy bars | 54 | |
0x03549C | Y position of the second set of weapon energy bars | 44 | |
0x03559E - 0x03562D | Pause menu tile layout |
Arrow and NEXT Sprites
- 0x03563C - 0x03564F (0x14) = sprite data
- 0x03563C = Y position
- 0x03563D = PPU Tile
- 0x03563E = Palette, mirroring
- 0x03563F = X position
format repeats
Weapon Icon Sprites
- 0x035650 - 0x03565B (0xC) = sprite data
- 0x035650 = P / Mega Buster (Default: 1F)
- 0x035651 = H / Atomic Fire (Default: 9F)
- 0x035652 = A / Air Shooter (Default: 9B)
- 0x035653 = W / Leaf Shield (Default: 99)
- 0x035654 = B / Bubble Lead (Default: 9D)
- 0x035655 = Q / Quick Boomerang (Default: 9C)
- 0x035656 = F / Flash Stopper (Default: 9A)
- 0x035657 = M / Metal Blade (Default: 9E)
- 0x035658 = C / Crash Bomber (Default: 10)
- 0x035659 = 1 / Item 1 (Default: 15)
- 0x03565A = 2 / Item 2 (Default: 16)
- 0x03565B = 3 / Item 3 (Default: 17)
E-Tank Menu Sprite
- 0x03565C - 0x03565F (0x4) = sprite data
- 0x03565C = Y position
- 0x03565D = PPU Tile
- 0x03565E = Palette, mirroring
- 0x03565F = X position
Extra Life Menu Sprite
- 0x035660 - 0x03566F (0x10) = sprite data
- 0x035660 = Y position
- 0x035661 = PPU Tile
- 0x035662 = Palette, mirroring
- 0x035663 = X position
format repeats
Items
Address | Function | Details | Default value |
0x0380D5 | Beginning amount of Health | 1C | |
0x0382FD | Amount of HP large Energy returns | 0A | |
0x038301 | Amount of HP small Energy returns | 02 | |
0x03806C | Amount of E-Tanks set after starting a new game | 00 | |
0x038382 | Maximum amount of E-Tanks you can carry | Carrying anything higher than 4 E-Tanks will generate bad passwords. | 04 |
0x038390 | Maximum amount of lives you can carry | Due to how lives actually work, 00 is game over and 01 is actually 0 lives, so 63 would yield a 98 life limit instead of the usual 99. | 63 |
0x03C1CB | Amount of E-Tanks set after continuing from a game over | 00 |
Power Ups
Address | Function | Details | Default value |
0x03C289 | Power Up from Heat Man | 01 | |
0x03C28A | Power Up from Air Man | 02 | |
0x03C28B | Power Up from Wood Man | 04 | |
0x03C28C | Power Up from Bubble Man | 08 | |
0x03C28D | Power Up from Quick Man | 10 | |
0x03C28E | Power Up from Flash Man | 20 | |
0x03C28F | Power Up from Metal Man | 40 | |
0x03C290 | Power Up from Crash Man | 80 | |
0x03C291 | Item # from Heat Man | 01 | |
0x03C292 | Item # from Air Man | 02 | |
0x03C293 | Item # from Wood Man | 00 | |
0x03C294 | Item # from Bubble Man | 00 | |
0x03C295 | Item # from Quick Man | 00 | |
0x03C296 | Item # from Flash Man | 04 | |
0x03C297 | Item # from Metal Man | 00 | |
0x03C298 | Item # from Crash Man | 00 |
Screen Data
Stage Select
Address | Function | Details | Default value |
0x02EE10 - 0x02F1CF | Stage select screen 8x8 tile placement | ||
0x02F1D0 - 0x02F20F | Stage select screen 16x16 tile attribute | ||
0x0340D8 | Routine for checking if a level has been cleared | ||
0x0340EC - 0x0340EF | Routine for checking if a level has been cleared | ||
0x0340F6 | Confirming selection | ||
0x034186 | First override palette for Boss posing screen | 2C | |
0x03418B | Second override palette for Boss posing screen | 11 | |
0x0341BA | Preview boss music | 0A | |
0x0342ED | Selection for Bubble Man cursor | ||
0x0344A9 - 0x0344B8 | Palette background for Stage Select Screen | ||
0x0344B9 - 0x0344C8 | Palette foreground for Stage Select Screen | ||
0x034551 - 0x03460C | Sprite table for Stage Select Screen (4 bytes per sprite) | ||
0x03460D - 0x034614 | Starting index for mugshot group in sprite table | Order is Heat, Air, Wood, Bubble, Quick, Flash, Metal, Crash | |
0x034615 - 0x03461C | Number of bytes per mugshot group in sprite table | Order is Heat, Air, Wood, Bubble, Quick, Flash, Metal, Crash | |
0x03462D | Cursor Y position for Dr. Wily | 60 | |
0x03462E | Cursor Y position for Bubble Man | 20 | |
0x03462F | Cursor Y position for Air Man | 20 | |
0x034630 | Cursor Y position for Quick Man | 20 | |
0x034631 | Cursor Y position for Wood Man | 60 | |
0x034632 | Cursor Y position for Crash Man | A0 | |
0x034633 | Cursor Y position for Flash Man | A0 | |
0x034634 | Cursor Y position for Metal Man | A0 | |
0x034635 | Cursor Y position for Heat Man | 60 | |
0x034636 | Cursor X position for Dr. Wily | 70 | |
0x034637 | Cursor X position for Bubble Man | 30 | |
0x034638 | Cursor X position for Air Man | 70 | |
0x034639 | Cursor X position for Quick Man | B0 | |
0x03463A | Cursor X position for Wood Man | B0 | |
0x03463B | Cursor X position for Crash Man | B0 | |
0x03463C | Cursor X position for Flash Man | 70 | |
0x03463D | Cursor X position for Metal Man | 30 | |
0x03463E | Cursor X position for Heat Man | 30 | |
0x03464F - 0x034650 | Palette attribute data for Boss posing screen | ||
0x034651 - 0x03466E | Lines for Boss posing screen data (reverse order) | ||
0x034670 | Pointer for Bubble Man Stage from selection | ||
0x034671 | Pointer for Air Man Stage from selection | ||
0x034672 | Pointer for Quick Man Stage from selection | ||
0x034673 | Pointer for Wood Man Stage from selection | ||
0x034674 | Pointer for Crash Man Stage from selection | ||
0x034675 | Pointer for Flash Man Stage from selection | ||
0x034676 | Pointer for Metal Man Stage from selection | ||
0x034677 | Pointer for Heat Man Stage from selection | ||
0x038076 - 0x03807D | routine to see all weapons gained to go to Wily when selecting Start | ||
0x03C264 - 0x03C269 | routine to see all weapons gained to go to Wily after gaining a weapon |
Wily Castle
Address | Function | Details | Default value |
0x0340E3 | First level of Wily's castle | 08 | |
0x035994 | Path velocity in Wily's castle map | 03 | |
0x035998 | Sound effect played when revealing a path tile | 28 |
Wily Castle Dots
- 0x035D9C - 0x035DAF (0x14) = sprite data
- 0x035D9C = Y position
- 0x035D9D = PPU Tile
- 0x035D9E = Palette, mirroring
- 0x035D9F = X position
format repeats
Weapon Get Screens
Address | Function | Details | Default value |
0x037B95 | How long Megaman flashes while getting a weapon | 00 isn't instantaneous, but 01 is | 9C |
0x037C8C | How long the screen flashes red before Dr. Light's message | 00 isn't instantaneous, but 01 is | 7D |
0x037D07 | How long Megaman flashes while getting an item | 00 isn't instantaneous, but 01 is | 7D |
0x037D4A | How fast every letter gets revealed | 07 | |
0x037DBC | Length of pauses between Dr. Light's text boxes | 00 isn't instantaneous, but 01 is | 7D |
Mega Man
- 0x0249FE - 0x024A8A (0x8D = Sprite data)
- 0x0249FF = Y position
- 0x024A00 = PPU Tile
- 0x024A01 = Palette, mirroring
- 0x024A02 = X position
format repeats
Dr. Light
- 0x024A8B - 0x024AD7 (0x4D = Sprite data)
- 0x024A8C = Y position
- 0x024A8D = PPU Tile
- 0x024A8E = Palette, mirroring
- 0x024A8F = X position
format repeats
Title
Address | Function | Details | Default value |
0x036235 | Sound effect for switching between Normal and Difficult on Title | 2F | |
0x0362D1 | Difficulty select arrow sprite tile | A2 | |
0x0362D2 | Palette, mirroring for arrow sprite | 01 | |
0x0362D4 | X position for arrow | 30 | |
0x0362D4 | Y position for arrow when selecting Normal | 98 | |
0x0362D5 | Y position for arrow when selecting Difficult | A8 | |
0x036322 | Removes all power ups and $00FD | ||
0x03686D | Sprite 1 for Title | ||
0x036877 | Sprite 2 for Title | ||
0x036AAF - 0x036ABE | Palette for sprites on Title | ||
0x036ACF - 0x036ADE | Palette background for Title | ||
0x037341 | Title Screen Last byte (reversed order) | ||
0x037700 | Title Screen First byte (reversed order) |
Password
Sprites
- 0x036FD7 - 0x03700A (0x8D) = Sprite data
- 0x036FD7 = Y position
- 0x036FD8 = PPU Tile
- 0x036FD9 = Palette, mirroring
- 0x036FDA = X position
format repeats
Positions
Address | Function | Details | Default value |
0x03700B | Password Y position (A,1) | 40 | |
0x03700C | Password Y position (A,2) | 40 | |
0x03700D | Password Y position (A,3) | 40 | |
0x03700E | Password Y position (A,4) | 40 | |
0x03700F | Password Y position (A,5) | 40 | |
0x037010 | Password Y position (B,1) | 50 | |
0x037011 | Password Y position (B,2) | 50 | |
0x037012 | Password Y position (B,3) | 50 | |
0x037013 | Password Y position (B,4) | 50 | |
0x037014 | Password Y position (B,5) | 50 | |
0x037015 | Password Y position (C,1) | 60 | |
0x037016 | Password Y position (C,2) | 60 | |
0x037017 | Password Y position (C,3) | 60 | |
0x037018 | Password Y position (C,4) | 60 | |
0x037019 | Password Y position (C,5) | 60 | |
0x03701A | Password Y position (D,1) | 70 | |
0x03701B | Password Y position (D,2) | 70 | |
0x03701C | Password Y position (D,3) | 70 | |
0x03701D | Password Y position (D,4) | 70 | |
0x03701E | Password Y position (D,5) | 70 | |
0x03701F | Password Y position (E,1) | 80 | |
0x037020 | Password Y position (E,2) | 80 | |
0x037021 | Password Y position (E,3) | 80 | |
0x037022 | Password Y position (E,4) | 80 | |
0x037023 | Password Y position (E,5) | 80 | |
0x037024 | Password X position (A,1) | 41 | |
0x037025 | Password X position (A,2) | 51 | |
0x037026 | Password X position (A,3) | 61 | |
0x037027 | Password X position (A,4) | 71 | |
0x037028 | Password X position (A,5) | 81 | |
0x037029 | Password X position (B,1) | 41 | |
0x03702A | Password X position (B,2) | 51 | |
0x03702B | Password X position (B,3) | 61 | |
0x03702C | Password X position (B,4) | 71 | |
0x03702D | Password X position (B,5) | 81 | |
0x03702E | Password X position (C,1) | 41 | |
0x03702F | Password X position (C,2) | 51 | |
0x037030 | Password X position (C,3) | 61 | |
0x037031 | Password X position (C,4) | 71 | |
0x037032 | Password X position (C,5) | 81 | |
0x037033 | Password X position (D,1) | 41 | |
0x037034 | Password X position (D,2) | 51 | |
0x037035 | Password X position (D,3) | 61 | |
0x037036 | Password X position (D,4) | 71 | |
0x037037 | Password X position (D,5) | 81 | |
0x037038 | Password X position (E,1) | 41 | |
0x037039 | Password X position (E,2) | 51 | |
0x03703A | Password X position (E,3) | 61 | |
0x03703B | Password X position (E,4) | 71 | |
0x03703C | Password X position (E,5) | 81 | |
0x037056 | Password related (A,1) | ||
0x03709B | Password related (E,5) |
Weapon Attributes
Mega Buster
- 0x03DA7C - 0x03DA8F (0x14) = Routine
$DA6C:A5 27 LDA $0027 ;Load single frame input poll $DA6E:29 02 AND #$02 ;Check bit 2 (Whether player pressed B) $DA70:F0 2B BEQ $DA9C ;If bit 2 not on, player didn't press B, skip to end and leave subroutine $DA72:A2 04 LDX #$04 ;Loads X with #$04 $DA74:BD 20 04 LDA $0420,X ;Check memory position $0424, status of third projectile slot $DA77:10 07 BPL $DA80 ;Branch if Bit 7 is not set - Bit 7 of 424 is 1 if a projectile exists and 0 if not. In other words, if a projectile is in this slot, continue, otherwise jump to shooting routine $DA79:CA DEX ;Decrement X $DA7A:E0 01 CPX #$01 ;Check if X is 1 $DA7C:D0 F6 BNE $DA74 ;If X isn't, branch back to projectile check. This repeats until you have checked all 3 projectile slots $DA7E:F0 1D BEQ $DA9C ;If it is 1, you've checked every projectile slot, end subroutine $DA80:A9 24 LDA #$24 ;Load Accumulator w/ #$24 $DA82:20 51 C0 JSR $C051 ;Jump to sound effect routine (Play sound #24, Mega Buster shot) $DA85:A0 00 LDY #$00 ;Load Y with #$00 $DA87:20 E0 D3 JSR $D3E0 ;Jump to bullet generation routine - X, set by the previous loop, is the projectile slot to create bullet in. Y is bullet type, in this case 0 is Mega Buster shots $DA8A:A9 0F LDA #$0F ;Load Accumulator with #$0F $DA8C:85 36 STA $0036 ;Set timer for how long it takes MM to lower arm after firing to 15 frames $DA8E:A9 01 LDA #$01 ;Load Accumulator with #$01 $DA90:85 3D STA $003D ;Set sprite for firing this to 1, buster shot (0 is none, 2 is super arm, 3 is throw) $DA92:A6 2C LDX $002C ;Load $002C, Mega Man's current state, into X $DA94:18 CLC ;Always clear carry flag before addition! $DA95:7D D4 D3 ADC $D3D4,X ;Add something at $D3D4 + $002C's position. I think this is deciding which shooting sprite to use (2C indicates whether MM is standing, jumping, walking, etc). $DA98:8D 00 04 STA $0400 ;Store Rockman animation $DA9B:18 CLC ;Clear carry $DA9C:60 RTS ;We're done here folks
Address | Function | Details | Default value |
0x03D313 - 0x03D315 (USA), 0x03D310 - 0x03D312 (JPN) | Mega Buster palette | 0F2C11 | |
0x03D45F (USA), 0x03D45C (JPN) | Projectile type of buster shot | 00 | |
0x03D495 (USA), 0x03D492 (JPN) | X-Velocity of buster shot (fraction) | 00 | |
0x03D4A7 (USA), 0x03D4A4 (JPN) | X-Velocity of buster shot (integer) | Shots that are too fast will not be able to properly register hits at all, so avoid going beyond around 0B. | 04 |
0x03D4B9 (USA), 0x03D4B6 (JPN) | Y-Velocity of buster shot (fraction) | 00 | |
0x03D4CB (USA), 0x03D4C8 (JPN) | Y-Velocity of buster shot (integer) | 00 | |
0x03DA83 (USA), 0x03DA80 (JPN) | Maximum number of buster shots on-screen | Values 00, 01, and 10 and beyond are all invalid, while 02 is actually 1, so 04 would actually mean 3 shots on-screen.
What this literally is is how far into the object handling chart in memory ($0420 - $043F) the projectile generation loop is going. Weapons are normally stored in $0422 - $0429, so with a maximum of 3 bullets on screen, the loop checks $0424, $0423, and $0422. Increasing this past 0F enters the enemy handling range ($0430~$043F). |
04 |
0x03DA91 (USA), 0x03DA8E (JPN) | Sound effect for basic Mega Man shooting | 24 | |
0x03E6AA (USA), 0x03E6A4 (JPN) | Buster shot speed when being deflected | 05 |
Atomic Fire
Address | Function | Details | Default value |
0x03D317 - 0x03D319 (USA), 0x03D314 - 0x03D316 (JPN) | Atomic Fire palette | 0F2815 | |
0x03DD61 | Charge time between first and second level | 7D | |
0x03DD67 | Charge time between first and third level | If this value is lower than the value above, then that value is overwritten and it jumps straight to the third charge level. | BB |
0x03DE46 - 0x03DE48 | Sound effect for Atomic Heat charge per level | 35, 36, 37 | |
0x03DE49 - 0x03DE50 | First and third color of Atomic Heat per level, including non-charging | 0F15, 3115, 352C, 3030 | |
0x03DE55 - 0x03DE57 | Amount of energy that Atomic Heat uses per shot per level | 01, 06, 0A | |
0x03DDF1 | Atomic Fire x-speed | Applies to all levels | 04 |
Air Shooter
- 0x03DAC3 - 0x03DAF5 (0x33) = Routine
$DAB3:A5 27 LDA $0027 = #$00 $DAB5:29 02 AND #$02 $DAB7:F0 2B BEQ $DAE4 $DAB9:A2 04 LDX #$04 $DABB:BD 20 04 LDA $0420,X @ $0480 = #$40 $DABE:30 24 BMI $DAE4 $DAC0:CA DEX $DAC1:E0 01 CPX #$01 $DAC3:D0 F6 BNE $DABB $DAC5:A2 04 LDX #$04 $DAC7:86 01 STX $0001 = #$74 $DAC9:A0 02 LDY #$02 $DACB:20 E0 D3 JSR $D3E0 $DACE:A6 01 LDX $0001 = #$74 $DAD0:CA DEX $DAD1:E0 01 CPX #$01 $DAD3:D0 F2 BNE $DAC7 $DAD5:A9 3F LDA #$3F $DAD7:20 51 C0 JSR $C051 $DADA:38 SEC $DADB:A5 9D LDA $009D = #$16 $DADD:E9 02 SBC #$02 $DADF:85 9D STA $009D = #$16 $DAE1:4C 8A DA JMP $DA8A $DAE4:38 SEC $DAE5:60 RTS
Address | Function | Details | Default value |
0x03D31B - 0x03D31D (USA), 0x03D318 - 0x03D31A (JPN) | Air Shooter palette | 0F3011 | |
0x03DAE6 | Sound effect for Air Shooter | 3F | |
0x03DAEE | Amount of energy that Air Shooter uses per shot | 02 |
Leaf Shield
Address | Function | Details | Default value |
0x03D31F - 0x03D321 (USA), 0x03D31C - 0x03D31E (JPN) | Leaf Shield palette | 0F3019 | |
0x03DF0D | Sound effect for Leaf Shield turning | 01 | |
0x03DF1F | Sound effect for Leaf Shield appearing | 31 | |
0x03DF72 | Amount of energy that Leaf Shield uses per shot | 03 |
Bubble Lead
Address | Function | Details | Default value |
0x03D323 - 0x03D325 (USA), 0x03D320 - 0x03D322 (JPN) | Bubble Lead palette | 0F3000 | |
0x03DB34 | Bubble Lead x-speed | 01 | |
0x03DB34 | Sound effect for Bubble Lead | 24 | |
0x03DB3D | Amount of Bubble Lead shots before reducing energy | 02 |
Quick Boomerang
- 0x03DB4B - 0x03DB89 (0x3F) = Routine
$DB3B:A5 27 LDA $0027 = #$00 $DB3D:29 02 AND #$02 $DB3F:D0 0A BNE $DB4B $DB41:A5 AB LDA $00AB = #$03 $DB43:C9 0B CMP #$0B $DB45:F0 04 BEQ $DB4B $DB47:E6 AB INC $00AB = #$03 $DB49:18 CLC $DB4A:60 RTS $DB4B:A2 05 LDX #$05 $DB4D:BD 20 04 LDA $0420,X @ $0425 = #$C3 $DB50:10 07 BPL $DB59 $DB52:CA DEX $DB53:E0 01 CPX #$01 $DB55:D0 F6 BNE $DB4D $DB57:F0 1F BEQ $DB78 $DB59:A0 05 LDY #$05 $DB5B:20 E0 D3 JSR $D3E0 $DB5E:A9 24 LDA #$24 $DB60:20 51 C0 JSR $C051 $DB63:E6 AC INC $00AC = #$04 $DB65:A5 AC LDA $00AC = #$04 $DB67:C9 08 CMP #$08 $DB69:D0 06 BNE $DB71 $DB6B:A9 00 LDA #$00 $DB6D:85 AC STA $00AC = #$04 $DB6F:C6 A0 DEC $00A0 = #$09 $DB71:A9 00 LDA #$00 $DB73:85 AB STA $00AB = #$03 $DB75:4C 8A DA JMP $DA8A $DB78:38 SEC $DB79:60 RTS
Address | Function | Details | Default value |
0x03D327 - 0x03D329 (USA), 0x03D324 - 0x03D326 (JPN) | Quick Boomerang palette | 0F3425 | |
0x03DB54 | Fire rate velocity for Quick Boomerang | 0B | |
0x03DB6F | Sound effect for Quick Boomerang | 24 | |
0x03DB78 | Amount of Quick Boomerang shots before reducing energy | 08 |
Quick Boomerang Mechanics
- 0x03DFDE - 0x03E025 (0x48) = Routine
$DFCE:BD E0 04 LDA $04E0,X @ $04E3 = #$0D $DFD1:C9 12 CMP #$12 $DFD3:B0 14 BCS $DFE9 $DFD5:38 SEC $DFD6:BD 60 06 LDA $0660,X @ $0663 = #$DB $DFD9:E9 4B SBC #$4B $DFDB:9D 60 06 STA $0660,X @ $0663 = #$DB $DFDE:BD 40 06 LDA $0640,X @ $0643 = #$FE $DFE1:E9 00 SBC #$00 $DFE3:9D 40 06 STA $0640,X @ $0643 = #$FE $DFE6:4C 0F E0 JMP $E00F $DFE9:D0 08 BNE $DFF3 $DFEB:BD 20 04 LDA $0420,X @ $0423 = #$C3 $DFEE:49 40 EOR #$40 $DFF0:9D 20 04 STA $0420,X @ $0423 = #$C3 $DFF3:BD E0 04 LDA $04E0,X @ $04E3 = #$0D $DFF6:C9 23 CMP #$23 $DFF8:D0 04 BNE $DFFE $DFFA:5E 20 04 LSR $0420,X @ $0423 = #$C3 $DFFD:60 RTS $DFFE:18 CLC $DFFF:BD 60 06 LDA $0660,X @ $0663 = #$DB $E002:69 4B ADC #$4B $E004:9D 60 06 STA $0660,X @ $0663 = #$DB $E007:BD 40 06 LDA $0640,X @ $0643 = #$FE $E00A:69 00 ADC #$00 $E00C:9D 40 06 STA $0640,X @ $0643 = #$FE $E00F:FE E0 04 INC $04E0,X @ $04E3 = #$0D $E012:20 EF EE JSR $EEEF $E015:60 RTS
Address | Function | Details | Default value |
0x03DFE2 | How far Quick Boomerang flies out | 12 | |
0x03DFFF | How far Quick Boomerang flies down before coming up | 40 | |
0x03E007 | How far Quick Boomerang flies back | 23 |
Flash Stopper
- 0x03DC41 - 0x03DC5C (0x1C) = Routine
$DC31:A5 27 LDA $0027 = #$00 $DC33:29 02 AND #$02 $DC35:F0 1F BEQ $DC56 $DC37:A2 02 LDX #$02 $DC39:AD 22 04 LDA $0422 = #$00 $DC3C:30 18 BMI $DC56 $DC3E:A0 08 LDY #$08 $DC40:20 E0 D3 JSR $D3E0 $DC43:A9 01 LDA #$01 $DC45:8D A6 05 STA $05A6 = #$01 $DC48:A9 21 LDA #$21 $DC4A:20 51 C0 JSR $C051
Address | Function | Details | Default value |
0x03D32B - 0x03D32D (USA), 0x03D328 - 0x03D32A (JPN) | Flash Stopper palette | 0F3414 | |
0x03DC59 | Sound effect for Flash Stopper | 21 |
Flash Stopper Mechanics
- 0x03E168 - 0x03E19F (0x38) = Routine
$E158:DE 20 06 DEC $0620,X @ $0680 = #$03 $E15B:D0 15 BNE $E172 $E15D:A9 0F LDA #$0F $E15F:9D 20 06 STA $0620,X @ $0680 = #$03 $E162:C6 A1 DEC $00A1 = #$1C $E164:D0 0C BNE $E172 $E166:5E 20 04 LSR $0420,X @ $0480 = #$00 $E169:A9 00 LDA #$00 $E16B:85 AA STA $00AA = #$00 $E16D:A9 01 LDA #$01 $E16F:85 50 STA $0050 = #$00 $E171:60 RTS $E172:A9 01 LDA #$01 $E174:85 AA STA $00AA = #$00 $E176:A9 00 LDA #$00 $E178:85 50 STA $0050 = #$00 $E17A:85 4F STA $004F = #$00 $E17C:A9 80 LDA #$80 $E17E:9D A0 04 STA $04A0,X @ $0500 = #$A6 $E181:18 CLC $E182:65 1F ADC $001F = #$00 $E184:9D 60 04 STA $0460,X @ $04C0 = #$00 $E187:AD 40 04 LDA $0440 = #$00 $E18A:69 00 ADC #$00 $E18C:9D 40 04 STA $0440,X @ $04A0 = #$B4 $E18F:60 RTS
Address | Function | Details | Default value |
0x03D49D | Duration until weapon energy starts to drain | 0F | |
0x03E16E | Every nth frame to drain one bar of weapon energy | 0F |
Metal Blade
- 0x03DC5D - 0x03DC65 (0x9) = Routine
$DC4D:A9 0F LDA #$0F $DC4F:85 36 STA $0036 = #$00 $DC51:A9 03 LDA #$03 $DC53:4C 90 DA JMP $DA90 $DC56:38 SEC $DC57:60 RTS
Address | Function | Details | Default value |
0x03D32F - 0x03D331 (USA), 0x03D32C - 0x03D32E (JPN) | Metal Blade palette | 0F3718 | |
0x03DBC9 | Sound effect for Metal Blade | 23 | |
0x03DBD2 | Amount of Metal Blade shots before reducing energy | 04 |
Crash Bomber
Address | Function | Details | Default value |
0x03D333 - 0x03D335 (USA), 0x03D330 - 0x03D332 (JPN) | Crash Bomber palette | 0F3026 | |
0x03DBA6 | Sound effect for Crash Bomber | 24 | |
0x03DB99 | Amount of energy that Crash Bomber uses per shot | 04 | |
0x03E089 | Sound effect for Crash Bomber clasping wall | 2E | |
0x03E09C | Timer until Crash Bomber detonates | 7E | |
0x03E0DA | Sound effect for Crash Bomber exploding | 2B |
Items
Address | Function | Details | Default value |
0x03D337 - 0x03D339 (USA), 0x03D334 - 0x03D336 (JPN) | Item 1 palette | 0F3016 | |
0x03D33B - 0x03D33D (USA), 0x03D338 - 0x03D33A (JPN) | Item 2 palette | 0F3016 | |
0x03D33F - 0x03D341 (USA), 0x03D33C - 0x03D33E (JPN) | Item 3 palette | 0F3016 | |
0x03DC85 | Amount of energy that Item 1 uses per use | 02 | |
0x03E230 | Amount of time before subtracting one energy from Item 2 | 13 | |
0x03E34C | Amount of time before subtracting one energy from Item 3 | 1F |
Enemy Behavior
Attack Power Table
Address | Function | Details | Default value |
0x02E9C4 | Wood Man's contact damage | 08 | |
0x02E9C8 | Flash Man's contact damage | 06 | |
0x03ED6C | Normal Shrink's contact damage | 04 | |
0x03ED6D | Lantern Fish Shrink's contact damage | 04 | |
0x03ED74 | Snapper's contact damage | 04 | |
0x03ED76 | Crabbot's contact damage | 04 | |
0x03ED77 | Crabbot's shell damage | 04 | |
0x03ED78 | Grand Croaker's contact damage | 04 | |
0x03ED79 | Petit Croaker's contact damage | 01 | |
0x03ED82 | Bubble Bat's contact damage | 04 | |
0x03ED83 | Robo-Rabbit's contact damage | 04 | |
0x03ED84 | Robo-Rabbit's projectile carrot | 02 | |
0x03ED85 | Hot Dog's contact damage | 08 | |
0x03ED87 | Hot Dog's projectile fire stream | 04 | |
0x03ED89 | Mecha Monkey's contact damage | 04 | |
0x03ED8B | Atomic Chicken's contact damage | 04 | |
0x03EDA1 | Returning Sniper Joe's projectile pellet | 02 | |
0x03EDA4 | Pipi's contact damage | 04 | |
0x03EDA6 | Pipi's egg projectile | 04 | |
0x03EDA8 | Copipi's contact damage | 02 | |
0x03EDB7 | Crazy Cannon's contact damage | 04 | |
0x03EDB9 | Crazy Cannon's projectile pellet | 02 | |
0x03EDBA | Sniper Armor's contact damage | 08 | |
0x03EDBB | Sniper Armor's projectile pellet | 04 | |
0x03EDBC | Schworm's contact damage | 02 | |
0x03EDBD | Schworm's projectile snake rod | 02 | |
0x03EDCD | Wood Man's Leaf Shield | 08 | |
0x03EDCE | Wood Man's Falling Leaves | 04 |
Heat Man
- 0x02C16E - 0x02C--- (0x??) = Routine for attack
Address | Function | Details | Default value |
0x02C207 | Atomic Fire 1's y-velocity | 07 | |
0x02C208 | Atomic Fire 2's y-velocity | 05 | |
0x02C209 | Atomic Fire 3's y-velocity | 03 | |
0x02C20A | Atomic Fire 1's x-velocity | Unlike other instances of velocity, lower values for these x-velocities means faster velocity. | 3A |
0x02C20B | Atomic Fire 2's x-velocity | 2E | |
0x02C20C | Atomic Fire 3's x-velocity | 1C | |
0x02C1BB | Projectile type | 58 | |
0x02C1A1 | Number of Atomic Fires thrown | Extra shots tend to be glitchy. | 02 |
0x02C253 | Charge x-velocity | 04 | |
0x02C29D | Delay 1 before charge | After Heat Man is damaged, he will wait before charging. This and the two values below are randomly chosen as the delay interval. | 1F |
0x02C29E | Delay 2 before charge | 3E | |
0x02C29F | Delay 3 before charge | 5D |
Flash Man
- 0x02C966 - 0x02CAF8 (0x193 = Routine for attack
Address | Function | Details | Default value |
0x02C97D | Walk x-velocity fraction | 06 | |
0x02C982 | Walk x-velocity integer | 01 | |
0x02C98B | Delay before Time Stopper | It only counts down while the boss is walking. | BB |
0x02CA09 | Number of pellets to shoot | 06 | |
0x02CA52 | Length of Time Stopper/projectile frequency? | Uncertain about value's function; alter it at own risk. | 06 |
0x02CA71 | Projectile type | 35 | |
0x02CA81 | Pellet x-velocity | 08 | |
0x02CAC6 | Jump x-velocity integer | 00 | |
0x02CACE | Jump y-velocity integer | 04 |
Metal Man
Address | Function | Details | Default value |
0x02CBB5 | Jump height 1 | Anything higher than 07 will make Metal Man bonk the ceiling. | 06 |
0x02CBB6 | Jump height 2 | 05 | |
0x02CBB7 | Jump height 3 | 04 | |
0x02CC1D | Metal Blade frequency? | Uncertain about value's function, seems to change behavior if value's different than 06; alter it at own risk. | 06 |
0x02CC29 | Metal Blade sound | 20 | |
0x02CC2D | Projectile type | 5C | |
0x02CC3F | Metal Blade x-velocity | 04 |
Crash Man
Address | Function | Details | Default value |
0x02CCF2 | Walk x-velocity fraction | 47 | |
0x02CCF7 | Walk x-velocity integer | 01 | |
0x02CD07 | RAM address to check for jumping (see below) | If changed to 0x17, he always jumps. If any value other than 0x27 or 0x17, he doesn't react to your attacks with a jump anymore. | 27 |
0x02CD09 | Button to check for jumping | What it does is that it checks if x button is pressed. Ex. if set to 02, Crash Man will check the B button; if set to 01, he will check the A button instead; if set to 03, Crash Man will check both A and B, etc. | 02 |
0x02CD2A | Jump y-velocity integer | 06 | |
0x02CDAF | Jump y-velocity fraction | 44 | |
0x02CDD3 | If an object of this type currently exists, Crash Man won't shoot when jumping | 5E | |
0x02CDDA | Projectile type | 5E | |
0x02CDEE | Crash Bomber x-velocity integer | 06 |
Quick Man
Address | Function | Details | Default value |
0x02C86E | Number of Quick Boomerangs | 03 | |
0x02C872 | Projectile type | 59 | |
0x02C882 | Quick Boomerang delay in frames before second motion | 25 | |
0x02C887 | Boomerang x-velocity first motion | 04 | |
0x03B726 | Boomerang x-velocity second motion | 04 | |
0x02C8A3 | Medium jump y-velocity | 07 | |
0x02C8A4 | High jump y-velocity | 08 | |
0x02C8A5 | Low jump y-velocity | 04 | |
0x02C8E4 | Running time in frames | 3E | |
0x02C8DF | Running velocity integer | 02 |
Bubble Man
Address | Function | Details | Default value |
0x02C70B | Landing speed integer | FF | |
0x02C6D3 | Rising speed integer | 01 | |
0x02C74F | Gun projectile type | 5A |
Wood Man
Address | Function | Details | Default value |
0x02C537 | Delay between rising leaves | 12 | |
0x02C5DD | Jump y-velocity integer | 04 | |
0x02C5E2 | Jump x-velocity integer | 01 | |
0x02C5A9 | Leaf Shield launch x-velocity integer | 04 | |
0x02C553 | Number of falling leaves | 03 | |
0x02C576 | Falling leaf x-velocity integer | 02 | |
0x02C567 | Falling leaf y-position start | 20 | |
0x02C522 | Leaf Shield projectile type | 61 | |
0x02C557 | Falling leaves projectile type | 62 | |
0x02C542 | Rising leaves projectile type | 62 | |
0x03DA34 | Leaf Shield fall y-velocity? | Uncertain about value's function; alter it at own risk. | 00 |
0x03D8F6 | Unsure; changing this value to 06 makes an interesting Leaf Shield pattern. | 02 | |
0x03B855 | Leaf fall y-velocity? | Uncertain about value's function; alter it at own risk. Unlike other instances of velocity, lower values means faster velocity. Values 40 and higher make it so that it doesn't fall. Low numbers make leaves instantly despawn, causing faster patterns | 20 |
Air Man
- 0x02C2F3 - 0x02C50A (0x218) = Routine for attack
- 0x02C30C = Number of tornado patterns before jump phase 03
- 0x02C393 - 0x02C428 (0x96) = Tornado properties [NOTE: Air Man has 5 possible tornado patterns, each with 6 tornadoes. In each 30-byte block of properties, the first 6 bytes correspond to the tornadoes in the first pattern, the next 6 bytes correspond to the tornadoes in the second pattern, etc.]
- 0x02C393 - 0x02C3B0 (0x1E) = y-velocity fractions
- 0x02C3B1 - 0x02C3CE (0x1E) = y-velocity integers
- 0x02C3CF - 0x02C3EC (0x1E) = x-velocity fractions
- 0x02C3ED - 0x02C40A (0x1E) = x-velocity integers
- 0x02C40B - 0x02C428 (0x1E) = delay before tornado finishes deploying
- 0x02C4DD = First jump y-velocity fraction E6
- 0x02C4DE = Second jump y-velocity fraction 76
- 0x02C4E0 = First jump y-velocity integer 04
- 0x02C4E1 = Second jump y-velocity integer 07
- 0x02C4E3 = First jump x-velocity fraction 39
- 0x02C4E4 = Second jump x-velocity fraction 9A
- 0x02C4E6 = First jump x-velocity integer 01
- 0x02C4E7 = Second jump x-velocity integer 01
Wily Machine
Address | Function | Details | Default value |
0x02DA2E | Phase 1 weakness #1 to disable | Only one damage table is provided for Wily Machine's weaknesses. However, during each phase, the game manually ignores damage when you have certain weapons equipped. By default, damage is negated if you have Air Shooter or Quick Boomerang equipped in phase 1, or if you have Atomic Fire equipped in phase 2. | 02 |
0x02DA32 | Phase 1 weakness #2 to disable | 05 | |
0x02DA3A | Phase 2 weakness to disable | 01 |
Boss Weakness Damage
(Credit to Overseer190)
[NOTE: This is based on the USA version of Mega Man 2. Japanese values are located further up in the ROM (specifically starting from 2E933). Also, any hex value from 00 to 7F (0 to 127) deals damage to the enemy, whereas hex values ranging from 80 to FF (128 to 255) will fully heal the enemy.]
Mega Buster
Address | Boss | Details | Default value |
0x02E952 | Heat Man | 02 | |
0x02E953 | Air Man | 02 | |
0x02E954 | Wood Man | 01 | |
0x02E955 | Bubble Man | 01 | |
0x02E956 | Quick Man | 02 | |
0x02E957 | Flash Man | 02 | |
0x02E958 | Metal Man | 01 | |
0x02E959 | Crash Man | 01 | |
0x02E95A | Mecha Dragon | 01 | |
0x02E95B | Picopico-kun | 00 | |
0x02E95C | Guts Tank | 01 | |
0x02E95D | Boobeam Trap | 00 | |
0x02E95E | Wily Machine 2 | 01 | |
0x02E95F | Alien | FF |
Atomic Fire
An uncharged shot uses the Mega Buster's damage chart, a partially charged shot uses the Mega Buster's damage chart and multiplies the value by 2, and a charged shot uses the table below.
Address | Boss | Details | Default value |
0x02E960 | Heat Man | FF | |
0x02E961 | Air Man | 06 | |
0x02E962 | Wood Man | 0E | |
0x02E963 | Bubble Man | 00 | |
0x02E964 | Quick Man | 0A | |
0x02E965 | Flash Man | 06 | |
0x02E966 | Metal Man | 04 | |
0x02E967 | Crash Man | 06 | |
0x02E968 | Mecha Dragon | 08 | |
0x02E969 | Picopico-kun | 00 | |
0x02E96A | Guts Tank | 08 | |
0x02E96B | Boobeam Trap | 00 | |
0x02E96C | Wily Machine 2 | 0E | |
0x02E96D | Alien | FF |
Air Shooter
Address | Boss | Details | Default value |
0x02E96E | Heat Man | 02 | |
0x02E96F | Air Man | 00 | |
0x02E970 | Wood Man | 04 | |
0x02E971 | Bubble Man | 00 | |
0x02E972 | Quick Man | 02 | |
0x02E973 | Flash Man | 00 | |
0x02E974 | Metal Man | 00 | |
0x02E975 | Crash Man | 0A | |
0x02E976 | Mecha Dragon | 00 | |
0x02E977 | Picopico-kun | 00 | |
0x02E978 | Guts Tank | 00 | |
0x02E979 | Boobeam Trap | 00 | |
0x02E97A | Wily Machine 2 | 01 | |
0x02E97B | Alien | FF |
Leaf Shield
Address | Boss | Details | Default value |
0x02E97C | Heat Man | 00 | |
0x02E97D | Air Man | 08 | |
0x02E97E | Wood Man | FF | |
0x02E97F | Bubble Man | 00 | |
0x02E980 | Quick Man | 00 | |
0x02E981 | Flash Man | 00 | |
0x02E982 | Metal Man | 00 | |
0x02E983 | Crash Man | 00 | |
0x02E984 | Mecha Dragon | 00 | |
0x02E985 | Picopico-kun | 00 | |
0x02E986 | Guts Tank | 00 | |
0x02E987 | Boobeam Trap | 00 | |
0x02E988 | Wily Machine 2 | 00 | |
0x02E989 | Alien | FF |
Bubble Lead
Address | Boss | Details | Default value |
0x02E98A | Heat Man | 06 | |
0x02E98B | Air Man | 00 | |
0x02E98C | Wood Man | 00 | |
0x02E98D | Bubble Man | FF | |
0x02E98E | Quick Man | 00 | |
0x02E98F | Flash Man | 02 | |
0x02E990 | Metal Man | 00 | |
0x02E991 | Crash Man | 01 | |
0x02E992 | Mecha Dragon | 00 | |
0x02E993 | Picopico-kun | 00 | |
0x02E994 | Guts Tank | 01 | |
0x02E995 | Boobeam Trap | 00 | |
0x02E996 | Wily Machine 2 | 00 | |
0x02E997 | Alien | 01 |
Quick Boomerang
Address | Boss | Details | Default value |
0x02E998 | Heat Man | 02 | |
0x02E999 | Air Man | 02 | |
0x02E99A | Wood Man | 00 | |
0x02E99B | Bubble Man | 02 | |
0x02E99C | Quick Man | 00 | |
0x02E99D | Flash Man | 00 | |
0x02E99E | Metal Man | 04 | |
0x02E99F | Crash Man | 01 | |
0x02E9A0 | Mecha Dragon | 01 | |
0x02E9A1 | Picopico-kun | 00 | |
0x02E9A2 | Guts Tank | 02 | |
0x02E9A3 | Boobeam Trap | 00 | |
0x02E9A4 | Wily Machine 2 | 01 | |
0x02E9A5 | Alien | FF |
Crash Bombs
Address | Boss | Details | Default value |
0x02E9A6 | Heat Man | FF | |
0x02E9A7 | Air Man | 00 | |
0x02E9A8 | Wood Man | 02 | |
0x02E9A9 | Bubble Man | 02 | |
0x02E9AA | Quick Man | 04 | |
0x02E9AB | Flash Man | 03 | |
0x02E9AC | Metal Man | 00 | |
0x02E9AD | Crash Man | 00 | |
0x02E9AE | Mecha Dragon | 01 | |
0x02E9AF | Picopico-kun | 00 | |
0x02E9B0 | Guts Tank | 01 | |
0x02E9B1 | Boobeam Trap | This value is unused as Boobeam Traps take 4 damage from being hit by "a weapon that does not have a 'no hit' flag." The location of this flag is unknown. | 00 |
0x02E9B2 | Wily Machine 2 | 04 | |
0x02E9B3 | Alien | FF |
Metal Blade
Address | Boss | Details | Default value |
0x02E9B4 | Heat Man | 01 | |
0x02E9B5 | Air Man | 00 | |
0x02E9B6 | Wood Man | 02 | |
0x02E9B7 | Bubble Man | 04 | |
0x02E9B8 | Quick Man | 00 | |
0x02E9B9 | Flash Man | 04 | |
0x02E9BA | Metal Man | 0E | |
0x02E9BB | Crash Man | 00 | |
0x02E9BC | Mecha Dragon | 00 | |
0x02E9BD | Picopico-kun | 00 | |
0x02E9BE | Guts Tank | 00 | |
0x02E9BF | Boobeam Trap | 00 | |
0x02E9C0 | Wily Machine 2 | 01 | |
0x02E9C1 | Alien | FF |
Internal Data for Mega Man 2
| |
---|---|