Super Mario Land/RAM map

From Data Crystal
Jump to navigation Jump to search

Chip tiny.png The following article is a RAM map for Super Mario Land.

RAM Map

VRAM

Addr    Size    Description
----    ----    -----------
9806       2    Lives displayed, copy from (DA15)
9821       1    Score - Ten thousands
9822       1    Score - Thousands
9823       1    Score - Hundreds
9824       1    Score - Tens
9825       1    Score - Ones
....    ....    ....
9829       1    Coin - Tens
982A       1    Coin - Ones
....    ....    ....
982C       1    Current world
982E       1    Current stage
....    ....    ....
9831       1    Timer - Hundreds
9832       1    Timer - Tens
9833       1    Timer - Ones

WRAM

Addr    Size    Description
----    ----    -----------
C000     160    Copied to OAM (0xFE00-0xFE9F)
C0A0       3    Score (Binary-coded decimal)
C0A3       1    Lives earned or lost
C0A4       1    ? (0x39 = Game Over)
C0A9       1    Superball's time left until it disappears
C0B0      16    Related to sprite tiles? (often 0x2c, empty sprite tile)
C0D3       1    Mario Starman Timer
C0D7       1    Title Screen Timer (switch to/from demo)
C0D8       1    Demo controller state change timer
C0D9       1    Demo controller state ID
C0DA       1    Demo controller state
C0DC       1    Demo ID (0x00 = 1-1 demo, 0x01 = 1-2 demo, 0x02 = 3-3 demo)
C201       1    ? Mario's Y position relative to the screen
C202       1    ? Mario's X position relative to the screen
C203       1    Mario's pose.
C207       1    Probably used in Mario's jump routine. (0x00 = Not jumping, 0x01 = Ascending, 0x02 = Descending)
C208       1    Mario's Y speed.
C209       1    Mario's low jumps : how long the button was pressed (0x02? to 0x0d frames)
C20A       1    Mario is on the ground flag (0x01 = On the ground, 0x00 = In the air)
C20C       1    ? Absolute value of Mario's X speed
C20D       1    Direction Mario faces while walking. (0x20 = Left, 0x10 = Right)
DA15       1    Lives (Binary-coded decimal)
DA1D       1    Music speed-up when time is running out (0x00 = normal speed, 0x01 = 100sec and less, 0x02 = 50sec and less, 0x03 = 0sec (1 frame only), 0xff = time up) 
....    ....    ....
The sound engine is stored in rom3, so all pointers point there.
SEC is used for Sound Engine Command. Please suggest a better term for this.
DF01       2    Note Durations Table Pointer (0x7062 = multiples of 2 ticks, 0x7057 = multiples of 3 ticks #1, 0x7077 = multiples of 3 ticks #2, 0x706e = multiples of 5 ticks, 0x7082 = multiples of 7 ticks)
DF10       2    Channel 1 SEC Chain Pointer Pointer (points to the pointer of the first SEC of a chain)
DF12       1    Channel 1 Note Time Left
DF13       1    Channel 1 Note Duration
DF14       2    Channel 1 Current SEC Pointer
DF19       2    Channel 1 Note Frequency
DF1B       1    Channel 1 Is Note Silenced/Finished? (0x00 = no, 0x01 = yes)
DF1E       1?   Channel 1 Note Current Time Alive
DF2X      16    Same as above for Channel 2
DF3X      16    Same as above for Channel 3
DF4X      16    Same as above for Channel 4
....    ....    ....
DFE0       1    Request a Channel 1 Sound Effect (0x00 = no request, 0x01 = jump, 0x02 = fireball, 0x03 = jump on enemy, 0x04 = gain powerup, 0x05 = coin, 0x06 = shrink, 0x07 = hit block, 0x08 = 1up, 0x09 = hit block again?, 0x0a = time count down at the end of level, 0x0b = powerup comes out, 0x0c and above = invalid)
DFE1       1    Channel 1 Sound Effect currently playing
DFE8       1    Request a Music Track (0x00 = no request, 0x01 = level clear, 0x02 = death, 0x03 = pyramid, 0x04 = underground, 0x05 = shoot-'em-up, 0x06 = chai kingdom, 0x07 = birabuto kingdom, 0x08 = muda kingdom, 0x09 = bonus game, 0x0a = walk to prize, 0x0b = boss, 0x0c = starman, 0x0d = get prize, 0x0e = failure?, 0x0f = daisy, 0x10 = game over, 0x11 = credits, 0x12 = fake daisy, 0x13 = tatanga, 0x14 and above = invalid)
DFE9       1    Music Track currently playing
DFF0       1    Request a Channel 3 Sound Effect (0x00 = no request, 0x01 = boss hit, 0x02 and above = invalid)
DFF1       1    Channel 3 Sound Effect currently playing
DFF8       1    Request a Channel 4 Sound Effect (0x00 = no request, 0x01 = nokobon explosion, 0x02 = break brick, 0x03 = fly death, 0x04 = gao fireball, 0x05 and above = invalid)
DFF9       1    Channel 4 Sound Effect currently playing

HRAM

Addr    Size    Description
----    ----    -----------
FF99       1    Powerup Status (0x00 = small, 0x01 = growing, 0x02 = big with or without superball, 0x03 = shrinking, 0x04 = invincibility blinking)
....    ....    ....
FFA6       1    Time until respawn from death (set when Mario has fell to the bottom of the screen) 
FFB3       1    ? (0x39 = Game Over)
FFB5       1    Mario has the Superball? (0x00 = no, 0x02 = yes)
FFFA       1    Coins (Binary-coded decimal)
FFFB       1    ? (0x2B = Extra Life)

Notes

  • Binary-coded decimal (daa) - if you view it as a hex number, the count skips A through F in any given ordinal. In this way, the hex value is human readable as the "correct" (decimal) number.
  • A list of less certain addresses is available on the Talk page for further review.