Welcome to Data Crystal's new home! Data Crystal is now part of the TCRF family (sort of).
The wiki has recently moved; please report any issues in Discord. Pardon the dust.

Mega Man 2/RAM map: Difference between revisions

From Data Crystal
Jump to navigation Jump to search
(Added more detail to 009A. Added actual Weapon names. Other small corrections.)
No edit summary
 
(20 intermediate revisions by 9 users not shown)
Line 1: Line 1:
<div id="catlinks">[[Image:Chip_tiny.png]]The following article is a [[RAM map]] for [[Mega Man 2]].</div>
{{rammap|game=Mega Man 2}}
{{clear}}
<includeonly>[[Category:RAM maps]][[Category:Mega Man 2|RAM map]]</includeonly>


===Misc.===
==General==
* $0022 - Vertical position of screen scrolling
{| border="1" cellpadding="1"
* $002A - Area selected
|'''RAM'''  || '''Function''' || '''Details'''
|-
| $001B || Camera state ||
{|border="1" cellpadding="0"
|$00||Default
|-
|$01||Changing the nametable (E.g. scrolling within an area, creating the pause menu)
|-
|$02||Freeze before and after scrolling to a new area
|-
|$80||Scrolling vertically
|-
|}
|-
| $001F || Camera X position ||
|-
| $0020 || Camera X screen || When $001F gets larger than $FF, this value increases by $01.
|-
| $0022 || Camera Y position ||
|-
| $0023 || Controller 1 Poll || [[#controller|(1)]]
|-
| $0025 || Controller 1 Mirror || [[#controller|(1)]]
|-
| $0027 || Controller 1 Poll || Only changes on first frame of state change. Crash Man checks this for jump code. [[#controller|(1)]]
|-
| $0030 || Gravity ||
|-
| $004B || Invincibility timer || When above $00, invincibility frames will start and this will count down at a rate of $01 per frame.
|-
| $00CB || Difficulty setting || When an enemy takes damage, if this value is $00 (Normal) the damage given will be bitshifted left, doubling it.
|-
| $002A || Stage select cursor position || $00 is Dr. Wily, $01-$08 goes clockwise starting from Bubble Man.
|-
| $06C1 || Boss HP ||
|-
|}


===Sound===
==Sound==
* $0066 - Sound effects for $0580 : $01 - play
{| border="1" cellpadding="1"
* $0067 - Music playing for $0000 : $01 - play
|'''RAM'''  || '''Function''' || '''Details'''
* $0580 - Sound to play for $0066
|-
| $0066 || Sound effects strobe || Write $01 to play the SFX ID in address $0580
|-
| $0067 || Music strobe || Write $01 to play the Music in address $0000
|-
| $0580 || Sound effect queue ||
|-
|}


===Stats===
==Player properties==
* $009A - Unlocked Weapons
{| border="1" cellpadding="1"
  0000 0001 = $80 = 128 - Atomic Fire (Heatman)
|'''RAM'''  || '''Function''' || '''Details'''
0000 0010 = $40 =  64 - Air Shooter (Airman)
|-
0000 0100 = $20 =  32 - Leaf Shield (Woodman)
| $06C0 || Mega Man's HP ||
0000 1000 = $10 =  16 - Bubble Lead (Bubbleman)
|-
0001 0000 = $08 =  8 - Quick Boomerang (Quickman)
| $0460 || Mega Man's X location ||
0010 0000 = $04 =  4 - Time Stopper (Flashman)
|-
0100 0000 = $02 =  2 - Metal Blade (Metalman)
| $04A0 || Mega Man's Y location ||
1000 0000 = $01 =  1 - Crash Bomb (Crashman)
|-
* $009B - Item #s
| $0036 || Shooting pose timer ||
0000 0001 = $80 = 128 - Item 1 (Floating Platform)
|-
0000 0010 = $40 =  64 - Item 2 (Horizontal Platform)
| $0032
0000 0100 = $20 =  32 - Item 3 (Vertical Platform)
|Tile type Mega Man is standing on (feet)
* $009C - Number of times Atomic Fire (Heatman) can be used
|rowspan="3"|
* $009D - Number of times Air Shooter (Airman) can be used
{|border="1" cellpadding="1"
* $009E - Number of times Leaf Shield (Woodman) can be used
||'''Value'''  || '''Type'''
* $009F - Number of times Bubble Lead (Bubbleman) can be used
|-
* $00A0 - Number of times Quick Boomerang (Quickman) can be used
| $00 || Air
* $00A1 - Number of times Time Stopper (Flashman) can be used
|-
* $00A2 - Number of times Metal Blade (Metalman) can be used
| $01 || Ground
* $00A3 - Number of times Crash Bomb (Crashman) can be used
|-
* $00A4 - Number of times Item 1 can be used
| $02 || Ladder
* $00A5 - Number of times Item 2 can be used
|-
* $00A6 - Number of times Item 3 can be used
| $03 || Instadeath (Spikes, Lava)
* $00A7 - Number of Energy Tanks Remaining
|-
* $00A8 - Number of Lives remaining
| $04 || Water
* $00CB - Difficulty setting
|-
| $05 || Right Conveyer
|-
| $06 || Left Conveyer
|-
| $07 || Ice
|-
|}
|-
| $0033 || Tile type Mega Man is standing on (center)
|-
| $0034 || Tile type Mega Man is overlapping
|-
| $003D || Is Mega Man shooting? ||
|-
| $009A || Unlocked Weapons/Stages beaten ||
{|border="1" cellpadding="1"
|'''Bits''' || '''Hex''' || '''Weapon'''
|-
| <tt>0000 0001</tt> || $01 || Atomic Fire
|-
| <tt>0000 0010</tt> || $02 || Air Shooter
|-
| <tt>0000 0100</tt> || $04 || Leaf Shield
|-
| <tt>0000 1000</tt> || $08 || Bubble Lead
|-
| <tt>0001 0000</tt> || $10 || Quick Boomerang
|-
| <tt>0010 0000</tt> || $20 || Time Stopper
|-
| <tt>0100 0000</tt> || $40 || Metal Blade
|-
| <tt>1000 0000</tt> || $80 || Crash Bomb
|-
|}
|-
| $009B || Unlocked Items ||
{|border="1" cellpadding="1"
|'''Bits'''  || '''Hex''' || '''Item'''
|-
| <tt>0000 0001</tt> || $01 || Item 1 (Helicopter Platform)
|-
| <tt>0000 0010</tt> || $02 || Item 2 (Jet Sled)
|-
| <tt>0000 0100</tt> || $04 || Item 3 (Climbing Platform)
|-
|}
|-
| $009C || Atomic Fire Ammo ||
|-
| $009D || Air Shooter Ammo ||
|-
| $009E || Leaf Shield Ammo ||
|-
| $009F || Bubble Lead Ammo ||
|-
| $00A0 || Quick Boomerang Ammo ||
|-
| $00A1 || Time Stopper Ammo ||
|-
| $00A2 || Metal Blade Ammo ||
|-
| $00A3 || Crash Bomb Ammo ||
|-
| $00A4 || Item 1 Ammo ||
|-
| $00A5 || Item 2 Ammo ||
|-
| $00A6 || Item 3 Ammo ||
|-
| $00A7 || Number of Energy Tanks Remaining || Can go above $04, but will break passwords.
|-
| $00A8 || Number of Lives remaining || Looks glichy on the pause menu if greater than $64.
|-
| $0367-0369 || Mega Man's Color Palette ||
|-
|}
<!-- Ported from Mega Man II/RAM map-->
{| border="1" cellpadding="1"
|'''RAM'''  || '''Size (in bytes)''' || '''Description'''
|-
| $0F12 || 1 || Mega Man facing: $00: left, $01: right
|-
| $0F15 || 1 || Mega Man X coordinate
|-
| $0F16 || 1 || Mega Man Y coordinate
|-
| $0F39 || 1 || Frame counter for main gameplay (pauses during pause menu)
|-
|}
 
==Graphics==
{| border="1" cellpadding="1"
|'''RAM'''  || '''Function''' || '''Details'''
|-
| $0200-$2FF || Sprite memory || These values are constantly read and sent to OAM. [[#sprites|(2)]]
|-
| $0354 || Palette cycling pattern || Values seem level-dependent?
|-
| $0355 || Palette cycling speed || How many frames to wait before cycling the palette, $00 for no cycling. May glitch outside of levels.
|-
| $0356-$365 || Palette memory (background) ||
|-
| $0366-$375 || Palette memory (sprites) ||
|-
|}
 
==Password Screen==
{| border="1" cellpadding="1"
|'''RAM'''  || '''Function''' || '''Details'''
|-
| $0420 - $0438 || If 01, this grid space contains a dot. || Goes from left to right, top to bottom.
|-
| $0680  || Number of dots left on Password entering ||
|-
| $0680  || Position of cursor on Password entering ||
|}
 
==References==
#<div id="controller">[https://www.nesdev.org/wiki/Standard_controller#Report NESDev controller bits reference]</div>
#<div id="sprites">[https://www.nesdev.org/wiki/PPU_OAM#Byte_0 NESDev sprite format reference]</div>
 
<!-- These need more detailed research. Commenting out for now.


===Graphics Set Stuff===
===Graphics Set Stuff===
* $003A - A background-related boolean? (Changes to the rhythm of the flashing clouds of Airman's stage)
* $00F7 - Graphics Set
* $00F7 - Graphics Set
* $0200 - Y location of Heatman's left eye
 
* $0201 - Graphic for Heatman's left eye
===Title Screen===
* $0202 - Palette for Heatman's left eye
{| border="1" cellpadding="1"
* $0203 - X location of Heatman's left eye
|'''RAM'''  || '''Function''' || '''Details'''
* $0204 - Y location of Heatman's right eye
|-
* $0205 - Graphic for Heatman's right eye
| $04A2 || Windows' Y position ||
* $0206 - Palette for Heatman's right eye
|-
* $0207 - X location of Heatman's right eye
| $04A3 || Side of building's Y position ||
* $0460 - Mega Man's X location
|-
| $04B0 || Mega Man's Y position ||
|-
|}


===Sprite stuff===
===Sprite stuff===
* $049F - Enemy 1's speed to the left
* $049F - Enemy 1's speed to the left
* $04A0 - Mega Man's Y location
* $04A2 - Windows' Y position on Title Screen
* $04A3 - Side of building's Y position on Title Screen
* $04B0 - Mega Man's Y position on Title Screen
* $04BF - Enemy 1's Y location
* $04BF - Enemy 1's Y location


===Sound Stuff===
-->
 
* $0680 - Number of dots left on Password entering
* $06A0 - Position of cursor on Password entering
* $06C0 - Mega Man's HP


===Enemy HP===
{{Internal Data}}
* $06D9 - $06DF

Latest revision as of 20:54, 8 February 2024

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

General

RAM Function Details
$001B Camera state
$00 Default
$01 Changing the nametable (E.g. scrolling within an area, creating the pause menu)
$02 Freeze before and after scrolling to a new area
$80 Scrolling vertically
$001F Camera X position
$0020 Camera X screen When $001F gets larger than $FF, this value increases by $01.
$0022 Camera Y position
$0023 Controller 1 Poll (1)
$0025 Controller 1 Mirror (1)
$0027 Controller 1 Poll Only changes on first frame of state change. Crash Man checks this for jump code. (1)
$0030 Gravity
$004B Invincibility timer When above $00, invincibility frames will start and this will count down at a rate of $01 per frame.
$00CB Difficulty setting When an enemy takes damage, if this value is $00 (Normal) the damage given will be bitshifted left, doubling it.
$002A Stage select cursor position $00 is Dr. Wily, $01-$08 goes clockwise starting from Bubble Man.
$06C1 Boss HP

Sound

RAM Function Details
$0066 Sound effects strobe Write $01 to play the SFX ID in address $0580
$0067 Music strobe Write $01 to play the Music in address $0000
$0580 Sound effect queue

Player properties

RAM Function Details
$06C0 Mega Man's HP
$0460 Mega Man's X location
$04A0 Mega Man's Y location
$0036 Shooting pose timer
$0032 Tile type Mega Man is standing on (feet)
Value Type
$00 Air
$01 Ground
$02 Ladder
$03 Instadeath (Spikes, Lava)
$04 Water
$05 Right Conveyer
$06 Left Conveyer
$07 Ice
$0033 Tile type Mega Man is standing on (center)
$0034 Tile type Mega Man is overlapping
$003D Is Mega Man shooting?
$009A Unlocked Weapons/Stages beaten
Bits Hex Weapon
0000 0001 $01 Atomic Fire
0000 0010 $02 Air Shooter
0000 0100 $04 Leaf Shield
0000 1000 $08 Bubble Lead
0001 0000 $10 Quick Boomerang
0010 0000 $20 Time Stopper
0100 0000 $40 Metal Blade
1000 0000 $80 Crash Bomb
$009B Unlocked Items
Bits Hex Item
0000 0001 $01 Item 1 (Helicopter Platform)
0000 0010 $02 Item 2 (Jet Sled)
0000 0100 $04 Item 3 (Climbing Platform)
$009C Atomic Fire Ammo
$009D Air Shooter Ammo
$009E Leaf Shield Ammo
$009F Bubble Lead Ammo
$00A0 Quick Boomerang Ammo
$00A1 Time Stopper Ammo
$00A2 Metal Blade Ammo
$00A3 Crash Bomb Ammo
$00A4 Item 1 Ammo
$00A5 Item 2 Ammo
$00A6 Item 3 Ammo
$00A7 Number of Energy Tanks Remaining Can go above $04, but will break passwords.
$00A8 Number of Lives remaining Looks glichy on the pause menu if greater than $64.
$0367-0369 Mega Man's Color Palette
RAM Size (in bytes) Description
$0F12 1 Mega Man facing: $00: left, $01: right
$0F15 1 Mega Man X coordinate
$0F16 1 Mega Man Y coordinate
$0F39 1 Frame counter for main gameplay (pauses during pause menu)

Graphics

RAM Function Details
$0200-$2FF Sprite memory These values are constantly read and sent to OAM. (2)
$0354 Palette cycling pattern Values seem level-dependent?
$0355 Palette cycling speed How many frames to wait before cycling the palette, $00 for no cycling. May glitch outside of levels.
$0356-$365 Palette memory (background)
$0366-$375 Palette memory (sprites)

Password Screen

RAM Function Details
$0420 - $0438 If 01, this grid space contains a dot. Goes from left to right, top to bottom.
$0680 Number of dots left on Password entering
$0680 Position of cursor on Password entering

References