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.

The 3-D Battles of World Runner/RAM map

From Data Crystal
Jump to navigation Jump to search

Chip tiny.png The following article is a RAM map for The 3-D Battles of World Runner.

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)
0x004B Ground status 0x1E if you are walking, 0x14 if you are floating ;) (this probably means you are dying, unless you're jumping)
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 Shadow sprites
0x0500 - 0x05FF Object data Details about ingame objects are put here. See below for details.
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

Object Data

Objects are stored in the 0x0500-0x05FF range. 16 bytes for each object. Object can be an enemy but also stars and pillars, even the black gap is an object. Basically anything that's not tiled ground, background or music. You get the position of the object (where the start of the level is 0 and increments as you walk forward) by the tupel 0x05-3 and 4, where 3 is the least significant part.

I determined the bytes mean as follows:

 0x05-0: object type (see list below), 0 = empty
 0x05-1: horizontal start position, one of eight: 00 20 40 60 80 A0 C0 E0 (enemies only use half of these). they snap to the gridlines you see ingame.
 0x05-2: not sure yet, always zero?
 0x05-3: lower position in the level
 0x05-4: upper position in the level
 0x05-5: possibly something to do with forward position...
 0x05-6: sets color of pillar :D
 0x05-7: seen this used with the explosion object (0x28) as a countdown from 8 to 0, after which the object disappears (becomes 00). also contains contents of green pillars (3=gun, 2=potion?, 1=poison, 4=heart, 5=invincible, 6=time, 7&8=you! :p, anything up 6 is bogus)
 0x05-8: when you bump into a pillar, this value indicates where the item is. when it disappears (whether you get it or not) it resets the contents to 0.
 0x05-9 - 0x05-B: unused (not reset at start)
 0x05-C: object cycle counter. 0 = start position, different enemies count to different numbers. freezing this address freezes the movement of that object
 0x05-D: object tile counter. always counts up, but only when on screen, not sure how this works but when you freeze it, the object appearance will freeze
 0x05-E: weird. dunno
 0x05-F: some kind of argument? for pillars (0x2F), 00 indicates green ok pillar, 01 indicates purple killer pillar

All numbers in hex. If they appear in 0x0500, 0x0510, 0x50520 ... 0x05F0, that's the object.

 01 - 0A = different stars
 0B = gap (the stuff you fall down into)
 0C = ? (ground?)
 0D = star jumping left to right and back
 0E = jump frog
 0F = jump frog moving horizontally
 10 = green froglike enemy
 11&12 = jump thing? dunno
 13&14 = hand "enemy"
 15 = green horizontal enemy slow
 16 = white bouncy enemy
 17 = green horizontal enemy fast
 18 = white horiontal high floating enemy
 19 = some kind of hovering circling enemy
 1A = circling darkgreen ghost
 1B = zigzag darkgreen ghost
 1C = double zigzag darkgreen ghost
 1D = square moving enemy
 1E = moving left, jumping right, enemy
 1F = just a shadow...
 20 = like a shark-thing enemy
 21 = part of a bigger picture... moving left and right
 21 = same thing but circling
 23 = shark again
 24 = green enemy, twisted tiles
 25 = 24 fast
 26 = shark
 27 = crap
 28 = explosion (transition to 00, countdown from 0x8 on 0x0537)
 29 = white horizontal moving enemy
 2A = horizontal dark ghost
 2B = half a green horizontal enemy
 2C = screwy green horizontal enemy
 2E = warp bubble
 2F = pillar (with args?)
 30 = dunno, just a shadow
 31-35 = locks up nes
 36 = horizontal moving star
 37-3A = locks up nes
 3B = lock up, but nice tiles
 42 = dunno, looks weird, not locking up though, seems to be a string if you make more of them
 41 = cool colors (not the 3d thing!)
 45 = horizontal moving star
 46 = starts some weird bossmode when done while playing
 4E = dunno
 52&53 = soft reset when done while normal mode
 55 = weird boss mode
 58 = wrong tiled green horizontal enemy
 5A&5B = weird boss mode
 5C = tiled crash
 62 = nothing? there are more like this
 71 = weird colors again
 72 = weird colors with you flashing white
 i got bored of it here... :p