Mega Man 2/RAM map: Difference between revisions

From Data Crystal
Jump to navigation Jump to search
(Re-organised the infomation into tables. May need more cleanup.)
No edit summary
 
(3 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{rammap|game=Mega Man 2}}
{{rammap|game=Mega Man 2}}


===General===
==General==
{| border="1" cellpadding="1"
{| border="1" cellpadding="1"
|'''RAM'''  || '''Function''' || '''Details'''
|'''RAM'''  || '''Function''' || '''Details'''
|-
|-
| $0022 || Vertical position of screen scrolling ||  
| $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.
|-
|-
| $0023 || Controller 1 Poll ||  
| $0022 || Camera Y position ||  
|-
|-
| $0025 || Controller 1 Mirror ||  
| $0023 || Controller 1 Poll || [[#controller|(1)]]
|-
|-
| $0027 || Controller 1 Poll || Only changes on first frame of state change. Crash Man checks this for jump code.
| $0025 || Controller 1 Mirror || [[#controller|(1)]]
|-
|-
| $002A || Area selected ||  
| $0027 || Controller 1 Poll || Only changes on first frame of state change. Crash Man checks this for jump code. [[#controller|(1)]]
|-
|-
| $0030 || Gravity ||  
| $0030 || Gravity ||  
Line 19: Line 33:
| $004B || Invincibility timer || When above $00, invincibility frames will start and this will count down at a rate of $01 per frame.
| $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.
 
Controller values for $0023/$0025/$0027:
{| border="1" cellpadding="1"
|'''Bits'''  || '''Button'''
|-
| <tt>0000 0001</tt> || A
|-
| <tt>0000 0010</tt> || B
|-
| <tt>0000 0100</tt> || Select
|-
| <tt>0000 1000</tt> || Start
|-
| <tt>0001 0000</tt> || Up
|-
|-
| <tt>0010 0000</tt> || Down
| $002A || Stage select cursor position || $00 is Dr. Wily, $01-$08 goes clockwise starting from Bubble Man.
|-
|-
| <tt>0100 0000</tt> || Left
| $06C1 || Boss HP ||  
|-
| <tt>1000 0000</tt> || Right
|-
|-
|}
|}


===Sound===
==Sound==
{| border="1" cellpadding="1"
{| border="1" cellpadding="1"
|'''RAM'''  || '''Function''' || '''Details'''
|'''RAM'''  || '''Function''' || '''Details'''
Line 55: Line 53:
|}
|}


===Player properties===
==Player properties==
{| border="1" cellpadding="1"
{| border="1" cellpadding="1"
|'''RAM'''  || '''Function''' || '''Details'''
|'''RAM'''  || '''Function''' || '''Details'''
Line 67: Line 65:
| $0036 || Shooting pose timer ||  
| $0036 || Shooting pose timer ||  
|-
|-
| $0032 || Ground type Mega Man is on (feet) ||  
| $0032
|Tile type Mega Man is standing on (feet)
|rowspan="3"|  
{|border="1" cellpadding="1"
{|border="1" cellpadding="1"
|'''Value'''  || '''Type'''
||'''Value'''  || '''Type'''
|-
|-
| $00 || Air  
| $00 || Air  
Line 75: Line 75:
| $01 || Ground
| $01 || Ground
|-
|-
| $02 || Ground
| $02 || Ladder
|-
| $03 || Instadeath (Spikes, Lava)
|-
| $04 || Water
|-
|-
| $05 || Right Conveyer
| $05 || Right Conveyer
|-
|-
| $02 || Left Conveyer
| $06 || Left Conveyer
|-
|-
| $07 || Ice
| $07 || Ice
Line 85: Line 89:
|}
|}
|-
|-
| $0032 || Ground type Mega Man is on (center) || See above
| $0033 || Tile type Mega Man is standing on (center)
|-
| $0034 || Tile type Mega Man is overlapping
|-
|-
| $003D || Is Mega Man shooting? ||
| $003D || Is Mega Man shooting? ||
|-
|-
| $009A || Unlocked Weapons ||  
| $009A || Unlocked Weapons/Stages beaten ||  
{|border="1" cellpadding="1"
{|border="1" cellpadding="1"
|'''Bits'''  || '''Hex''' || '''Weapon'''
|'''Bits'''  || '''Hex''' || '''Weapon'''
Line 149: Line 155:
| $00A8 || Number of Lives remaining || Looks glichy on the pause menu if greater than $64.
| $00A8 || Number of Lives remaining || Looks glichy on the pause menu if greater than $64.
|-
|-
| $00CB || Difficulty setting || When an enemy takes damage, if this value is $00 (Normal) the damage given will be bitshifted left, doubling it.
| $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
|-
|-
| $0367-0369 || Mega Man's Color Palette ||  
| $0F39 || 1 || Frame counter for main gameplay (pauses during pause menu)
|-
|-
|}
|}


===Stage Select===
==Graphics==
{| border="1" cellpadding="1"
{| border="1" cellpadding="1"
|'''RAM'''  || '''Function''' || '''Details'''
|'''RAM'''  || '''Function''' || '''Details'''
|-
|-
| $002A || Cursor position || $00 is Dr. Wily, $01-$08 goes clockwise starting from Bubble Man.
| $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.
|-
|-
| $0200 - $0203 || Heat Man's left eye sprite data ||
| $0356-$365 || Palette memory (background) ||  
{|border="1" cellpadding="1"
|'''Address'''  || '''Property'''
|-
| $0200 || Y
|-
| $0201 || Tile
|-
| $0202 || Palette  
|-
| $0203 || X
|-
|}
 
|-
|-
| $0200 - $0203 || Heat Man's right eye sprite data ||
| $0366-$375 || Palette memory (sprites) ||  
{|border="1" cellpadding="1"
|'''Address'''  || '''Property'''
|-
| $0204 || Y
|-
| $0205 || Tile
|-
| $0206 || Palette  
|-
| $0207 || X
|-
|}
 
|-
|-
|}
|}


===Password Screen===
==Password Screen==
{| border="1" cellpadding="1"
{| border="1" cellpadding="1"
|'''RAM'''  || '''Function''' || '''Details'''
|'''RAM'''  || '''Function''' || '''Details'''
Line 203: Line 198:
| $0680  || Position of cursor 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.
<!-- These need more detailed research. Commenting out for now.
Line 227: Line 226:


-->
-->
{{Internal Data}}

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