Difference between revisions of "Super Mario Kart:RAM map"

From Data Crystal
Jump to navigation Jump to search
m
 
(27 intermediate revisions by 11 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
 +
</pre>
 +
{{Internal Data|game=Super Mario Kart}}
 +
 +
----
 +
 +
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(?)

Latest revision as of 02:22, 21 February 2019

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


Internal Data for Super Mario Kart

ROM MapRAM MapText TableNotesTutorials



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(?)