Mega Man 2/ROM map: Difference between revisions

From Data Crystal
Jump to navigation Jump to search
 
(71 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{rommap|game=Mega Man 2}}
{{rommap|game=Mega Man 2}}


===Stage Select===
==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)
|-
|}


* 0x02EE10 - 0x02F1CF - Screen Layout
===Heads-Up Display===
* 0x0340D8 - routine for checking if a level has been cleared
{| border="1" cellpadding="1"
* 0x0340E3 - First level of Wily's castle
|'''Address'''  || '''Function''' || '''Details''' || '''Default value'''
* 0x0340EC - 0x0340EF - routine for checking if a level has been cleared
|-
* 0x0340F6 - Confirming selection
| <tt>0x02C142</tt> || How fast the robot masters' health fills up || || <tt>03</tt>
* 0x0341BA - Preview boss music
|-
* 0x0342ED - Selection for Bubble Man cursor
| <tt>0x02E12B</tt> || How fast the fortress bosses' health fills up || || <tt>03</tt>
* 0x0344A9 - 0x0344B8 - Palette background for Stage Select Screen
|-
* 0x0344B9 - 0x0344C8 - Palette foreground for Stage Select Screen
| <tt>0x0352B2</tt> || How fast Mega Man's health fills up while paused || || <tt>03</tt>
* 0x034551 - Beginning of Sprites for Stage Select Screen
|-
* 0x03462E - Cursor position for Bubble Man Y position
| <tt>0x038315</tt> || Maximum Energy for Mega Man || || 1C
* 0x034637 - Cursor position for Bubble Man X position
|-
* 0x03464F - Lines for Boss posing screen Last byte (reverse order)
| <tt>0x03831B</tt> || How fast Mega Man's health fills up in-game || || <tt>07</tt>
* 0x03466E - Lines for Boss posing screen First byte (reverse order)
|-
* 0x034670 - Pointer for Bubble Man Stage from selection
| <tt>0x03835A</tt> || How fast Mega Man's weapon energy fills up in-game || || <tt>07</tt>
* 0x034671 - Pointer for Air Man Stage from selection
|-
* 0x034672 - Pointer for Quick Man Stage from selection
| <tt>0x03CF79</tt> || X position for energy bar || || <tt>18</tt>
* 0x034673 - Pointer for Wood Man Stage from selection
|-
* 0x034674 - Pointer for Crash Man Stage from selection
| <tt>0x03CF8F</tt> || X position for weapon bar || || <tt>10</tt>
* 0x034675 - Pointer for Flash Man Stage from selection
|-
* 0x034676 - Pointer for Metal Man Stage from selection
| <tt>0x03CFB1</tt> || X position for boss bar || || <tt>28</tt>
* 0x034677 - Pointer for Heat Man Stage from selection
|-
* 0x035994 - Path speed in Wily's castle map
| <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>
* 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
| <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>
|-
|}


===HP & Weapons Display===
====READY Sprites====
* 0x02C142 - How fast the robot masters' health fills up (Default: 03)
* <tt>0x0381CC</tt> <tt>-</tt> <tt>0x0381DF</tt> (<tt>0x14</tt> = sprite data)
* 0x02E12B - How fast the fortress bosses' health fills up (Default: 03)
* <tt>0x0381CC</tt> = Y position
* 0x0352B2 - How fast Mega Man's health fills up while paused (Default: 03)
* <tt>0x0381CD</tt> = PPU Tile
* 0x038315 - Maximum Energy for Mega Man (Default: 1C)
* <tt>0x0381CE</tt> = Palette, mirroring
* 0x03831B - How fast Mega Man's health fills up in game (Default: 07)
* <tt>0x0381CF</tt> = X position
* 0x03835A - How fast Mega Man's weapon energy fills up in game (Default: 07)
format repeats
* 0x03CF79 - X position for energy bar (Default: 18)
* 0x03CF8F - X position for weapon bar (Default: 10)
* 0x03CFB1 - X position for boss bar (Default: 28)
* 0x03CFD8 - Graphics for Energy Bar (Default: 87) [NOTE: this define 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]
* 0x03CFF5 - Y position for 1/7 energy (Default: 18)
* 0x03CFF6 - Y position for 2/7 energy (Default: 20)
* 0x03CFF7 - Y position for 3/7 energy (Default: 28)
* 0x03CFF8 - Y position for 4/7 energy (Default: 30)
* 0x03CFF9 - Y position for 5/7 energy (Default: 38)
* 0x03CFFA - Y position for 6/7 energy (Default: 40)
* 0x03CFFB - Y position for 7/7 energy (Default: 48)


