TASVideos

Tool-assisted game movies
When human skills are just not enough

Game Resources / SNES / Mega Man X / RAM Map

This is a RAM Map for Mega Man X.

Address Byte length Description
$7E:0000 16 bytes Scratch RAM
$7E:003B 1 byte Intro sequence timer for the title screen. Counts down from #$FF at the title screen. When it reaches 0, there is a fade out and the intro sequence starts again. The counter is reset to #$EA when a new option is selected.
$7E:003C 1 byte The currently selected option on the title screen. #$00 = Start Game, #$01 = Password Screen, #$02 = Options Menu.
$7E:00A7 1 byte Controller data 1, current frame. Format: axlr----
a = A; x = X; l = L; r = R, - = unused.
$7E:00A8 1 byte Controller data 2, current frame. Format: byetUDLR
b = B; y = Y; e = Select; t = Start; U = Up; D = Down; L = Left; R = Right.
$7E:00A9 1 byte Controller data 1, previous frame. Format: axlr----
a = A; x = X; l = L; r = R.
$7E:00AA 1 byte Controller data 2, previous frame. Format: byetUDLR
b = B; y = Y; e = Select; t = Start; U = Up; D = Down; L = Left; R = Right.
$7E:00AB 1 byte Controller data 1, button press (current frame and not previous frame). Format: axlr----
a = A; x = X; l = L; r = R.
$7E:00AC 1 byte Controller data 2, button press (current frame and not previous frame). Format: byetUDLR
b = B; y = Y; e = Select; t = Start; U = Up; D = Down; L = Left; R = Right.
$7E:00B3 1 byte Used as a counter for the screen's level of brightness when fading (bits 0 to 7). #$0F = full brightness, #$00 = completely faded.
$7E:00B4 2 bytes Camera X-position, in pixels.
$7E:00B6 2 bytes Camera Y-position, in pixels.
$7E:0100 unknown Sound effects?
$7E:0300 512 bytes(?) Graphics?
$7E:0740 unknown Sound effects?
$7E:0B9B 1 byte Frame counter. Differs from the other two in that this one pauses during loading screens.
$7E:0B9C 1 byte "Effective" frame counter. Stops when the player dies, among other things.
$7E:0B9D 1 byte If the value in it is not zero, run the actual game; otherwise, loop forever. It's set to a non-zero value during NMI, and it's set to zero after the game mode has been run, so that the game runs exactly once a frame - one NMI trigger per frame.
$7E:0B9E 1 byte "True" frame counter. Always increments once per frame.
$7E:0BA6 2 bytes Value of Pseudo-Random Number Generator.
$7E:0BAC 1 byte X's sub-pixel X-position.
$7E:0BAD 2 bytes X's X-position, in pixels.
$7E:0BAF 1 byte X's sub-pixel Y-position.
$7E:0BB0 2 bytes X's Y-position, in pixels.
$7E:0BBB 1 byte X's blink (close and open eyes) animation timer. If X is standing still, begin the following cycle:
- Start with #$50, decrease by one every frame until it reaches 0;
- Make X blink once (#$08-frame-long blink);
- Set to #$30, decrease by one every frame until it reaches 0;
- Make X blink twice (#$04-frame-long blinks);
If X is moving, reset the cycle.
$7E:0BBF 1 byte X's sprite (bits 0-7).
$7E:0BC2 2 bytes X's X-velocity, in sub-pixels per frame.
$7E:0BC4 2 bytes X's Y-velocity, in negative sub-pixels per frame.
$7E:0BC6 1 byte X's Y-acceleration, in sub-pixels per frame per frame.
$7E:0BCF 1 byte X's current health.
$7E:0BDB 1 byte Current weapon selected. A list of values can be found here.
$7E:0BDD 1 byte Number of bullets (of any shot type) onscreen.
$7E:0BDE 6 bytes Controller data. Disabled buttons (such as default X and select) are not included.
$7E:0BF8 1 byte Timer for how long to display X's buster after shooting. Set to #$FF when X's buster isn't out, set to #$0F and decreases once per frame after shooting. Is reset to #$0F with each successive shot.
$7E:0BFA 1 byte Dashing timer. Decreases by one every frame. Once it hits 0, X stops dashing. Freezes at the last value it was at if X stop dashing before it reaches 0.
$7E:0BFF 1 byte Timer for the level of X's charge shot, while charging. Starts at #$95 and decreases once per frame. #$95 = green shot charged, #$4F = blue shot charged, #$01 = pink shot charged.
$7E:0C03 1 byte Level of X's charged shot, while charging. #$00 = not charging, #$01 = pink shot charged, #$02 = blue shot charged, #$03 = green shot charged.
$7E:0C06 1 byte Bitflags: Standing = #$04, hanging on left wall = #$02, right wall = #$01.
$7E:0C11 1 byte X's direction. #$00 = left, #$40 = right.
$7E:0C13 1 byte X's recovery (flashing) time after a hit. Decreases by one every frame.
$7E:0C30 96 bytes Stuff for armor parts (position, type, and so forth). TODO
$7E:0E18 1 byte Ride armor exist flag (#$00 = ride armor does not exist, #$01 = ride armor exists).
$7E:0E1A 1 byte Ride armor's current state. (#$00 = empty, #$02 = still, #$04 = walking, #$06 = punching, #$08 = jumping, #$0E = dashing, #$14 = mount ride armor, #$16 = dismount ride armor)
$7E:0E1C 1 byte Ride armor's sub-pixel X-position.
$7E:0E1D 2 bytes Ride armor's X-position, in pixels.
$7E:0E1F 1 byte Ride armor's sub-pixel Y-position.
$7E:0E20 2 bytes Ride armor's Y-position, in pixels.
$7E:0E32 2 bytes Ride armor's X-velocity, in sub-pixels per frame.
$7E:0E34 2 bytes Ride armor's Y-velocity, in negative sub-pixels per frame.
$7E:0E36 1 byte Ride armor's Y-acceleration, in sub-pixels per frame per frame
$7E:0E4B 1 byte Ride armor's heading (#$00 = facing left, #$40 = facing right).
$7E:0E4E 6 bytes Controller data, if ride armor is nearby. Disabled buttons (such as default X and select) are not included. Data for previous frame not included.
$7E:0E68 64*15 bytes Enemy data. Each enemy is given 64 bytes.
$7E:1228 64*8 bytes X's shot/bullet data. Each shot is given 64 bytes.
$7E:1428 64*8 bytes Enemy shot/bullet data. Each shot is given 64 bytes.
$7E:1628 48*16 bytes Misc. data (such as item drops). Each item is given 48 bytes.
$7E:1928 Unknown Unknown data (possibly including shot impact and explosion sprites). Each part is given 32 bytes.
$7E:1ED2 1 byte Current item selected on the pause menu.
#$00 = X Buster
#$01 = Homing Torpedo
#$02 = Chameleon Sting
#$03 = Rolling Shield
#$04 = Fire Wave
#$05 = Storm Tornado
#$06 = Electric Spark
#$07 = Boomerang Cutter
#$08 = Shotgun Ice
#$09 = Escape Unit
#$0A = Sub Tank 1
#$0B = Sub Tank 2
#$0C = Sub Tank 3
#$0D = Sub Tank 4
$7E:1F7A 1 byte Current level ID.
#$00 = Highway/intro stage
#$01 = Launch Octopus
#$02 = Sting Chameleon
#$03 = Armored Armadillo
#$04 = Flame Mammoth
#$05 = Storm Eagle
#$06 = Spark Mandrill
#$07 = Boomer Kuwanger
#$08 = Chill Penguin
#$09 = Sigma Stage 1
#$0A = Sigma Stage 2
#$0B = Sigma Stage 3
#$0C = Sigma Stage 4
$7E:1F7E 1 byte Increases by one each time you visit the Hadoken capsule location. It's used when determining whether or not to make the capsule appear.
$7E:1F80 1 byte Life counter. Capped at #$09.
$7E:1F87 16 bytes Weapon Energy. Each weapon's energy is stored as two bytes. First byte: Sub-unit amount. Second byte (bits 0 to 5): Unit amount.
Once unit amount is 0, sub-unit amount cannot be used even if it is not 0.
Usage: Homing Torpedo and Chameleon Sting: 1/2 unit; Fire Wave: 1/16 unit; Everything else: 1 unit.
$7E:1F99 1 byte Bitflags for upgrades and sub-tanks collected. Format: dcbaZYXW
Upgrades: W = Head; X = Arm (Buster); Y = Body (Armor); Z = Leg (Dash).
Sub-tanks: a = Eagle; b = Armadillo; c = Mandrill; d = Mammoth.
$7E:1F9A 1 byte X's maximum health. Increases by 2 per heart tank.
$7E:1F9C 1 byte Bitflags for heart tanks collected. Format: hgfedcba
a = Penguin; b = Armadillo; c = Eagle; d = Chameleon; e = Mammoth; f = Kuwanger; g = Mandrill; h = Octopus.

Enemy/Object data

Offset Byte length Description
#$0 1 byte Object in memory flag. #$00 = No object in memory. #$01 = Object exists in memory.
#$1 1 byte Object's action 1.
#$2 1 byte Object's action 2.
#$4 1 byte Object's sub-pixel X-position.
#$5 2 bytes Object's X-position, in pixels.
#$7 1 byte Object's sub-pixel Y-position.
#$8 2 bytes Object's Y-position, in pixels.
#$A 1 byte Object ID.
#$13 1 byte Animation countdown (animates and reset when zero).
#$17 1 byte Object sprite (bits 0-7).
#$1A 2 bytes Object X-velocity, in sub-pixels per frame.
#$1C 2 bytes Object Y-velocity, in negative sub-pixels per frame.
#$1E 1 byte Object Y-acceleration, in sub-pixels per frame per frame.
#$22 2 bytes Object X-position, in pixels.
#$24 2 bytes Object Y-position, in pixels.
#$27 1 byte Object's current health.
#$28 24 bytes Unknown. Contains further data about the object, such as recovery timers for bosses. Data may not be fixed.


Combined RSS Feed
GameResources/SNES/MegaManX/RAMMap last edited by FractalFusion on 2015-09-15 18:47:12
Page info and history | Latest diff | List referrers | View Source