Mega Man 2/ROM map: Difference between revisions

From Data Crystal
Jump to navigation Jump to search
m (Added a Byte for Quickman's AI)
Line 408: Line 408:


===Boss Behavior===
===Boss Behavior===
====Heat Man's routine for attack====
====Heat Man====
* 0x02C16E - 0x02C1FE
* <tt>'''0x02C16E to 0x02C---''' = Routine for attack</tt>
0x02C1BB - Projectile
* <tt>0x02C207 = (07) Projectile 1 y-velocity</tt>
0x2c1A1 - # Projectiles thrown; extra shots tend to be glitchy
* <tt>0x02C208 = (05) Projectile 2 y-velocity</tt>
* <tt>0x02C209 = (03) Projectile 3 y-velocity</tt>
* <tt>0x02C20A = (3A) Projectile 1 x-velocity; lower value means faster velocity</tt>
* <tt>0x02C20B = (2E) Projectile 2 x-velocity</tt>
* <tt>0x02C20C = (1C) Projectile 3 x-velocity</tt>
* <tt>0x02C1BB = (58) Projectile type </tt>
* <tt>0x02C1A1 = (02) # Projectiles thrown; extra shots tend to be glitchy</tt>
* <tt>0x02C253 = (04) Charge velocity</tt>
* <tt>0x02C29D = (1F) Delay 1 before charge*</tt>
* <tt>0x02C29E = (3E) Delay 2 before charge*</tt>
* <tt>0x02C29F = (5D) Delay 3 before charge*</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.


====Flash Man====
* <tt>'''0x02C966 to 0x02CAF8''' = Routine for attack</tt>
* <tt>0x02C97D = (06) Walk velocity fraction</tt>
* <tt>0x02C982 = (01) Walk velocity integer</tt>
* <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>0x02CA52 = () Length of time stopper/projectile frequency?</tt>
* <tt>0x02CA71 = (35) Projectile type</tt>
* <tt>0x02CA81 = (08) Projectile x-velocity</tt>
* <tt>0x02CAC6 = (00) Jump x-velocity integer</tt>
* <tt>0x02CACE = (04) Jump y-velocity integer</tt>


====Flash Man's routine for attack====
====Metal Man====
* 0x02C966 - 0x02CAF8
* <tt>0x02CBB5 = (06) Jump Height 1; higher than 07 bonks the ceiling</tt>
0x02C98B - Frequency for time stopper?
* <tt>0x02CBB6 = (05) Jump Height 2</tt>
0x02CA71 - Projectile
* <tt>0x02CBB7 = (04) Jump Height 3</tt>
0x2CAC6 - Jump distance
* <tt>0x02CC1D = (06) Metal blade frequency? changes behavior if different than 06</tt>
0x2CACE - Jump height
* <tt>0x02CC29 = (20) Sound of Metal Blade</tt>
0x2CA52 - Length of time stopper/projectile frequency?
* <tt>0x02CC2D = () Projectile type</tt>
0x2CA81 - Projectile speed
* <tt>0x02CC3F = (04) Speed of Metal Blade</tt>
0x2CA09 - Number of projectiles to shoot


====Metal Man's routine for attack====
====Crash Man====
* ???
* <tt>0x02CCF2 = (47) Walk velocity fraction</tt>
0x2CC2D - Projectile
* <tt>0x02CCF7 = (01) Walk velocity integer</tt>
0x2cc3f - Speed of Metal blade
* <tt>0x02CD07 = (27) Jump behavior*</tt>
0x2CC29 - Sound for metal blade
: *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.
0x2CC1d - Metal blade frequency
* <tt>0x02CD2A = (06) Jump velocity integer</tt>
* <tt>0x02CDAF = (44) Jump velocity fraction</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>


====Crash Man's routine for attack====
====Quick Man====
* ???
* <tt>0x02C86E = (03) Number of boomerangs</tt>
0x2CCF7 - Running speed.
* <tt>0x02C872 = (59) Projectile Type</tt>
0x2CD2A - Jump height.
* <tt>0x02C882 = (25) Boomerang delay in frames before second motion</tt>
0x2CD07 - Not sure, change to 17 and he's always jumping.
* <tt>0x02C887 = (04) Boomerang velocity first motion</tt>
0x2CDAF - Jump speed?
* <tt>0x03B726 = (04) Boomerang velocity second motion</tt>
0x2CDD3 - Not sure, change to 55 and he's always shooting bombs when jumping
* <tt>0x02C8A3 = (07) Middle jump y-velocity</tt>
0x2CDEE - Speed of crash bomb.
* <tt>0x02C8A4 = (08) High jump y-velocity</tt>
* <tt>0x02C8A5 = (04) Low jump y-velocity</tt>
* <tt>0x02C8E4 = (3E) Running time in frames</tt>
* <tt>0x02C8DF = (02) Running velocity integer</tt>


====Quick Man's routine for attack====
====Bubble Man====
* ???
* <tt>0x02C70B = (FF) Landing speed integer</tt>
0x2C86E - Number of Boomerangs.
* <tt>0x02C6D3 = (01) Rising speed integer</tt>
0x2C872 - Projectile?
* <tt>0x02C74F = (5A) Gun projectile type</tt>
0x2C882 - Boomerang delay when appearing.
0x2C887 - Boomerang speed when appearing.
0x2C8A5 - Low jump.
0x2C8A3 - Middle jump.
0x2C8A4 - High jump.
0x2C8E4 - Running time
0x2C8DF - Running speed.
====Bubble Man's routine for attack====
* ???
0x2C70B - Landing speed.
0x2C6D3 - Rising speed.
0x2C74F - Projectile (horizontal shot)


====Wood Man's routine for attack====
====Wood Man====
* ???
* <tt>0x02C537 = (12) Delay between rising leaves</tt>
0x2C5DD - Jump height.
* <tt>0x02C5DD = (04) Jump y-velocity integer</tt>
0x2C5E2 - Jump distance.
* <tt>0x02C5E2 = (01) Jump x-velocity integer</tt>
0x2C5A9 - Leaf shield speed.
* <tt>0x02C5A9 = (04) Leaf Shield launch x-velocity integer</tt>
0x2C553 - Number of falling leaves?
* <tt>0x02C553 = (03) Number of falling leaves</tt>
0x2C576 - Horizontal movement for falling leaves?
* <tt>0x02C576 = (02) Falling leaf x-velocity integer</tt>
0x2C567 - Y position for falling leaves.
* <tt>0x02C567 = (20) Falling leaf y-pos start</tt>
0x2C522 - Leaf shield projectile.
* <tt>0x02C522 = () Leaf Shield projectile type</tt>
0x2c557 - Falling leaves projectile.
* <tt>0x02C557 = () Falling leaves projectile type</tt>
0x2C542 - Rising leaves projectile.
* <tt>0x02C542 = () Rising leaves projectile type</tt>
* <tt>0x03DA34 = () Leaf Shield fall speed???</tt>
* <tt>0x03D8F6 = (02) ??*</tt>
: *Change to 0x06 for an interesting leaf shield pattern
* <tt>0x03B855 = (20) Leaf fall speed?*</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.


==== Air Man´s routine for attack====
====Air Man====
* 0x02C2F3 - 0x02C50A
* <tt>'''0x02C2F3 to 0x02C50A''' = Routine for attack</tt>
0x02C30C - Number of tornado "waves" before air man jumps to the other side.
* <tt>0x02C30C = (03) Number of tornado patterns before jump phase</tt>
* <tt>0x02C393 to 0x02C428 (0096) = Tornado properties</tt>
** <tt>0x02C393 to 0x02C3B0 (001E) = y-velocity fractions*</tt>
*** <tt>0x02C393 to 0x02C398 (0006) = Pattern #1 tornadoes</tt>
*** <tt>0x02C399 to 0x02C39E (0006) = Pattern #2 tornadoes</tt>
*** <tt>0x02C39F to 0x02C3A4 (0006) = Pattern #3 tornadoes</tt>
*** <tt>0x02C3A5 to 0x02C3AA (0006) = Pattern #4 tornadoes</tt>
*** <tt>0x02C3AB to 0x02C3B0 (0006) = Pattern #5 tornadoes</tt>
** <tt>0x02C3B1 to 0x02C3CE (001E) = y-velocity integers*</tt>
** <tt>0x02C3CF to 0x02C3EC (001E) = x-velocity fractions*</tt>
** <tt>0x02C3ED to 0x02C40A (001E) = x-velocity integers*</tt>
** <tt>0x02C40B to 0x02C428 (001E) = delay before tornado finishes deploying*</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>0x02C4DD = (E6) First jump y-velocity fraction</tt>
* <tt>0x02C4DE = (76) Second jump y-velocity fraction</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====
* <tt>0x02DA2E = (02) Phase 1 weakness #1 to disable*</tt>
* <tt>0x02DA32 = (05) Phase 1 weakness #2 to disable*</tt>
* <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.

Revision as of 19:47, 9 September 2016

Chip tiny.png The following article is a ROM map for Mega Man 2.

Stage Select

  • 0x02EE10 - 0x02F1CF - Screen Layout
  • 0x0340D8 - routine for checking if a level has been cleared
  • 0x0340E3 - First level of Wily's castle
  • 0x0340EC - 0x0340EF - routine for checking if a level has been cleared
  • 0x0340F6 - Confirming selection
  • 0x0341BA - Preview boss music
  • 0x0342ED - Selection for Bubble Man cursor
  • 0x0344A9 - 0x0344B8 - Palette background for Stage Select Screen
  • 0x0344B9 - 0x0344C8 - Palette foreground for Stage Select Screen
  • 0x034551 - Beginning of Sprites for Stage Select Screen
  • 0x03462E - Cursor position for Bubble Man Y position
  • 0x034637 - Cursor position for Bubble Man X position
  • 0x03464F - Lines for Boss posing screen Last byte (reverse order)
  • 0x03466E - Lines for Boss posing screen First byte (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

HP

  • 0x038315 - Maximum Energy for Mega Man
  • 0x03CF79 - X position for energy bar
  • 0x03CF8F - X position for weapon bar
  • 0x03CFB1 - X position for boss bar
  • 0x03CFD8 - Graphics for Energy Bar
  • 0x03CFF5 - Y position for 1/7 energy
  • 0x03CFF6 - Y position for 2/7 energy
  • 0x03CFF7 - Y position for 3/7 energy
  • 0x03CFF8 - Y position for 4/7 energy
  • 0x03CFF9 - Y position for 5/7 energy
  • 0x03CFFA - Y position for 6/7 energy
  • 0x03CFFB - Y position for 7/7 energy

Sound Effects during Stage

  • 0x03524E - changing selections in menu, Mega Man forming
  • 0x0381E0-0x0381ED - Music played for each level
  • 0x038685 - Sound for Mega Man landing
  • 0x03C59F - Sound for entering menu screen during action
  • 0x03C802 - Sound effect for Mega Man beamed down

Menu Screen

  • 0x0352AC - Energy Compare for Energy Tank
  • 0x03539E - Sound effect for turning off menu during action
  • 0x03565C - Y position for E symbol for energy tanks
  • 0x03565D - PPU graphic for E symbol for energy tanks
  • 0x03565E - Palette and mirroring for E symbol for energy tanks
  • 0x03565F - X position for E symbol for energy tank

Weapon Gained Screens

Mega Man
  • 0x0249FE - 0x024A8A (0x8D) - data
  • 0x0249FF - Y position
  • 0x024A00 - PPU Tile
  • 0x024A01 - Palette, Mirroring
  • 0x024A02 - X position
format repeats
Dr. Light

0x024A8B - 0x024AD7 (0x4D) - data

  • 0x024A8C - Y position
  • 0x024A8D - PPU Tile
  • 0x024A8E - Palette, Mirroring
  • 0x024A8F - X position
format repeats

Extra Lives Symbol

  • 0x035660 - Y position for NW PPU graphic head in menu
  • 0x035661 - NW PPU graphic for head in menu
  • 0x035662 - Palette and mirroring for NW PPU graphic of head in menu
  • 0x035663 - X position for NW PPU graphic head in menu
  • 0x035664 - Y position for NE PPU graphic head in menu
  • 0x035665 - NE PPU graphic for head in menu
  • 0x035666 - Palette and mirroring for NE PPU graphic of head in menu
  • 0x035667 - X position for NE PPU graphic head in menu
  • 0x035668 - Y position for SW PPU graphic head in menu
  • 0x035669 - SW PPU graphic for head in menu
  • 0x03566A - Palette and mirroring for SW PPU graphic of head in menu
  • 0x03566B - X position for SW PPU graphic head in menu
  • 0x03566C - Y position for SE PPU graphic head in menu
  • 0x03566D - SE PPU graphic for head in menu
  • 0x03566E - Palette and mirroring for SE PPU graphic of head in menu
  • 0x03566F - X position for SE PPU graphic head in menu

Title

  • 0x036235 - Sound effect for switching Normal and Difficult on Title
  • 0x0362D4 - Graphic to flash for selection Normal on Title
  • 0x0362D5 - Graphic to flash for selection Difficult on Title
  • 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 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
  • 0x0382FD - Amount of HP large Energy returns
  • 0x038301 - Amount of HP small Energy returns

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

Arm Cannon

Normal Arm Cannon

  • 0x03DA7C - 0x03DA8F (0x14) - routine
$DA6C:A5 27     LDA $0027 = #$00
$DA6E:29 02     AND #$02
$DA70:F0 2B     BEQ $DA9D
$DA72:A2 04     LDX #$04
$DA74:BD 20 04  LDA $0420,X @ $0460 = #$42
$DA77:10 07     BPL $DA80
$DA79:CA        DEX
$DA7A:E0 01     CPX #$01
$DA7C:D0 F6     BNE $DA74
$DA7E:F0 1D     BEQ $DA9D
$DA80:A9 24     LDA #$24 (Sound effect)
$DA82:20 51 C0  JSR $C051
$DA85:A0 00     LDY #$00
$DA87:20 E0 D3  JSR $D3E0
$DA8A:A9 0F     LDA #$0F
$DA8C:85 36     STA $0036 = #$00
$DA8E:A9 01     LDA #$01
$DA90:85 3D     STA $003D = #$00
$DA92:A6 2C     LDX $002C = #$03
$DA94:18        CLC
$DA95:7D D4 D3  ADC $D3D4,X @ $D414 = #$AD
$DA98:8D 00 04  STA $0400 = #$00
$DA9B:18        CLC
$DA9C:60        RTS
  • 0x03DA91 - Sound for Mega Man shooting normal shot

Air

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			;Sound Effect
$DAD7:20 51 C0  JSR $C051			;play SFX
$DADA:38        SEC
$DADB:A5 9D     LDA $009D = #$16		;take from bar count
$DADD:E9 02     SBC #$02			;amount to use
$DADF:85 9D     STA $009D = #$16
$DAE1:4C 8A DA  JMP $DA8A
$DAE4:38        SEC
$DAE5:60        RTS

Bubble

  • 0x03DB34 - Sound effect for Bubble Lead
  • 0x03DB3D - Number of Bubble Lead to use before reducing power

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			;Frequency to have Boomerangs shoot
$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
  • 0x03DB6F - Sound effect for Quick Boomerang
  • 0x03DB78 - Number of Quick Boomerangs to use before reducing power

Crash Bomb

  • 0x03DBA6 - Sound effect for Crash Bomb
  • 0x03DB99 - Number of power to remove for 1 Crash Bomb

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			;SFX to use
$DC4A:20 51 C0  JSR $C051

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
  • 0x03DBC9 - Sound effect for Metal Blade
  • 0x03DBD2 - Number of Metal Blades to use before reducing power

Quick Boomerang Mechanics

  • 0x03DFDE - 0x03E025 (0x48) - routine
$DFCE:BD E0 04  LDA $04E0,X @ $04E3 = #$0D
$DFD1:C9 12     CMP #$12			;how far to fly out
$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			;how far to fly down before coming up
$DFF0:9D 20 04  STA $0420,X @ $0423 = #$C3
$DFF3:BD E0 04  LDA $04E0,X @ $04E3 = #$0D
$DFF6:C9 23     CMP #$23			;how far to fly back
$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

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			;Frequency to use
$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			;Freeze enemies
$E174:85 AA     STA $00AA = #$00		;Does Freeze enemies
$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

Heat

  • 0x03DE45 - Sound for Heat charge?

Wood

  • 0x03DF0D - Sound for Wood Shield turning
  • 0x03DF1F - Sound for Wood Shield appearing
  • 0x03DF72 - Number of power to remove for 1 Wood Shield

Crash

  • 0x03E089 - Sound effect for Crash Bomb clasping wall
  • 0x03E0DA - Sound effect for Crash Bomb exploding

Attack Power Table

  • 0x02E9C4 - Wood Man's body attack
  • 0x02E9C8 - Flash Man's body attack
  • 0x03ED76 - Shelled Fish's attack
  • 0x03ED78 - Large Frog's attack
  • 0x03ED79 - Small Frog's attack
  • 0x03ED82 - (16) Ball Bat attack
  • 0x03ED83 - (17) Rabbit attack
  • 0x03ED84 - (18) Rabbit's projectile attack (carrot)
  • 0x03ED85 - (19) Dog's attack
  • 0x03ED87 - (1B) Dog's fire projectile attack
  • 0x03ED89 - (1D) Ape's attack
  • 0x03ED8B - (1F) Chicken's attack
  • 0x03EDA1 - (35) Sniper Joe's projectile attack (round ball)
  • 0x03EDA4 - (38) Large Bird's attack
  • 0x03EDA6 - (3A) Large Bird's egg attack
  • 0x03EDA8 - (3C) Small Bird's attack
  • 0x03EDB7 - One arm shooter's attack
  • 0x03EDB9 - One arm shooter's projectile attack (pellet)
  • 0x03EDBA - Body of Sniper Joe's machine attack
  • 0x03EDBB - Sniper Joe's attack
  • 0x03EDBC - (50) Snake-like Pod's attack
  • 0x03EDBD - Snake-like Pod's projectile attack (snake rod)
  • 0x03EDCD - Wood Man's Shield
  • 0x03EDCE - Falling Leafs from Wood Man

Boss Behavior

Heat Man

  • 0x02C16E to 0x02C--- = Routine for attack
  • 0x02C207 = (07) Projectile 1 y-velocity
  • 0x02C208 = (05) Projectile 2 y-velocity
  • 0x02C209 = (03) Projectile 3 y-velocity
  • 0x02C20A = (3A) Projectile 1 x-velocity; lower value means faster velocity
  • 0x02C20B = (2E) Projectile 2 x-velocity
  • 0x02C20C = (1C) Projectile 3 x-velocity
  • 0x02C1BB = (58) Projectile type
  • 0x02C1A1 = (02) # Projectiles thrown; extra shots tend to be glitchy
  • 0x02C253 = (04) Charge velocity
  • 0x02C29D = (1F) Delay 1 before charge*
  • 0x02C29E = (3E) Delay 2 before charge*
  • 0x02C29F = (5D) Delay 3 before charge*
*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.

Flash Man

  • 0x02C966 to 0x02CAF8 = Routine for attack
  • 0x02C97D = (06) Walk velocity fraction
  • 0x02C982 = (01) Walk velocity integer
  • 0x02C98B = (BB) Delay before time stopper; only counts down while boss is walking
  • 0x02CA09 = (06) Number of projectiles to shoot
  • 0x02CA52 = () Length of time stopper/projectile frequency?
  • 0x02CA71 = (35) Projectile type
  • 0x02CA81 = (08) Projectile x-velocity
  • 0x02CAC6 = (00) Jump x-velocity integer
  • 0x02CACE = (04) Jump y-velocity integer

Metal Man

  • 0x02CBB5 = (06) Jump Height 1; higher than 07 bonks the ceiling
  • 0x02CBB6 = (05) Jump Height 2
  • 0x02CBB7 = (04) Jump Height 3
  • 0x02CC1D = (06) Metal blade frequency? changes behavior if different than 06
  • 0x02CC29 = (20) Sound of Metal Blade
  • 0x02CC2D = () Projectile type
  • 0x02CC3F = (04) Speed of Metal Blade

Crash Man

  • 0x02CCF2 = (47) Walk velocity fraction
  • 0x02CCF7 = (01) Walk velocity integer
  • 0x02CD07 = (27) Jump behavior*
*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.
  • 0x02CD2A = (06) Jump velocity integer
  • 0x02CDAF = (44) Jump velocity fraction
  • 0x02CDD3 = (5E) Not sure, change to another value to have him always shoot when jumping
  • 0x02CDEE = (06) Crash Bomber x-velocity integer

Quick Man

  • 0x02C86E = (03) Number of boomerangs
  • 0x02C872 = (59) Projectile Type
  • 0x02C882 = (25) Boomerang delay in frames before second motion
  • 0x02C887 = (04) Boomerang velocity first motion
  • 0x03B726 = (04) Boomerang velocity second motion
  • 0x02C8A3 = (07) Middle jump y-velocity
  • 0x02C8A4 = (08) High jump y-velocity
  • 0x02C8A5 = (04) Low jump y-velocity
  • 0x02C8E4 = (3E) Running time in frames
  • 0x02C8DF = (02) Running velocity integer

Bubble Man

  • 0x02C70B = (FF) Landing speed integer
  • 0x02C6D3 = (01) Rising speed integer
  • 0x02C74F = (5A) Gun projectile type

Wood Man

  • 0x02C537 = (12) Delay between rising leaves
  • 0x02C5DD = (04) Jump y-velocity integer
  • 0x02C5E2 = (01) Jump x-velocity integer
  • 0x02C5A9 = (04) Leaf Shield launch x-velocity integer
  • 0x02C553 = (03) Number of falling leaves
  • 0x02C576 = (02) Falling leaf x-velocity integer
  • 0x02C567 = (20) Falling leaf y-pos start
  • 0x02C522 = () Leaf Shield projectile type
  • 0x02C557 = () Falling leaves projectile type
  • 0x02C542 = () Rising leaves projectile type
  • 0x03DA34 = () Leaf Shield fall speed???
  • 0x03D8F6 = (02) ??*
*Change to 0x06 for an interesting leaf shield pattern
  • 0x03B855 = (20) Leaf fall speed?*
*Decrease value to increase speed. At 0x40, it doesn't fall. Change to a high number to instantly despawn leaves for a fast pattern.

Air Man

  • 0x02C2F3 to 0x02C50A = Routine for attack
  • 0x02C30C = (03) Number of tornado patterns before jump phase
  • 0x02C393 to 0x02C428 (0096) = Tornado properties
    • 0x02C393 to 0x02C3B0 (001E) = y-velocity fractions*
      • 0x02C393 to 0x02C398 (0006) = Pattern #1 tornadoes
      • 0x02C399 to 0x02C39E (0006) = Pattern #2 tornadoes
      • 0x02C39F to 0x02C3A4 (0006) = Pattern #3 tornadoes
      • 0x02C3A5 to 0x02C3AA (0006) = Pattern #4 tornadoes
      • 0x02C3AB to 0x02C3B0 (0006) = Pattern #5 tornadoes
    • 0x02C3B1 to 0x02C3CE (001E) = y-velocity integers*
    • 0x02C3CF to 0x02C3EC (001E) = x-velocity fractions*
    • 0x02C3ED to 0x02C40A (001E) = x-velocity integers*
    • 0x02C40B to 0x02C428 (001E) = delay before tornado finishes deploying*
*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.
  • 0x02C4DD = (E6) First jump y-velocity fraction
  • 0x02C4DE = (76) Second jump y-velocity fraction
  • 0x02C4E0 = (04) First jump y-velocity integer
  • 0x02C4E1 = (07) Second jump y-velocity integer
  • 0x02C4E3 = (39) First jump x-velocity fraction
  • 0x02C4E4 = (9A) Second jump x-velocity fraction
  • 0x02C4E6 = (01) First jump x-velocity integer
  • 0x02C4E7 = (01) Second jump x-velocity integer

Wily Machine

  • 0x02DA2E = (02) Phase 1 weakness #1 to disable*
  • 0x02DA32 = (05) Phase 1 weakness #2 to disable*
  • 0x02DA3A = (01) Phase 2 weakness to disable*
*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.