===Sound Effects during Stage===
===Sound Effects during Stage===
* 0x03524E - changing selections in menu, Mega Man forming
{| border="1" cellpadding="1"
* 0x0381E0 - 0x0381ED - Music played for each level
|'''Address'''  || '''Function''' || '''Details''' || '''Default value'''
* 0x038685 - Sound for Mega Man landing
|-
* 0x03C59F - Sound for entering menu screen during action
| <tt>0x03524E</tt> || Changing selections in menu, Mega Man forming || || <tt>2F</tt>
* 0x03C802 - Sound effect for Mega Man beamed down
|-
| <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===
* 0x0352AC - The amount of energy that E-Tanks set (Default: 1C)
{| border="1" cellpadding="1"
* 0x03539E - Sound effect for turning off menu during action (Default: 30)
|'''Address'''  || '''Function''' || '''Details''' || '''Default value'''
* 0x03559E - 0x03562D - Pause menu tile layout
|-
| <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 - sprite data
* <tt>0x03563C</tt> <tt>-</tt> <tt>0x03564F</tt> (<tt>0x14</tt>) = sprite data
* 0x03563C - Y position
* <tt>0x03563C</tt> = Y position
* 0x03563D - PPU Tile
* <tt>0x03563D</tt> = PPU Tile
* 0x03563E - Palette, Mirroring
* <tt>0x03563E</tt> = Palette, mirroring
* 0x03563F - X position
* <tt>0x03563F</tt> = X position
  format repeats
  format repeats
====Weapon Icon Sprites====
====Weapon Icon Sprites====
* 0x035650 - 0x03565B - sprite data
* <tt>0x035650</tt> <tt>-</tt> <tt>0x03565B</tt> (<tt>0xC</tt>) = sprite data
* 0x035650 - P / Mega Buster (Default: 1F)
* <tt>0x035650</tt> = P / Mega Buster (Default: <tt>1F</tt>)
* 0x035651 - H / Atomic Fire (Default: 9F)
* <tt>0x035651</tt> = H / Atomic Fire (Default: <tt>9F</tt>)
* 0x035652 - A / Air Shooter (Default: 9B)
* <tt>0x035652</tt> = A / Air Shooter (Default: <tt>9B</tt>)
* 0x035653 - W / Leaf Shield (Default: 99)
* <tt>0x035653</tt> = W / Leaf Shield (Default: <tt>99</tt>)
* 0x035654 - B / Bubble Lead (Default: 9D)
* <tt>0x035654</tt> = B / Bubble Lead (Default: <tt>9D</tt>)
* 0x035655 - Q / Quick Boomerang (Default: 9C)
* <tt>0x035655</tt> = Q / Quick Boomerang (Default: <tt>9C</tt>)
* 0x035656 - F / Flash Stopper (Default: 9A)
* <tt>0x035656</tt> = F / Flash Stopper (Default: <tt>9A</tt>)
* 0x035657 - M / Metal Blade (Default: 9E)
* <tt>0x035657</tt> = M / Metal Blade (Default: <tt>9E</tt>)
* 0x035658 - C / Crash Bomber (Default: 10)
* <tt>0x035658</tt> = C / Crash Bomber (Default: <tt>10</tt>)
* 0x035659 - 1 / Item 1 (Default: 15)
* <tt>0x035659</tt> = 1 / Item 1 (Default: <tt>15</tt>)
* 0x03565A - 2 / Item 2 (Default: 16)
* <tt>0x03565A</tt> = 2 / Item 2 (Default: <tt>16</tt>)
* 0x03565B - 3 / Item 3 (Default: 17)
* <tt>0x03565B</tt> = 3 / Item 3 (Default: <tt>17</tt>)
 
====E-Tank Menu Sprite====
====E-Tank Menu Sprite====
* 0x03565C - 0x03565F - sprite data
* <tt>0x03565C</tt> <tt>-</tt> <tt>0x03565F</tt> (<tt>0x4</tt>) = sprite data
* 0x03565C - Y position
* <tt>0x03565C</tt> = Y position
* 0x03565D - PPU Tile
* <tt>0x03565D</tt> = PPU Tile
* 0x03565E - Palette, Mirroring
* <tt>0x03565E</tt> = Palette, mirroring
* 0x03565F - X position
* <tt>0x03565F</tt> = X position
====Extra Life Menu Sprite====
====Extra Life Menu Sprite====
* 0x035660 - 0x03566F - sprite data
* <tt>0x035660</tt> <tt>-</tt> <tt>0x03566F</tt> (<tt>0x10</tt>) = sprite data
* 0x035660 - Y position
* <tt>0x035660</tt> = Y position
* 0x035661 - PPU Tile
* <tt>0x035661</tt> = PPU Tile
* 0x035662 - Palette, Mirroring
* <tt>0x035662</tt> = Palette, mirroring
* 0x035663 - X position
* <tt>0x035663</tt> = X position
format repeats
 
===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
  format repeats


===Weapon Gained Screens===
===Weapon Get Screens===
* 0x037D4A - How fast every letter gets revealed (Default: 07)
{| 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) - data
* <tt>0x0249FE</tt> <tt>-</tt> <tt>0x024A8A</tt> (0x8D = Sprite data)
* 0x0249FF - Y position
* <tt>0x0249FF</tt> = Y position
* 0x024A00 - PPU Tile
* <tt>0x024A00</tt> = PPU Tile
* 0x024A01 - Palette, Mirroring
* <tt>0x024A01</tt> = Palette, mirroring
* 0x024A02 - X position
* <tt>0x024A02</tt> = X position
  format repeats
  format repeats
====Dr. Light====
====Dr. Light====
0x024A8B - 0x024AD7 (0x4D) - data
* <tt>0x024A8B</tt> <tt>-</tt> <tt>0x024AD7</tt> (0x4D = Sprite data)
* 0x024A8C - Y position
* <tt>0x024A8C</tt> = Y position
* 0x024A8D - PPU Tile
* <tt>0x024A8D</tt> = PPU Tile
* 0x024A8E - Palette, Mirroring
* <tt>0x024A8E</tt> = Palette, mirroring
* 0x024A8F - X position
* <tt>0x024A8F</tt> = X position
  format repeats
  format repeats


===Title===
===Title===
* 0x036235 - Sound effect for switching Normal and Difficult on Title
{| border="1" cellpadding="1"
* 0x0362D4 - Graphic to flash for selection Normal on Title
|'''Address'''  || '''Function''' || '''Details''' || '''Default value'''
* 0x0362D5 - Graphic to flash for selection Difficult on Title
|-
* 0x036322 - Removes all power ups and $00FD
| <tt>0x036235</tt> || Sound effect for switching between Normal and Difficult on Title || || <tt>2F</tt>
* 0x03686D - Sprite 1 for Title
|-
* 0x036877 - Sprite 2 for Title
| <tt>0x0362D1</tt> || Difficulty select arrow sprite tile || || <tt>A2</tt>
* 0x036AAF - 0x036ABE - Palette for sprites on Title
|-
* 0x036ACF - 0x036ADE - Palette background for Title
| <tt>0x0362D2</tt> || Palette, mirroring for arrow sprite || || <tt>01</tt>
* 0x037341 - Title Screen Last byte (reversed order)
|-
* 0x037700 - Title Screen First byte (reversed order)
| <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) || ||
|-
|}


===Password Stuff===
* 0x03700B - Password Y position (A,1)
* 0x03700C - Password Y position (A,2)
* 0x03700D - Password Y position (A,3)
* 0x03700E - Password Y position (A,4)
* 0x03700F - Password Y position (A,5)
* 0x037010 - Password Y position (B,1)
* 0x037011 - Password Y position (B,2)
* 0x037012 - Password Y position (B,3)
* 0x037013 - Password Y position (B,4)
* 0x037014 - Password Y position (B,5)
* 0x037015 - Password Y position (C,1)
* 0x037016 - Password Y position (C,2)
* 0x037017 - Password Y position (C,3)
* 0x037018 - Password Y position (C,4)
* 0x037019 - Password Y position (C,5)
* 0x03701A - Password Y position (D,1)
* 0x03701B - Password Y position (D,2)
* 0x03701C - Password Y position (D,3)
* 0x03701D - Password Y position (D,4)
* 0x03701E - Password Y position (D,5)
* 0x03701F - Password Y position (E,1)
* 0x037020 - Password Y position (E,2)
* 0x037021 - Password Y position (E,3)
* 0x037022 - Password Y position (E,4)
* 0x037023 - Password Y position (E,5)
* 0x037024 - Password X position (A,1)
* 0x037025 - Password X position (A,2)
* 0x037026 - Password X position (A,3)
* 0x037027 - Password X position (A,4)
* 0x037028 - Password X position (A,5)
* 0x037029 - Password X position (B,1)
* 0x03702A - Password X position (B,2)
* 0x03702B - Password X position (B,3)
* 0x03702C - Password X position (B,4)
* 0x03702D - Password X position (B,5)
* 0x03702E - Password X position (C,1)
* 0x03702F - Password X position (C,2)
* 0x037030 - Password X position (C,3)
* 0x037031 - Password X position (C,4)
* 0x037032 - Password X position (C,5)
* 0x037033 - Password X position (D,1)
* 0x037034 - Password X position (D,2)
* 0x037035 - Password X position (D,3)
* 0x037036 - Password X position (D,4)
* 0x037037 - Password X position (D,5)
* 0x037038 - Password X position (E,1)
* 0x037039 - Password X position (E,2)
* 0x03703A - Password X position (E,3)
* 0x03703B - Password X position (E,4)
* 0x03703C - Password X position (E,5)
* 0x037056 - Password related (A,1)
* 0x03709B - Password related (E,5)
===Items===
* 0x0380D5 - Beginning amount of Health (Default: 1C)
* 0x0382FD - Amount of HP large Energy returns (Default: 0A)
* 0x038301 - Amount of HP small Energy returns (Default: 02)
* 0x03806C - Amount of E-Tanks set after starting a new game (Default: 00)
* 0x038382 - Maximum amount of E-Tanks you can carry (Default: 04) [NOTE: Carrying anything higher than 4 on game over will generate bad passwords]
* 0x038390 - Maximum amount of lives you can carry (Default: 63)  [NOTE: Due to how lives actually work, 00 hex is game over and 01 hex is actually 00, so 63 hex would yield a 98 live limit instead of the usual 99]
* 0x03C1CB - Amount of E-Tanks set after continuing from a game over (Default: 00)
===Power Ups===
* 0x03C289 - Power Up from Heat Man
* 0x03C28A - Power Up from Air Man
* 0x03C28B - Power Up from Wood Man
* 0x03C28C - Power Up from Bubble Man
* 0x03C28D - Power Up from Quick Man
* 0x03C28E - Power Up from Flash Man
* 0x03C28F - Power Up from Metal Man
* 0x03C290 - Power Up from Crash Man
* 0x03C291 - Item # from Heat Man
* 0x03C292 - Item # from Air Man
* 0x03C293 - Item # from Wood Man
* 0x03C294 - Item # from Bubble Man
* 0x03C295 - Item # from Quick Man
* 0x03C296 - Item # from Flash Man
* 0x03C297 - Item # from Metal Man
* 0x03C298 - Item # from Crash Man
==Weapon Attributes==
==Weapon Attributes==
===Mega Buster===
===Mega Buster===
* 0x03DA7C - 0x03DA8F (0x14) - routine
* <tt>0x03DA7C</tt> <tt>-</tt> <tt>0x03DA8F</tt> (<tt>0x14</tt>) = Routine
  $DA6C:A5 27    LDA $0027 = #$00
  $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 $DA9D
  $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 @ $0460 = #$42
  $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 $DA9D
  $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 = #$00
  $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 = #$00
  $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 = #$03
  $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 @ $D414 = #$AD
  $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 = #$00
  $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
* 0x03DA91 - Sound effect for basic Mega Man shooting (Default: 24)
{| 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===
===Atomic Fire===
* 0x03DD61 - Charge time between first and second level (Default: 7D)
{| border="1" cellpadding="1"
* 0x03DD67 - Charge time between first and third level (Default: BB) [NOTE: if this value is lower than the value above, then that value is overwritten and it jumps straight to the third charge level]
|'''Address'''  || '''Function''' || '''Details''' || '''Default value'''
* 0x03DE46 - 0x03DE48 - Sound effect for Atomic Heat charge per level (Default: 35, 36, 37)
|-
* 0x03DE49 - 0x03DE50 - First and third color of Atomic Heat per level, including non-charging (Default: 0F15, 3115, 352C, 3030)
| <tt>0x03D317</tt> <tt>-</tt> <tt>0x03D319</tt> (USA), <tt>0x03D314</tt> <tt>-</tt> <tt>0x03D316</tt> (JPN) || Atomic Fire palette || || <tt>0F2815</tt>
* 0x03DE55 - 0x03DE57 - Amount of energy that Atomic Heat uses per shot per level (Default: 01, 06, 0A)
|-
| <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===
===Air Shooter===
* 0x03DAC3 - 0x03DAF5 (0x33) - routine
* <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 270: Line 608:
  $DAE4:38        SEC
  $DAE4:38        SEC
  $DAE5:60        RTS
  $DAE5:60        RTS
* 0x03DAE6 - Sound effect for Air Shooter (Default: 3F)
{| border="1" cellpadding="1"
* 0x03DAEE - Amount of energy that Air Shooter uses per shot (Default: 02)
|'''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>
|-
|}


===Leaf Shield===
===Leaf Shield===
* 0x03DF0D - Sound effect for Leaf Shield turning (Default: 01)
{| border="1" cellpadding="1"
* 0x03DF1F - Sound effect for Leaf Shield appearing (Default: 31)
|'''Address'''  || '''Function''' || '''Details''' || '''Default value'''
* 0x03DF72 - Amount of energy that Leaf Shield uses per shot (Default: 03)
|-
| <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===
===Bubble Lead===
* 0x03DB34 - Sound effect for Bubble Lead (Default: 24)
{| border="1" cellpadding="1"
* 0x03DB3D - Amount of Bubble Lead shots before reducing energy (Default: 02)
|'''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) - routine
* <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
Line 316: Line 681:
  $DB78:38        SEC
  $DB78:38        SEC
  $DB79:60        RTS
  $DB79:60        RTS
* 0x03DB54 - Fire rate speed for Quick Boomerang (Default: 0B)
{| border="1" cellpadding="1"
* 0x03DB6F - Sound effect for Quick Boomerang (Default: 24)
|'''Address'''  || '''Function''' || '''Details''' || '''Default value'''
* 0x03DB78 - Amount of Quick Boomerang shots before reducing energy (Default: 08)
|-
| <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) - routine
* <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
Line 352: Line 726:
  $E012:20 EF EE  JSR $EEEF
  $E012:20 EF EE  JSR $EEEF
  $E015:60        RTS
  $E015:60        RTS
* 0x03DFE2 - How far Quick Boomerang flies out (Default: 12)
{| border="1" cellpadding="1"
* 0x03DFFF - How far Quick Boomerang flies down before coming up (Default: 40)
|'''Address'''  || '''Function''' || '''Details''' || '''Default value'''
* 0x03E007 - How far Quick Boomerang flies back (Default: 23)
|-
| <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===
===Flash Stopper===
* 0x03DC41 - 0x03DC5C (0x1C) - routine
* <tt>0x03DC41</tt> <tt>-</tt> <tt>0x03DC5C</tt> (<tt>0x1C</tt>) = Routine
  $DC31:A5 27    LDA $0027 = #$00
  $DC31:A5 27    LDA $0027 = #$00
  $DC33:29 02    AND #$02
  $DC33:29 02    AND #$02
Line 370: Line 751:
  $DC48:A9 21    LDA #$21
  $DC48:A9 21    LDA #$21
  $DC4A:20 51 C0  JSR $C051
  $DC4A:20 51 C0  JSR $C051
* 0x03DC59 - Sound effect for Flash Stopper (Default: 21)
{| 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) - routine
* <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
Line 400: 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
* 0x03D49D - Duration until weapon energy starts to drain (Default: 0F)
{| 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===
===Metal Blade===
* 0x03DC5D - 0x03DC65 (0x9) - routine
* <tt>0x03DC5D</tt> <tt>-</tt> <tt>0x03DC65</tt> (<tt>0x9</tt>) = Routine
  $DC4D:A9 0F    LDA #$0F
  $DC4D:A9 0F    LDA #$0F
  $DC4F:85 36    STA $0036 = #$00
  $DC4F:85 36    STA $0036 = #$00
Line 410: Line 805:
  $DC56:38        SEC
  $DC56:38        SEC
  $DC57:60        RTS
  $DC57:60        RTS
* 0x03DBC9 - Sound effect for Metal Blade (Default: 23)
{| border="1" cellpadding="1"
* 0x03DBD2 - Amount of Metal Blade shots before reducing energy (Default: 04)
|'''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===
===Crash Bomber===
* 0x03DBA6 - Sound effect for Crash Bomber (Default: 24)
{| border="1" cellpadding="1"
* 0x03DB99 - Amount of energy that Crash Bomber uses per shot (Default: 04)
|'''Address'''  || '''Function''' || '''Details''' || '''Default value'''
* 0x03E089 - Sound effect for Crash Bomber clasping wall (Default: 2E)
|-
* 0x03E09C - Timer until Crash Bomber detonates (Default: 7E)
| <tt>0x03D333</tt> <tt>-</tt> <tt>0x03D335</tt> (USA), <tt>0x03D330</tt> <tt>-</tt> <tt>0x03D332</tt> (JPN) || Crash Bomber palette || || <tt>0F3026</tt>
* 0x03E0DA - Sound effect for Crash Bomber exploding (Default: 2B)
|-
| <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===
===Items===
* 0x03DC85 - Amount of energy that Item 1 uses per use (Default: 02)
{| border="1" cellpadding="1"
* 0x03E230 - Amount of time before subtracting one energy from Item 2 (Default: 13)
|'''Address'''  || '''Function''' || '''Details''' || '''Default value'''
* 0x03E34C - Amount of time before subtracting one energy from Item 3 (Default: 1F)
|-
| <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===
* 0x02E9C4 - Wood Man's contact damage
{| border="1" cellpadding="1"
* 0x02E9C8 - Flash Man's contact damage
|'''Address'''  || '''Function''' || '''Details''' || '''Default value'''
* 0x03ED76 - Shelled Fish's contact damage
|-
* 0x03ED78 - Large Frog's contact damage
| <tt>0x02E9C4</tt> || Wood Man's contact damage || || <tt>08</tt>
* 0x03ED79 - Small Frog's contact damage
|-
* 0x03ED82 - (16) Ball Bat attack
| <tt>0x02E9C8</tt> || Flash Man's contact damage || || <tt>06</tt>
* 0x03ED83 - (17) Rabbit attack
|-
* 0x03ED84 - (18) Rabbit's projectile attack (carrot)
| <tt>0x03ED6C</tt> || Normal Shrink's contact damage || || <tt>04</tt>
* 0x03ED85 - (19) Dog's attack
|-
* 0x03ED87 - (1B) Dog's fire projectile attack
| <tt>0x03ED6D</tt> || Lantern Fish Shrink's contact damage || || <tt>04</tt>
* 0x03ED89 - (1D) Ape's attack
|-
* 0x03ED8B - (1F) Chicken's contact damage
| <tt>0x03ED74</tt> || Snapper's contact damage || || <tt>04</tt>
* 0x03EDA1 - (35) Sniper Joe's projectile attack (round ball)
|-
* 0x03EDA4 - (38) Large Bird's attack
| <tt>0x03ED76</tt> || Crabbot's contact damage || || <tt>04</tt>
* 0x03EDA6 - (3A) Large Bird's egg attack
|-
* 0x03EDA8 - (3C) Small Bird's attack
| <tt>0x03ED77</tt> || Crabbot's shell damage || || <tt>04</tt>
* 0x03EDB7 - One arm shooter's attack
|-
* 0x03EDB9 - One arm shooter's projectile attack (pellet)
| <tt>0x03ED78</tt> || Grand Croaker's contact damage || || <tt>04</tt>
* 0x03EDBA - Body of Sniper Joe's machine attack
|-
* 0x03EDBB - Sniper Joe's attack
| <tt>0x03ED79</tt> || Petit Croaker's contact damage || || <tt>01</tt>
* 0x03EDBC - (50) Snake-like Pod's attack
|-
* 0x03EDBD - Snake-like Pod's projectile attack (snake rod)
| <tt>0x03ED82</tt> || Bubble Bat's contact damage || || <tt>04</tt>
* 0x03EDCD - Wood Man's Leaf Shield
|-
* 0x03EDCE - Falling Leaves from Wood Man
| <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>
|-
|}


==Boss Behavior==
===Heat Man===
===Heat Man===
* <tt>'''0x02C16E to 0x02C---''' = Routine for attack</tt>
* <tt>0x02C16E</tt> <tt>-</tt> <tt>0x02C---</tt> (<tt>0x??</tt>) = Routine for attack
* <tt>0x02C207 = (07) Projectile 1 y-velocity</tt>
{| border="1" cellpadding="1"
* <tt>0x02C208 = (05) Projectile 2 y-velocity</tt>
|'''Address'''  || '''Function''' || '''Details''' || '''Default value'''
* <tt>0x02C209 = (03) Projectile 3 y-velocity</tt>
|-
* <tt>0x02C20A = (3A) Projectile 1 x-velocity; lower value means faster velocity</tt>
| <tt>0x02C207</tt> || Atomic Fire 1's y-velocity || || <tt>07</tt>
* <tt>0x02C20B = (2E) Projectile 2 x-velocity</tt>
|-
* <tt>0x02C20C = (1C) Projectile 3 x-velocity</tt>
| <tt>0x02C208</tt> || Atomic Fire 2's y-velocity || || <tt>05</tt>
* <tt>0x02C1BB = (58) Projectile type </tt>
|-
* <tt>0x02C1A1 = (02) # Projectiles thrown; extra shots tend to be glitchy</tt>
| <tt>0x02C209</tt> || Atomic Fire 3's y-velocity || || <tt>03</tt>
* <tt>0x02C253 = (04) Charge velocity</tt>
|-
* <tt>0x02C29D = (1F) Delay 1 before charge*</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>0x02C29E = (3E) Delay 2 before charge*</tt>
|-
* <tt>0x02C29F = (5D) Delay 3 before charge*</tt>
| <tt>0x02C20B</tt> || Atomic Fire 2's x-velocity || || <tt>2E</tt>
: *After Heat Man takes damage, he will delay temporarily before doing his charge attack.  One of these three values is randomly chosen as the delay interval, in frames.
|-
| <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===
===Flash Man===
* <tt>'''0x02C966 to 0x02CAF8''' = Routine for attack</tt>
* <tt>0x02C966</tt> <tt>-</tt> <tt>0x02CAF8</tt> (<tt>0x193</tt> = Routine for attack
* <tt>0x02C97D = (06) Walk velocity fraction</tt>
{| border="1" cellpadding="1"
* <tt>0x02C982 = (01) Walk velocity integer</tt>
|'''Address'''  || '''Function''' || '''Details''' || '''Default value'''
* <tt>0x02C98B = (BB) Delay before time stopper; only counts down while boss is walking</tt>
|-
* <tt>0x02CA09 = (06) Number of projectiles to shoot</tt>
| <tt>0x02C97D</tt> || Walk x-velocity fraction || || <tt>06</tt>
* <tt>0x02CA52 = () Length of time stopper/projectile frequency?</tt>
|-
* <tt>0x02CA71 = (35) Projectile type</tt>
| <tt>0x02C982</tt> || Walk x-velocity integer || || <tt>01</tt>
* <tt>0x02CA81 = (08) Projectile x-velocity</tt>
|-
* <tt>0x02CAC6 = (00) Jump x-velocity integer</tt>
| <tt>0x02C98B</tt> || Delay before Time Stopper || It only counts down while the boss is walking. || <tt>BB</tt>  
* <tt>0x02CACE = (04) Jump y-velocity integer</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===
===Metal Man===
* <tt>0x02CBB5 = (06) Jump Height 1; higher than 07 bonks the ceiling</tt>
{| border="1" cellpadding="1"
* <tt>0x02CBB6 = (05) Jump Height 2</tt>
|'''Address'''  || '''Function''' || '''Details''' || '''Default value'''
* <tt>0x02CBB7 = (04) Jump Height 3</tt>
|-
* <tt>0x02CC1D = (06) Metal blade frequency? changes behavior if different than 06</tt>
| <tt>0x02CBB5</tt> || Jump height 1 || Anything higher than 07 will make Metal Man bonk the ceiling. || <tt>06</tt>
* <tt>0x02CC29 = (20) Sound of Metal Blade</tt>
|-
* <tt>0x02CC2D = () Projectile type</tt>
| <tt>0x02CBB6</tt> || Jump height 2 || || <tt>05</tt>
* <tt>0x02CC3F = (04) Speed of Metal Blade</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===
===Crash Man===
* <tt>0x02CCF2 = (47) Walk velocity fraction</tt>
{| border="1" cellpadding="1"
* <tt>0x02CCF7 = (01) Walk velocity integer</tt>
|'''Address'''  || '''Function''' || '''Details''' || '''Default value'''
* <tt>0x02CD07 = (27) Jump behavior*</tt>
|-
: *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>0x02CCF2</tt> || Walk x-velocity fraction || || <tt>47</tt>
* <tt>0x02CD2A = (06) Jump velocity integer</tt>
|-
* <tt>0x02CDAF = (44) Jump velocity fraction</tt>
| <tt>0x02CCF7</tt> || Walk x-velocity integer || || <tt>01</tt>
* <tt>0x02CDD3 = (5E) Not sure, change to another value to have him always shoot when jumping</tt>
|-
* <tt>0x02CDEE = (06) Crash Bomber x-velocity integer</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===
===Quick Man===
* <tt>0x02C86E = (03) Number of boomerangs</tt>
{| border="1" cellpadding="1"
* <tt>0x02C872 = (59) Projectile Type</tt>
|'''Address'''  || '''Function''' || '''Details''' || '''Default value'''
* <tt>0x02C882 = (25) Boomerang delay in frames before second motion</tt>
|-
* <tt>0x02C887 = (04) Boomerang velocity first motion</tt>
| <tt>0x02C86E</tt> || Number of Quick Boomerangs || || <tt>03</tt>
* <tt>0x03B726 = (04) Boomerang velocity second motion</tt>
|-
* <tt>0x02C8A3 = (07) Middle jump y-velocity</tt>
| <tt>0x02C872</tt> || Projectile type || || <tt>59</tt>
* <tt>0x02C8A4 = (08) High jump y-velocity</tt>
|-
* <tt>0x02C8A5 = (04) Low jump y-velocity</tt>
| <tt>0x02C882</tt> || Quick Boomerang delay in frames before second motion || || <tt>25</tt>
* <tt>0x02C8E4 = (3E) Running time in frames</tt>
|-
* <tt>0x02C8DF = (02) Running velocity integer</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===
===Bubble Man===
* <tt>0x02C70B = (FF) Landing speed integer</tt>
{| border="1" cellpadding="1"
* <tt>0x02C6D3 = (01) Rising speed integer</tt>
|'''Address'''  || '''Function''' || '''Details''' || '''Default value'''
* <tt>0x02C74F = (5A) Gun projectile type</tt>
|-
| <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===
===Wood Man===
* <tt>0x02C537 = (12) Delay between rising leaves</tt>
{| border="1" cellpadding="1"
* <tt>0x02C5DD = (04) Jump y-velocity integer</tt>
|'''Address'''  || '''Function''' || '''Details''' || '''Default value'''
* <tt>0x02C5E2 = (01) Jump x-velocity integer</tt>
|-
* <tt>0x02C5A9 = (04) Leaf Shield launch x-velocity integer</tt>
| <tt>0x02C537</tt> || Delay between rising leaves || || <tt>12</tt>
* <tt>0x02C553 = (03) Number of falling leaves</tt>
|-
* <tt>0x02C576 = (02) Falling leaf x-velocity integer</tt>
| <tt>0x02C5DD</tt> || Jump y-velocity integer || || <tt>04</tt>
* <tt>0x02C567 = (20) Falling leaf y-pos start</tt>
|-
* <tt>0x02C522 = () Leaf Shield projectile type</tt>
| <tt>0x02C5E2</tt> || Jump x-velocity integer || || <tt>01</tt>
* <tt>0x02C557 = () Falling leaves projectile type</tt>
|-
* <tt>0x02C542 = () Rising leaves projectile type</tt>
| <tt>0x02C5A9</tt> || Leaf Shield launch x-velocity integer || || <tt>04</tt>
* <tt>0x03DA34 = () Leaf Shield fall speed???</tt>
|-
* <tt>0x03D8F6 = (02) ??*</tt>
| <tt>0x02C553</tt> || Number of falling leaves || || <tt>03</tt>
: *Change to 0x06 for an interesting leaf shield pattern
|-
* <tt>0x03B855 = (20) Leaf fall speed?*</tt>
| <tt>0x02C576</tt> || Falling leaf x-velocity integer || || <tt>02</tt>
: *Decrease value to increase speed. At 0x40, it doesn't fall. Change to a high number to instantly despawn leaves for a fast pattern.
|-
| <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===
===Air Man===
* <tt>'''0x02C2F3 to 0x02C50A''' = Routine for attack</tt>
* <tt>0x02C2F3</tt> <tt>-</tt> <tt>0x02C50A</tt> (<tt>0x218</tt>) = Routine for attack
* <tt>0x02C30C = (03) Number of tornado patterns before jump phase</tt>
* <tt>0x02C30C</tt> = Number of tornado patterns before jump phase <tt>03</tt>
* <tt>0x02C393 to 0x02C428 (0096) = Tornado properties</tt>
* <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 to 0x02C3B0 (001E) = y-velocity fractions*</tt>
** <tt>0x02C393</tt> <tt>-</tt> <tt>0x02C3B0</tt> (0x1E) = y-velocity fractions
*** <tt>0x02C393 to 0x02C398 (0006) = Pattern #1 tornadoes</tt>
** <tt>0x02C3B1</tt> <tt>-</tt> <tt>0x02C3CE</tt> (0x1E) = y-velocity integers
*** <tt>0x02C399 to 0x02C39E (0006) = Pattern #2 tornadoes</tt>
** <tt>0x02C3CF</tt> <tt>-</tt> <tt>0x02C3EC</tt> (0x1E) = x-velocity fractions
*** <tt>0x02C39F to 0x02C3A4 (0006) = Pattern #3 tornadoes</tt>
** <tt>0x02C3ED</tt> <tt>-</tt> <tt>0x02C40A</tt> (0x1E) = x-velocity integers
*** <tt>0x02C3A5 to 0x02C3AA (0006) = Pattern #4 tornadoes</tt>
** <tt>0x02C40B</tt> <tt>-</tt> <tt>0x02C428</tt> (0x1E) = delay before tornado finishes deploying
*** <tt>0x02C3AB to 0x02C3B0 (0006) = Pattern #5 tornadoes</tt>
* <tt>0x02C4DD</tt> = First jump y-velocity fraction <tt>E6</tt>
** <tt>0x02C3B1 to 0x02C3CE (001E) = y-velocity integers*</tt>
* <tt>0x02C4DE</tt> = Second jump y-velocity fraction <tt>76</tt>
** <tt>0x02C3CF to 0x02C3EC (001E) = x-velocity fractions*</tt>
* <tt>0x02C4E0</tt> = First jump y-velocity integer <tt>04</tt>
** <tt>0x02C3ED to 0x02C40A (001E) = x-velocity integers*</tt>
* <tt>0x02C4E1</tt> = Second jump y-velocity integer <tt>07</tt>
** <tt>0x02C40B to 0x02C428 (001E) = delay before tornado finishes deploying*</tt>
* <tt>0x02C4E3</tt> = First jump x-velocity fraction <tt>39</tt>
: *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>0x02C4E4</tt> = Second jump x-velocity fraction <tt>9A</tt>
* <tt>0x02C4DD = (E6) First jump y-velocity fraction</tt>
* <tt>0x02C4E6</tt> = First jump x-velocity integer <tt>01</tt>
* <tt>0x02C4DE = (76) Second jump y-velocity fraction</tt>
* <tt>0x02C4E7</tt> = Second jump x-velocity integer <tt>01</tt>
* <tt>0x02C4E0 = (04) First jump y-velocity integer</tt>
* <tt>0x02C4E1 = (07) Second jump y-velocity integer</tt>
* <tt>0x02C4E3 = (39) First jump x-velocity fraction</tt>
* <tt>0x02C4E4 = (9A) Second jump x-velocity fraction</tt>
* <tt>0x02C4E6 = (01) First jump x-velocity integer</tt>
* <tt>0x02C4E7 = (01) Second jump x-velocity integer</tt>


===Wily Machine===
===Wily Machine===
* <tt>0x02DA2E = (02) Phase 1 weakness #1 to disable*</tt>
{| border="1" cellpadding="1"
* <tt>0x02DA32 = (05) Phase 1 weakness #2 to disable*</tt>
|'''Address'''  || '''Function''' || '''Details''' || '''Default value'''
* <tt>0x02DA3A = (01) Phase 2 weakness to disable*</tt>
|-
: *Only one damage table is provided for Wily Machine's weaknesses. However, during each phase of fighting Wily Machine, the game manually ignores damage when you have certain weapons equipped, giving the impression that each phase has different weaknesses. Normally, in Phase 1, damage is negated if you have Air Shooter or Quick Boomerang equipped. In Phase 2, damage is negated if you have Atomic Fire equipped.
| <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 Values==
==Boss Weakness Damage==
The data below shows how much damage each boss will take from a specific weapon. In the ROM, each weapon is grouped and is separate from the Robot Master data. This is based on the USA version of Mega Man 2. Japanese values are located further up in the ROM.
'''(Credit to [[Overseer190]])'''


It should be noted that any hex value from 00 to 79 (0 to 127) deals damage to the enemy, whereas hex values ranging from 80 to FF (128 to 255) will fully heal the enemy.
[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.]


'''(Credit to [[Overseer190]])'''
===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>
|-
|}


====Mega Buster====
*0x02E952: HeatMan (Default is 02)
*0x02E953: AirMan (Default is 02)
*0x02E954: WoodMan (Default is 01)
*0x02E955: BubbleMan (Default is 01)
*0x02E956: QuickMan (Default is 02)
*0x02E957: FlashMan (Default is 02)
*0x02E958: MetalMan (Default is 01)
*0x02E959: CrashMan (Default is 01)
*0x02E95A: Mecha Dragon (Default is 01)
*0x02E95B: Picopico-kun (Default is 02)
*0x02E95C: Guts Tank (Default is 02)
*0x02E95D: Boobeam Trap (Default is 00)
*0x02E95E: Wily Machine 2 (Default is 02)
*0x02E95F: Alien (Default is FF)


====Atomic Fire====
===Atomic Fire===
The game treats this weapon differently than the others because of its charging feature. An uncharged shot directly takes from the Mega Buster damage chart as seen above. A partially charged shot takes the Mega Buster table as well, but multiplies the value by 2 and always rounds up to the nearest whole number. A charged shot '''uses its own table''' as seen below...
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>
|-
|}


*0x02E960: HeatMan (Default is FF)
===Air Shooter===
*0x02E961: AirMan (Default is 06)
{| border="1" cellpadding="1"
*0x02E962: WoodMan (Default is 0E)
|'''Address'''  || '''Boss''' || '''Details''' || '''Default value'''
*0x02E963: BubbleMan (Default is 00)
|-
*0x02E964: QuickMan (Default is 0A)
| <tt>0x02E96E</tt> || Heat Man  || || <tt>02</tt>
*0x02E965: FlashMan (Default is 06)
|-
*0x02E966: MetalMan (Default is 04)
| <tt>0x02E96F</tt> || Air Man || || <tt>00</tt>
*0x02E967: CrashMan (Default is 06)
|-
*0x02E968: Mecha Dragon (Default is 08)
| <tt>0x02E970</tt> || Wood Man || || <tt>04</tt>
*0x02E969: Picopico-kun (Default is 02)
|-
*0x02E96A: Guts Tank (Default is 08)
| <tt>0x02E971</tt> || Bubble Man || || <tt>00</tt>
*0x02E96B: Boobeam Trap (Default is 00)
|-
*0x02E96C: Wily Machine 2 (Default is 0E)
| <tt>0x02E972</tt> || Quick Man || || <tt>02</tt>
*0x02E96D: Alien (Default is FF)
|-
| <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>
|-
|}


====Air Shooter====
===Leaf Shield===
*0x02E96E: HeatMan (Default is 02)
{| border="1" cellpadding="1"
*0x02E96F: AirMan (Default is 00)
|'''Address'''  || '''Boss''' || '''Details''' || '''Default value'''
*0x02E970: WoodMan (Default is 04)
|-
*0x02E971: BubbleMan (Default is 00)
| <tt>0x02E97C</tt> || Heat Man || || <tt>00</tt>
*0x02E972: QuickMan (Default is 02)
|-
*0x02E973: FlashMan (Default is 00)
| <tt>0x02E97D</tt> || Air Man || || <tt>08</tt>
*0x02E974: MetalMan (Default is 00)
|-
*0x02E975: CrashMan (Default is 0A)
| <tt>0x02E97E</tt> || Wood Man || || <tt>FF</tt>
*0x02E976: Mecha Dragon (Default is 00)
|-
*0x02E977: Picopico-kun (Default is 00)
| <tt>0x02E97F</tt> || Bubble Man  || ||<tt>00</tt>
*0x02E978: Guts Tank (Default is 00)
|-
*0x02E979: Boobeam Trap (Default is 00)
| <tt>0x02E980</tt> || Quick Man || || <tt>00</tt>
*0x02E97A: Wily Machine 2 (Default is 01)
|-
*0x02E97B: Alien (Default is FF)
| <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>
|-
|}


====Leaf Shield====
===Bubble Lead===
*0x02E97C: HeatMan (Default is 00)
{| border="1" cellpadding="1"
*0x02E97D: AirMan (Default is 08)
|'''Address'''  || '''Boss''' || '''Details''' || '''Default value'''
*0x02E97E: WoodMan (Default is FF)
|-
*0x02E97F: BubbleMan (Default is 00)
| <tt>0x02E98A</tt> || Heat Man || || <tt>06</tt>
*0x02E980: QuickMan (Default is 00)
|-
*0x02E981: FlashMan (Default is 00)
| <tt>0x02E98B</tt> || Air Man || || <tt>00</tt>
*0x02E982: MetalMan (Default is 00)
|-
*0x02E983: CrashMan (Default is 00)
| <tt>0x02E98C</tt> || Wood Man || || <tt>00</tt>
*0x02E984: Mecha Dragon (Default is 00)
|-
*0x02E985: Picopico-kun (Default is 00)
| <tt>0x02E98D</tt> || Bubble Man || || <tt>FF</tt>
*0x02E986: Guts Tank (Default is 00)
|-
*0x02E987: Boobeam Trap (Default is 00)
| <tt>0x02E98E</tt> || Quick Man || || <tt>00</tt>
*0x02E988: Wily Machine 2 (Default is 00)
|-
*0x02E989: Alien (Default is FF)
| <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>
|-
|}


====Bubble Lead====
===Quick Boomerang===
*0x02E98A: HeatMan (Default is 06)
{| border="1" cellpadding="1"
*0x02E98B: AirMan (Default is 00)
|'''Address'''  || '''Boss''' || '''Details''' || '''Default value'''
*0x02E98C: WoodMan (Default is 00)
|-
*0x02E98D: BubbleMan (Default is 00)
| <tt>0x02E998</tt> || Heat Man || || <tt>02</tt>
*0x02E98E: QuickMan (Default is 00)
|-
*0x02E98F: FlashMan (Default is 02)
| <tt>0x02E999</tt> || Air Man || || <tt>02</tt>
*0x02E990: MetalMan (Default is 00)
|-
*0x02E991: CrashMan (Default is 00)
| <tt>0x02E99A</tt> || Wood Man || || <tt>00</tt>
*0x02E992: Mecha Dragon (Default is 00)
|-
*0x02E993: Picopico-kun (Default is 00)
| <tt>0x02E99B</tt> || Bubble Man || || <tt>02</tt>
*0x02E994: Guts Tank (Default is 00)
|-
*0x02E995: Boobeam Trap (Default is 01)
| <tt>0x02E99C</tt> || Quick Man || || <tt>00</tt>
*0x02E996: Wily Machine 2 (Default is 00)
|-
*0x02E997: Alien (Default is 01)
| <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>
|-
|}


====Quick Boomerang====
===Crash Bombs===
*0x02E998: HeatMan (Default is 02)
{| border="1" cellpadding="1"
*0x02E999: AirMan (Default is 02)
|'''Address'''  || '''Boss''' || '''Details''' || '''Default value'''
*0x02E99A: WoodMan (Default is 00)
|-
*0x02E99B: BubbleMan (Default is 02)
| <tt>0x02E9A6</tt> || Heat Man || || <tt>FF</tt>
*0x02E99C: QuickMan (Default is 00)
|-
*0x02E99D: FlashMan (Default is 00)
| <tt>0x02E9A7</tt> || Air Man || || <tt>00</tt>
*0x02E99E: MetalMan (Default is 04)
|-
*0x02E99F: CrashMan (Default is 00)
| <tt>0x02E9A8</tt> || Wood Man || || <tt>02</tt>
*0x02E9A0: Mecha Dragon (Default is 01)
|-
*0x02E9A1: Picopico-kun (Default is 00)
| <tt>0x02E9A9</tt> || Bubble Man || || <tt>02</tt>
*0x02E9A2: Guts Tank (Default is 02)
|-
*0x02E9A3: Boobeam Trap (Default is 00)
| <tt>0x02E9AA</tt> || Quick Man || || <tt>04</tt>
*0x02E9A4: Wily Machine 2 (Default is 01)
|-
*0x02E9A5: Alien (Default is FF)
| <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>
|-
|}


====Crash Bombs====
===Metal Blade===
ROM address "0x02E9B2" 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...
{| border="1" cellpadding="1"
 
|'''Address'''  || '''Boss''' || '''Details''' || '''Default value'''
*0x02E9A6: HeatMan (Default is FF)
|-
*0x02E9A7: AirMan (Default is 00)
| <tt>0x02E9B4</tt> || Heat Man || || <tt>01</tt>
*0x02E9A8: WoodMan (Default is 02)
|-
*0x02E9A9: BubbleMan (Default is 02)
| <tt>0x02E9B5</tt> || Air Man || || <tt>00</tt>
*0x02E9AA: QuickMan (Default is 04)
|-
*0x02E9AB: FlashMan (Default is 00)
| <tt>0x02E9B6</tt> || Wood Man || || <tt>02</tt>
*0x02E9AC: MetalMan (Default is 03)
|-
*0x02E9AD: CrashMan (Default is 00)
| <tt>0x02E9B7</tt> || Bubble Man || || <tt>04</tt>
*0x02E9AE: Mecha Dragon (Default is 01)
|-
*0x02E9AF: Picopico-kun (Default is 00)
| <tt>0x02E9B8</tt> || Quick Man || || <tt>00</tt>
*0x02E9B0: Guts Tank (Default is 01)
|-
*0x02E9B1: Boobeam Trap (Default is 01*)
| <tt>0x02E9B9</tt> || Flash Man || || <tt>04</tt>
*0x02E9B2: Wily Machine 2 (Default is 01)
|-
*0x02E9B3: Alien (Default is FF)
| <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>
|-
|}


====Metal Blade====
{{Internal Data}}
*0x02E9B4: HeatMan (Default is 01)
*0x02E9B5: AirMan (Default is 00)
*0x02E9B6: WoodMan (Default is 02)
*0x02E9B7: BubbleMan (Default is 04)
*0x02E9B8: QuickMan (Default is 00)
*0x02E9B9: FlashMan (Default is 04)
*0x02E9BA: MetalMan (Default is 0E)
*0x02E9BB: CrashMan (Default is 00)
*0x02E9BC: Mecha Dragon (Default is 00)
*0x02E9BD: Picopico-kun (Default is 00)
*0x02E9BE: Guts Tank (Default is 00)
*0x02E9BF: Boobeam Trap (Default is 00)
*0x02E9C0: Wily Machine 2 (Default is 01)
*0x02E9C1: Alien (Default is FF)

Latest revision as of 14:27, 24 January 2024

Chip tiny.png 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