3-D WorldRunner:RAM map

From Data Crystal
Revision as of 20:41, 24 July 2008 by (talk) (Work in progress -- qFox)
Jump to: navigation, search

RAM Address Function Details
0x0022 Horizontal ground scrolling If this does not change, the ground does not scroll left or right.
0x0023 Vertical ground scrolling If this does not change, the ground does not scroll forward or backwards.
0x0024 - 0x0025 Input flags Controller input
0x002E Horizontal position The game is 255 units or positions wide in a wrap around world
0x0035 Heading 0x00 = forward, 0xFF = backward (when bumping into pillar)
0x0052 Forward movement Freezing this causes you not to move forward (allowing you to analyze enemy movement for rom analyze ;)
0x005D Height Offsets at 0 when on the ground, moves up/down by 2. you can fire when this value <= 2 going or staying down. once jumping, you have one frame to fire.
0x0065 Airborne 0=no, 1=yes
0x007c Unsure 0x0A means uncontrollable...
0x0080 Invincibility Timer
0x0082 Invincibility Activated
0x0083 Timer Some kind of count down when fired, doesnt seem to impact gameplay... starts at 28 every shot
0x0089 Timer low
0x008B Timer high
0x0092 new life state 0 = starting game (reset) or nothing (just alive), 224 = gameover, 128 = unmoveable (like coming onscreen new game) until 0, 112 = dying until 128
0x00A8 Some kind of forward position
0x00C0 Some kind of forward position
0x00D0 Distance of current shot You can not fire when this is >0, and it reaches 0 before the last shot leaves the visual range. Resets immediately when hitting an enemy.
0x00D9 Something about height as well Offsets at 181 when on the ground and decreases as you go up. There are more addresses like this one in the 0x02xx range
0x00E0 Number of Lives in Reserve
0x00E1 Rocket
0x00E3 Red Potion
0x00E5 Number of Stars
0x00EE World
0x00EF 3-D Effect
0x0400-402 Enemy data Still analyzing, but this whole range is meant for enemy data. 0x0603 - 0x0608 Score (value minus 0x30) is score, xxxxxx, where 100's = 0x0606, 1000's = 0x0604 etc. when the counter ticks at 999900, 0x0607's lowbyte turns to 9 as well (only time ever). After that no increments are possible. The game doesn't use the 0x0608 lowbyte, but you can set them all to 9 to get the game to show 999999 as score :) What the 0x30 represents I can't tell.
0x06C0 - 0x070F Ground Indicates land, where "you" seem to be on 0x070D, E or F and 0x06C0 is at the horizon. Only lowbytes are used, E means land, 4 means gap. The graphics are adjusted according to these values (freezing them to 14 will mean there appear no gaps and you never fall)
0x0700-0x071F Palettes
0x0780-0x079F Top ground tiles Reflect the rotating ground tiles except for the bottom row (one full bottom row tile in height). Does not change if 0x0023 does not change.
0x07A0-0x07BF Bottom ground tiles Reflect the bottom pixels of the ground tiles. Only one big tile high. Does not change if 0x0023 does not change.

At normal walking speed you can see 128 frames ahead. meaning, 128 after you see a gap for the first time, you'll fall into it. For slow speed double these values, for fast speed half them.

Jumping has speed of +2 and -2 for going up and down for a normal jump Max height is 96 for a normal jump (48 frames) Min height is 32 for a normal jump (16 frames) This means you can release the jump button, once in the air for a gap, if there is land (height/2)+1 frames from your current position. This means, that land has to be between 16 and 48 frames from where you are before you can release the jump button, x2 for slow and /2 for fast. This also means the max one jump can be is 96 frames, at fast this means 192 frames

More later...