The current URL is datacrystal.tcrf.net.
The 3-D Battles of World Runner/RAM map
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
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