Super Mario Kart/RAM map: Difference between revisions

From Data Crystal
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
 
(30 intermediate revisions by 14 users not shown)
Line 1: Line 1:
{{rammap|game=Super Mario Kart}}
{{rammap|game=Super Mario Kart}}
Locations of variables in RAM,
Locations of variables in RAM,
for the US version of Super Mario Kart for the Super NES
for the US version of Super Mario Kart for the Super NES. These were ascertained for Player 1 using Bowser on 150cc mode (shouldn't make a difference, though)
these were ascertained for Player 1 using bowser on 150cc mode (shouldn't make a difference, though)
<pre>
 
Player kart position coordinates, 2 unsigned bytes each:
Player kart position, 2 bytes unsigned each:
7E008C = how far south
7E1058 = how far south
7E0088 = how far east
7E0088 = how far east
So the 'origin' of the map is in the North West (top left)
So the 'origin' of the map is in the North West (top left)


How many coins, 1 byte unsigned: 7E0E00
How many coins, unsigned byte: 7E0E00


Player kart facing angle, 2 bytes unsigned: 7E0095
Camera facing angle, 2 unsigned bytes: 7E0095
north = 0
north = 0
east = 64
east = 64
Line 17: Line 17:
west = 192
west = 192


Player kart speed, 2 bytes signed:
Kart facing angle (note: relative to the camera angle), 2 signed bytes: 7E10AA
Going straight = 0
Going a little to the right = -1 to about -12000
Going a little to the left = 1 to about 12000
Spinning out of control = more than about  /- 16500
(eg hit a bananna skin, shell, etc)
 
Player kart speed, 2 signed bytes each:
speed to the east = 7E1022
speed to the east = 7E1022
speed to the south = 7E1024
speed to the south = 7E1024
 
overall speed = 7E10EA
Skidding/spin out of control, 2 bytes signed: 7E10AA
Not skidding = 0
Skidding a little to the right = -1 to about -12000
Skidding a little to the left = 1 to about 12000
Spinning out of control = more than about +/- 16500


Items, 2 unsigned bytes: (7E0D70, 7E0C69)
Items, 2 unsigned bytes: (7E0D70, 7E0C69)
Line 39: Line 41:
selecting/spinning = (0-8,?)
selecting/spinning = (0-8,?)


Height in hop/jump/ramp, 2 bytes unsigned: 7E101F
7E0D7C (2u) also indicates item, and is set the instant you go over an item square
 
Height in hop/jump/ramp, 2 unsigned bytes: 7E101F
on ground = 0
on ground = 0
above ground = 1+
above ground = 1  


Status, 1 byte unsigned: 7E10A0
Status, unsigned byte: 7E10A0
on the ground = 0
on the ground = 0
jump/hop/ramp = 2
jump/hop/ramp = 2
Line 50: Line 54:
in deep water = 8
in deep water = 8


Surface type, 1 byte unsigned: 7E10AE
Surface type, unsigned byte: 7E10AE
unused power up square = 20
unused power up square = 20
deep water = 34
deep water = 34
mario circuit road / ghost valley road / used power up square / rainbow road = 64
mario circuit road / ghost valley road / used power up square / rainbow road = 64
bowser castle = 68
bowser castle = 68
doughnut plains course = 70
doughnut plains track = 70
koopa beech sand = 74
koopa beach sand = 74
choco island track = 76
choco island track = 76
ghost valley rough bit / bowser castle rough bit / ice = 78
ghost valley rough bit / bowser castle rough bit / ice = 78
choco island bridges = 80
choco island bridges = 80
choco island slightly rough bit of track = 82
choco island slightly rough bit of track = 82
mario circuit crud = 84
mario circuit off road = 84
choco island off road = 86
choco island off road = 86
snow = 88
snow = 88
koopa beech bushes / doughnut plains grass = 90
koopa beach bushes / doughnut plains grass = 90
shallow-water = 92
shallow-water = 92
mud puddle = 94
mud puddle = 94


Gopher attatched to kart: 7E1061
Lap number, two variables, both unsigned bytes:
No = 0
byte 7E10C1 = lap you're currently on
Yes = 152 / 153
byte 7E10F9 = maximum lap you've reached
0 = 127
1 = 128
2 = 129
3 = 130
4 = 131
5 = 132
finished = 133
 
Collision detection, unsigned byte: 7E1052
not collision = 0
collision = 7, then one less each frame down to 0
 
Gopher attatched to kart, unsigned byte: 7E1061
no = 0
yes = 152 / 153


Mushroom shrunk, unsigned 1 byte: 7E1030  
Mushroom shrunk, unsigned byte: 7E1030  
no = 0
no = 0
yes = 128
yes = 128
Boost-counter (undocumented feature - see http://tasvideos.org/SuperMarioKartPhysics.html).
Two unsigned bytes: 7E10CA
Kart skidded out of control, unsigned byte: 7E10A6
normal = 0/2
using a star = 0/2/28
hit a banana-peel = 12
skidded out right = 14
skidded out left = 16
in a mini-boost = 18
at mini-boost peak = 28
hit something (eg a wall) = 18/28
In a mushroom boost or not, unsigned byte: 7E104E
in the boost = 58
not = 26
----
Notes by lytron
$7E/1x14/5 - NPC driver Sprite - #$03C0 Mario, #$??84 Toad, #$0788 DK, #$??8C Bowser
$7E/1x17-B?- NPC driver x-coordinate(?)
$7E/1x1C-F?- NPC driver y-coordinate(?)
</pre>
{{Internal Data|game=Super Mario Kart}}

Latest revision as of 18:10, 10 February 2024

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

Locations of variables in RAM, for the US version of Super Mario Kart for the Super NES. These were ascertained for Player 1 using Bowser on 150cc mode (shouldn't make a difference, though)

Player kart position coordinates, 2 unsigned bytes each:
7E008C = how far south
7E0088 = how far east
So the 'origin' of the map is in the North West (top left)

How many coins, unsigned byte: 7E0E00

Camera facing angle, 2 unsigned bytes: 7E0095
north = 0
east = 64
south = 128
west = 192

Kart facing angle (note: relative to the camera angle), 2 signed bytes: 7E10AA
Going straight = 0
Going a little to the right = -1 to about -12000
Going a little to the left = 1 to about 12000
Spinning out of control = more than about  /- 16500
(eg hit a bananna skin, shell, etc)

Player kart speed, 2 signed bytes each:
speed to the east = 7E1022
speed to the south = 7E1024
overall speed = 7E10EA

Items, 2 unsigned bytes: (7E0D70, 7E0C69)
nothing = (0,60)
mushroom = (0,52)
feather = (1,52)
star = (2,56)
banana = (3,56)
green shell = (4,48)
red shell = (5,52)
coin = (7,56)
lightning = (8,56)
selecting/spinning = (0-8,?)

7E0D7C (2u) also indicates item, and is set the instant you go over an item square

Height in hop/jump/ramp, 2 unsigned bytes: 7E101F
on ground = 0
above ground = 1 

Status, unsigned byte: 7E10A0
on the ground = 0
jump/hop/ramp = 2
fallen off edge = 4
in lava = 6
in deep water = 8

Surface type, unsigned byte: 7E10AE
unused power up square = 20
deep water = 34
mario circuit road / ghost valley road / used power up square / rainbow road = 64
bowser castle = 68
doughnut plains track = 70
koopa beach sand = 74
choco island track = 76
ghost valley rough bit / bowser castle rough bit / ice = 78
choco island bridges = 80
choco island slightly rough bit of track = 82
mario circuit off road = 84
choco island off road = 86
snow = 88
koopa beach bushes / doughnut plains grass = 90
shallow-water = 92
mud puddle = 94

Lap number, two variables, both unsigned bytes:
byte 7E10C1 = lap you're currently on
byte 7E10F9 = maximum lap you've reached
0 = 127
1 = 128
2 = 129
3 = 130
4 = 131
5 = 132
finished = 133

Collision detection, unsigned byte: 7E1052
not collision = 0
collision = 7, then one less each frame down to 0

Gopher attatched to kart, unsigned byte: 7E1061
no = 0
yes = 152 / 153

Mushroom shrunk, unsigned byte: 7E1030 
no = 0
yes = 128

Boost-counter (undocumented feature - see http://tasvideos.org/SuperMarioKartPhysics.html).
Two unsigned bytes: 7E10CA

Kart skidded out of control, unsigned byte: 7E10A6
normal = 0/2
using a star = 0/2/28
hit a banana-peel = 12
skidded out right = 14
skidded out left = 16
in a mini-boost = 18
at mini-boost peak = 28
hit something (eg a wall) = 18/28

In a mushroom boost or not, unsigned byte: 7E104E
in the boost = 58
not = 26

----

Notes by lytron

$7E/1x14/5 - NPC driver Sprite - #$03C0 Mario, #$??84 Toad, #$0788 DK, #$??8C Bowser
$7E/1x17-B?- NPC driver x-coordinate(?)
$7E/1x1C-F?- NPC driver y-coordinate(?)