Mario Kart 64
common_structs.h
Go to the documentation of this file.
1 #ifndef _COMMON_STRUCTS_H_
2 #define _COMMON_STRUCTS_H_
3 
4 #include "ultra64.h"
5 
6 typedef f32 Vec3f[3];
7 
8 typedef s16 Vec3s[3];
9 typedef u16 Vec3su[3];
10 typedef s16 Vec4s[4];
11 
12 typedef f32 Mat3[3][3];
13 typedef f32 Mat4[4][4];
14 
15 // might not be real, used by func_8002C954
16 typedef struct
17 {
18  f32 x, y, z;
19 } Vec3fs;
20 
21 #define COURSE_NULL 0xFF
22 
23 typedef enum {
24  /* 0x00 */ COURSE_MARIO_RACEWAY = 0,
28  /* 0x04 */ COURSE_YOSHI_VALLEY,
30  /* 0x06 */ COURSE_KOOPA_BEACH,
33  /* 0x09 */ COURSE_MOO_MOO_FARM,
36  /* 0x0C */ COURSE_SHERBET_LAND,
37  /* 0x0D */ COURSE_RAINBOW_ROAD,
39  /* 0x0F */ COURSE_BLOCK_FORT,
40  /* 0x10 */ COURSE_SKYSCRAPER,
41  /* 0x11 */ COURSE_DOUBLE_DECK,
42  /* 0x12 */ COURSE_DK_JUNGLE,
43  /* 0x13 */ COURSE_BIG_DONUT,
45  /* 0x15 */ NUM_COURSES
47 
48 typedef enum {
65  /* 0x10 */ NUM_TIME_TRIAL_DATA
67 
69  /* 0x00 */ AIRBORNE,
70  /* 0x01 */ PAVEMENT, // Luigi's Raceway, Toad's Turnpike, Koopa Troop beach shortcut tunnel, Mario Raceway, Royal Raceway, Rainbow Road, Block Fort, Double Deck, Skyscraper
71  /* 0x02 */ SAND_ONE, // Luigi's Raceway, Moo Moo Farm, Kalimiari Desert on course, Choco Mountain, Wario Stadium, DK Jungle on course, Yoshi Valley
72  /* 0x03 */ SAND_TWO, // Koopa Troopa Beach light color, Royal Raceway
73  /* 0x04 */ STONE_TWO, // Royal Raceway castle entrance, Bowser's Castle
74  /* 0x05 */ SNOW_ONE, // Frappe Snowland on course, Sherber Land tunnel
75  /* 0x06 */ STONE_ONE, // Royal Raceway castle bridges (even the wooden one), Banshee's Boardwalk, Big Donut
76  /* 0x07 */ SAND_FIVE, // Mario Raceway
77  /* 0x08 */ GRASS, // Luigi's Raceway, Mario Raceway, Royal Raceway, Bowser's Castle, DK Jungle, Yoshi Valley
78  /* 0x09 */ ICE, // Sherbert Land
79  /* 0x0A */ SAND_THREE, // Koop Troopa Beach dark color
80  /* 0x0B */ SNOW_TWO, // Frappe Snowland off course
81  /* 0x0C */ CLIFF, // Koopa Troopa Beach, Choco Mountain
82  /* 0x0D */ SAND_FOUR, // Kalimari Desert off course
83  /* 0x0E */ TRAIN_TRACK, // Kalimari Desert
84  /* 0x0F */ DIRT, // DK Jungle cave
85  /* 0x10 */ WOOD_TWO, // Bowser's Castle bridge 2, DK Jungle bridge
86  /* 0x11 */ WOOD_ONE, // Frappe Snowland bridge, Bowser's Castle bridge 1,3, Yoshi Valley bridge 2
87  /* 0xFC */ BOOST_PAD_TWO = 0xFC, // DK Jungle
88  /* 0xFD */ OUT_OF_BOUNDS, // DK Jungle river island
89  /* 0xFE */ BOOST_PAD_ONE, // Royal Raceway
90  /* 0xFF */ RAMP // Koopa Troopa beach
91 };
92 
93 // This was added as a silly idea:
94 // In the data to use "A, B, Z, R" instead of hex numbers.
95 typedef enum {
96  A = 0x80,
97  B = 0x40,
98  Z = 0x20,
99  R = 0x10
101 
102 typedef struct {
107 } StaffGhost;
108 // 80160ADC Banana's remaining
109 
110 typedef struct {
111  /* 0x00 */ u16 unk30;
112  /* 0x02 */ u16 unk32;
113  /* 0x04 */ u16 unk34;
114  /* 0x06 */ u16 unk36;
115  /* 0x08 */ u16 unk38;
116  // This may be an index to the tilemap?
117  /* 0x0A */ u16 unk3A;
118  /* 0x0C */ Vec3f unk3C;
119  /* 0x18 */ Vec3f unk48;
120  /* 0x24 */ Vec3f unk54;
121  /* 0x30 */ Vec3f unk60;
122  /* 0x3C */ f32 unk6C;
123 } Collision;
124 
125 typedef struct {
126  /* 0x00 */ Vec3f unk_000;
127  /* 0x0C */ f32 unk_00C;
128  /* 0x10 */ u16 unk_010;
129  /* 0x12 */ u16 unk_012;
130  /* 0x14 */ f32 unk_014;
131  /* 0x18 */ f32 unk_018;
132  /* 0x1C */ s16 unk_01C;
133  /* 0x1E */ s16 unk_01E;
134  /* 0x20 */ s16 unk_020;
135  /* 0x22 */ s16 unk_022;
136  /* 0x24 */ f32 unk_024;
137  /* 0x28 */ f32 unk_028;
138  /* 0x2C */ s16 unk_02C;
139  /* 0x2E */ s16 unk_02E;
140  /* 0x30 */ s16 unk_030;
141  /* 0x32 */ s16 unk_032;
142  /* 0x34 */ s16 unk_034;
143  /* 0x36 */ s16 unk_036;
144  /* 0x38 */ s16 unk_038;
145  /* 0x3A */ s16 unk_03A;
146  /* 0x3C */ s16 unk_03C;
147  /* 0x3E */ s16 unk_03E;
148  /* 0x40 */ s16 unk_040;
149  /* 0x42 */ s16 unk_042;
150  /* 0x44 */ s16 unk_044;
151  /* 0x46 */ s16 unk_046;
152 } UnkPlayerStruct258; // size = 0x48
153 
154 // This struct is almost identical to the GBI Vtx_t type,
155 // except that its missing the "flag" member.
156 typedef struct {
157  s16 ob[3]; /* x, y, z */
158  s16 tc[2]; /* texture coord */
159  u8 ca[4]; /* color & alpha */
160 
161 } mk64_Vtx;
162 
163 typedef struct {
164  s16 ob[3]; /* x, y, z */
165  s16 tc[2]; /* texture coord */
166  s8 n[3]; /* color & alpha */
167 } mk64_Vtx_n;
168 
169 /*
170 This struct has been copied (with only minor modifications) from
171 https://github.com/micro500/mariokart64/wiki/Surface-Map
172 on January 23rd, 2022
173 The original author is assumed to be RenaKunisaki
174 */
175 typedef struct {
176  /* 0x00 */ u16 flags;
177  // Top bytes is a collections of flags, bottom byte is of unknown purpose
178  //bit 7: 1 = only tangible if landed on, not if driven onto?
179  // very weird. game crashes sometimes when playing with this.
180  //bit 6: 1 = Lakitu can drop you here (XXX verify)
181  //bit 4: 1 = out of bounds
182  //bit 3: 1 = player tumbles upon contact (may fall right through)
183  /* 0x02 */ u16 surfaceType;
184  /* 0x04 */ s16 vtx31;
186  s16 vtx33; //X, Y, Z of poly's third vertex
189  /* 0x0A */ s16 vtx23; //X, Y, Z of poly's second vertex
190  /* 0x10 */ Vtx *vtxPoly1; //pointer to the 3 vertices of this poly
191  Vtx *vtxPoly2;
192  Vtx *vtxPoly3;
193  //unsure why this exists along with a copy of two of the vertices.
194  //both are involved in hit detection.
195  /* 0x1C */ f32 height;
196  //normally 0; read at 0x802AB1A4. this value is added to the height Lakitu
197  //drops you at. changing it seems to make the surface intangible.
198  /* 0x20 */ f32 gravity;
199  //normally 1. The height Lakitu drops you off at is divided by this value
200  //(before adding the value at 0x1C), although if set to zero, he just tries
201  //to drop you at about the height of the finish line banner. Changing it
202  //has various unusual effects, making the polygon intangible or
203  //significantly reducing the gravity above it, probably depending on its Y
204  //position.
205  /* 0x24 */ f32 rotation; //normally about -0.001. no idea what this actually is.
206  /* 0x28 */ f32 height2; //changes Y position of all vertices (but not graphics or
207  //Lakitu drop position). Normally set to (track_height * -1) + about 6.
208 } mk64_surface_map_ram; // size = 0x2C
209 
210 typedef struct {
211  /* 0x00 */ Vec3f cornerPos;
212  // Type of surface the corner is above
213  /* 0x0C */ u8 surfaceType;
214  // Close to being a copy of the top byte of the surface_map "flag" member
215  /* 0x0D */ u8 surfaceFlags;
216  // Don't know if "tile" is right the right term
217  // gSurfaceMap is a pointer to an array of "tile" structs. This is an index to that array
218  /* 0x0E */ u16 surfaceMapIndex;
219  // cornerPos places the corner "in the air" as it were, this member indicates the Y position of the corner's "on the ground" sibling
220  // On flat ground this value should be cornerY - gKartBoundingBoxTable[characterId]
221  /* 0x10 */ f32 cornerGroundY;
222  // Something lighting related. 1 when in a shaded region, 2 when in a tree's shadow
223  // 3 when getting crushed by a whomp, but curiously only the front left tyre will ever have this value
224  /* 0x14 */ s32 unk_14;
225 } KartBoundingBoxCorner; // size = 0x18
226 
227 #define FRONT_LEFT_TYRE 0
228 #define FRONT_RIGHT_TYRE 1
229 #define BACK_LEFT_TYRE 2
230 #define BACK_RIGHT_TYRE 3
231 
233  /* 0xDB4 */ s16 unk0;
234  /* 0xDB6 */ s16 unk2;
235  /* 0xDB8 */ f32 unk4;
236  /* 0xDBC */ f32 unk8;
237  /* 0xDC0 */ f32 unkC;
238  /* 0xDC4 */ f32 unk10;
239  /* 0xDC8 */ f32 unk14;
240  /* 0xDCC */ s16 unk18;
241  /* 0xDCE */ s16 unk1A;
242  /* 0xDD0 */ s16 unk1C;
243  /* 0xDD2 */ s16 unk1E;
244  /* 0xDD4 */ s16 unk20;
245 };
246 
247 typedef struct {
248  /* 0x0000 */ u16 type; // playerType?
249  /* 0x0002 */ u16 unk_002;
250  /* 0x0004 */ s16 currentRank;
251  /* 0x0006 */ u16 unk_006;
252  /* 0x0008 */ s16 lapCount;
253  /* 0x000A */ char unk_00A[0x2];
254  /* 0x000C */ s32 statusEffects; // Bitflag.
255  /* 0x0010 */ s16 currentItemCopy; // Has no effect on what item the players has, It is just a synced copy
256  /* 0x0012 */ s16 unk_012;
257  /* 0x0014 */ Vec3f pos;
258  /* 0x0020 */ f32 rotX;
259  /* 0x0024 */ f32 rotY;
260  /* 0x0028 */ f32 rotZ;
261  /* 0x002C */ Vec3s unk_02C;
262  /* 0x0032 */ char unk_032[0x2];
263  /* 0x0034 */ Vec3f velocity;
264  /* 0x0040 */ s16 unk_040;
265  /* 0x0042 */ s16 unk_042;
266  /* 0x0044 */ s16 unk_044;
267  /* 0x0046 */ u16 unk_046;
268  /* 0x0048 */ Vec4s unk_048;
269  /* 0x0050 */ Vec4s unk_050;
270  /* 0x0058 */ f32 unk_058;
271  /* 0x005C */ f32 unk_05C;
272  /* 0x0060 */ f32 unk_060;
273  /* 0x0064 */ Vec3f unk_064;
274  /* 0x0070 */ f32 boundingBoxSize;
275  /* 0x0074 */ f32 unk_074;
276  /* 0x0078 */ s16 unk_078;
277  /* 0x007A */ s16 unk_07A;
278  /* 0x007C */ s32 unk_07C;
279  /* 0x0080 */ f32 boostPower;
280  /* 0x0084 */ f32 unk_084;
281  /* 0x0088 */ f32 unk_088;
282  /* 0x008C */ f32 unk_08C;
283  /* 0x0090 */ f32 unk_090;
284  /* 0x0094 */ f32 unk_094;
285  /* 0x0098 */ f32 unk_098;
286  /* 0x009C */ f32 currentSpeed;
287  /* 0x00A0 */ f32 unk_0A0;
288  /* 0x00A4 */ f32 unk_0A4;
289  /* 0x00A8 */ s16 unk_0A8;
290  /* 0x00AA */ s16 unk_0AA;
291  /* 0x00AC */ s16 unk_0AC;
292  /* 0x00AE */ s16 unk_0AE;
293  /* 0x00B0 */ s16 unk_0B0;
294  /* 0x00B2 */ s16 unk_0B2;
295  /* 0x00B4 */ u16 unk_0B4;
296  /* 0x00B6 */ u16 unk_0B6;
297  /* 0x00B8 */ f32 unk_0B8;
298  /* 0x00BC */ u32 effects;
299  /* 0x00C0 */ s16 unk_0C0;
300  /* 0x00C2 */ s16 unk_0C2;
301  /* 0x00C4 */ s16 slopeAccel;
302  /* 0x00C6 */ s16 unk_0C6;
303  /* 0x00C8 */ s16 unk_0C8;
304  /* 0x00CA */ s16 unk_0CA;
305  /* 0x00CC */ Vec4s unk_0CC;
306  /* 0x00D4 */ Vec4s unk_0D4;
307  /* 0x00DC */ s16 boostTimer;
308  /* 0x00DE */ u16 unk_0DE;
309  /* 0x00E0 */ s16 unk_0E0;
310  /* 0x00E2 */ s16 unk_0E2;
311  /* 0x00E4 */ f32 unk_0E4;
312  /* 0x00E8 */ f32 unk_0E8;
313  /* 0x00EC */ f32 kartHopVelocity;
314  /* 0x00F0 */ f32 kartHopJerk;
315  /* 0x00F4 */ f32 kartHopAcceleration;
316  /* 0x00F8 */ u16 unk_0F8;
317  /* 0x00FA */ s16 unk_0FA;
318  /* 0x00FC */ f32 kartFriction;
319  /* 0x0100 */ f32 kartGravity;
320  /* 0x0104 */ f32 unk_104;
321  /* 0x0108 */ f32 unk_108;
322  /* 0x010C */ s16 unk_10C;
323  /* 0x010E */ char unk_10E[0x2];
324  /* 0x0110 */ Collision unk_110;
325  /* 0x0150 */ Mat3 unk_150;
326  /* 0x0174 */ Mat3 orientationMatrix;
327  /* 0x0198 */ KartBoundingBoxCorner boundingBoxCorners[4];
328  /* 0x01F8 */ f32 unk_1F8;
329  /* 0x01FC */ f32 unk_1FC;
330  /* 0x0200 */ u32 unk_200; // May be s32. but less casting required if u32
331  /* 0x0204 */ s16 unk_204;
332  /* 0x0206 */ s16 unk_206;
333  /* 0x0208 */ f32 unk_208;
334  /* 0x020C */ f32 unk_20C;
335  /* 0x0210 */ f32 unk_210;
336  /* 0x0214 */ f32 topSpeed;
337  /* 0x0218 */ f32 unk_218;
338  /* 0x021C */ f32 unk_21C;
339  /* 0x0220 */ s16 nearestWaypointId; // ??
340  /* 0x0222 */ s16 unk_222;
341  /* 0x0224 */ f32 size;
342  /* 0x0228 */ s16 unk_228;
343  /* 0x022A */ s16 unk_22A;
344  /* 0x022C */ f32 unk_22C;
345  /* 0x0230 */ f32 unk_230;
346  /* 0x0234 */ s16 unk_234;
347  /* 0x0236 */ s16 unk_236;
348  /* 0x0238 */ s16 unk_238;
349  /* 0x023A */ s16 unk_23A;
350  /* 0x023C */ f32 unk_23C;
351  /* 0x0240 */ s32 unk_240;
352  /* 0x0244 */ u16 animFrameSelector[4]; // [0] Active texture group
353  /* 0x024C */ u16 animGroupSelector[4];
354  /* 0x0254 */ u16 characterId;
355  /* 0x0256 */ u16 unk_256;
356  /* 0x0258 */ UnkPlayerStruct258 unk_258[40];
357  /* 0x0D98 */ s16 unk_D98;
358  /* 0x0D9A */ s16 unk_D9A;
359  /* 0x0D9C */ f32 unk_D9C;
360  /* 0x0DA0 */ f32 unk_DA0;
361  /* 0x0DA4 */ s16 unk_DA4;
362  /* 0x0DA6 */ s16 unk_DA6;
363  /* 0x0DA8 */ f32 unk_DA8;
364  /* 0x0DAC */ f32 unk_DAC;
365  /* 0x0DB0 */ f32 unk_DB0;
366  /* 0x0DB4 */ struct UnkPlayerInner unk_DB4;
367  /* 0x0DB6 */ // s16 unk_DB6;
368  /* 0x0DB8 */ // f32 unk_DB8;
369  /* 0x0DBC */ //f32 unk_DBC;
370  /* 0x0DC0 */ // f32 unk_DC0;
371  /* 0x0DC4 */ // f32 unk_DC4;
372  /* 0x0DC8 */ // f32 unk_DC8;
373  /* 0x0DCC */ // s16 unk_DCC;
374  /* 0x0DCE */ // s16 unk_DCE;
375  /* 0x0DD0 */ // s16 unk_DD0;
376  /* 0x0DD2 */ // s16 unk_DD2;
377  /* 0x0DD4 */ // s16 unk_DD4;
378 } Player; // size = 0xDD8
379 
380 typedef struct
381 {
382  // Something related to time trial ghost data?
383  /* 0x00 */ s32 unk_00;
384  /* 0x04 */ u8 ghostDataSaved;
385  /* 0x05 */ s8 courseIndex;
386  /* 0x06 */ u8 characterId;
387  /* 0x07 */ u8 unk_07[0x3C];
388  /* 0x43 */ u8 pad_43[0x7F-0x43];
389  /* 0x7F */ u8 checksum;
390 } struct_8018EE10_entry; // size = 0x80
391 
392 typedef struct {
393  /* 0x00 */ u16 red;
394  /* 0x02 */ u16 green;
395  /* 0x04 */ u16 blue;
396  /* 0x06 */ u16 alpha;
397 } RGBA16; // size = 0x08
398 
399 // Something related to human players
400 // Also might be used for the camera during the post race screens
401 typedef struct {
402  /* 0x00 */ f32 unknownScaling; // Looks to be some type of scaling, unknown use
403  /* 0x04 */ f32 rankScaling; // Scaling done on the rank text in the bottom left corner of the screen
404  // All time measurements are in centiseconds
405  /* 0x08 */ u32 someTimer; // The someTimers seem to always have the same value, the total time since race start
406  /* 0x0C */ u32 someTimer1;
407  /* 0x10 */ u32 timeLastTouchedFinishLine; // Sum of time of all completed laps
408  // Times at which each lap was completed
409  union {
410  struct {
414  };
415  u32 lapCompletionTimes[3];
416  };
417  // Time each lap took to complete
418  union {
419  struct {
420  /* 0x20 */ u32 lap1Duration;
421  /* 0x24 */ u32 lap2Duration;
422  /* 0x28 */ u32 lap3Duration;
423  };
424  u32 lapDurations[3];
425  };
426  // Integer parts of the player's X/Y/X coordinates
427  /* 0x2C */ s32 posXInt;
428  /* 0x30 */ s32 posYInt;
429  /* 0x34 */ s32 posZInt;
430  /* 0x38 */ s32 unk_38;
431  // Timer for how long the on screen should blink on lap completion
432  // Blinking occurs as long as this is a non-zero value.
433  // Other on screen effects may override the blinking
434  /* 0x3C */ s16 blinkTimer;
435  /* 0x3E */ s16 speedometerX;
436  /* 0x40 */ s16 speedometerY;
437  /* 0x42 */ s16 itemBoxX;
438  /* 0x44 */ s16 itemBoxY;
439  /* 0x46 */ s16 slideItemBoxX;
440  /* 0x48 */ s16 slideItemBoxY;
441  // These 2 s16's have values, but I have yet to identify any places that read them
442  /* 0x4A */ s16 unk_4A;
443  /* 0x4C */ s16 unk_4C;
444  /* 0x4E */ s16 timerX; // X coordinate of the on screen timer
445  // These 4 X coordinates are "slide" values
446  union {
447  struct {
448  /* 0x50 */ s16 lap1CompletionTimeX; // Pulls double-duty as timerAfterImage1X
449  /* 0x52 */ s16 lap2CompletionTimeX; // Pulls double-duty as timerAfterImage2X
451  };
452  /* 0x50 */ s16 lapCompletionTimeXs[3];
453  };
454  /* 0x56 */ s16 totalTimeX;
455  /* 0x58 */ s16 timerY; // Y coordinate of the on screen timer (used as Y coordinate for lap completion times in post-race screen)
456  /* 0x5A */ s16 lapX; // X coordinate of the on screen lap counter
457  // 0x5C and 0x5E seem to be relative to lapX
458  /* 0x5C */ s16 lapAfterImage1X;
459  /* 0x5E */ s16 lapAfterImage2X;
460  /* 0x60 */ s16 lapY; // Y coordinate of the on screen lap counter
461  /* 0x62 */ s16 rankX; // X coordinate of the on screen rank indicator
462  /* 0x64 */ s16 rankY; // Y coordinate of the on screen rank indicator
463  /* 0x66 */ s16 slideRankX; // Adds with the other rankX, used during post race screen to make the rank "slide" into place
464  /* 0x68 */ s16 slideRankY; // Adds with the other rankY, used during post race screen to make the rank "slide" into place
465  /* 0x6A */ s16 stagingPosition; // Position to take during race staging
466  // These s16's occasionally have values, but I have yet to identify any places that read them
467  // They appear to have values when in 3/4 player split screen mode, otherwise they're 0
468  /* 0x6C */ s16 unk_6C;
469  /* 0x6E */ s16 unk_6E;
470  /* 0x70 */ s8 raceCompleteBool; // Indicates if race is over?
471  /* 0x71 */ s8 lapCount; // This increases to 3 when a race is over, while alsoLapCount stays at 2
472  /* 0x72 */ s8 alsoLapCount;
473  // Related to the timer blinking on lap completion
474  // If blinkTimer is counting down:
475  // 0: Show timer
476  // 1: Hide timer
477  // 2: ? Seems to be a transition state, never lasts a long enough for blinkTimer to tick
478  /* 0x73 */ s8 blinkState;
479  /* 0x74 */ s8 unk_74;
480  /* 0x75 */ s8 unk_75;
481  /* 0x76 */ u8 itemOverride; // Something related to item generation. If non-zero, it determines the item you get
482  /* 0x77 */ s8 unk_77;
483  // 0x78 to 0x7F appear to be some type of "state" trackers for the lap and timer text during a race start
484  // When a race starts those texts (and their afterimages) slide in and "bounce" a bit. These states control the bouncing (somehow)
485  /* 0x78 */ u8 unk_78;
486  /* 0x79 */ u8 unk_79;
487  /* 0x7A */ u8 unk_7A;
488  /* 0x7B */ u8 unk_7B;
489  /* 0x7C */ u8 unk_7C;
490  /* 0x7D */ u8 unk_7D;
491  /* 0x7E */ u8 unk_7E;
492  /* 0x7F */ u8 unk_7F;
493  /* 0x80 */ u8 unk_80;
494  /* 0x81 */ u8 unk_81;
495  /* 0x82 */ s8 unk_82;
496  /* 0x83 */ s8 unk_83;
497 } hud_player; // size = 0x84
498 
499 #define HUD_PLAYERS_SIZE 4
500 
501 #endif
s16 Vec4s[4]
Definition: common_structs.h:10
f32 Vec3f[3]
Definition: common_structs.h:6
SURFACE_TYPE
Definition: common_structs.h:68
@ PAVEMENT
Definition: common_structs.h:70
@ RAMP
Definition: common_structs.h:90
@ STONE_ONE
Definition: common_structs.h:75
@ SAND_ONE
Definition: common_structs.h:71
@ SAND_TWO
Definition: common_structs.h:72
@ WOOD_TWO
Definition: common_structs.h:85
@ SNOW_ONE
Definition: common_structs.h:74
@ SAND_THREE
Definition: common_structs.h:79
@ ICE
Definition: common_structs.h:78
@ OUT_OF_BOUNDS
Definition: common_structs.h:88
@ AIRBORNE
Definition: common_structs.h:69
@ TRAIN_TRACK
Definition: common_structs.h:83
@ BOOST_PAD_TWO
Definition: common_structs.h:87
@ WOOD_ONE
Definition: common_structs.h:86
@ SNOW_TWO
Definition: common_structs.h:80
@ SAND_FOUR
Definition: common_structs.h:82
@ CLIFF
Definition: common_structs.h:81
@ BOOST_PAD_ONE
Definition: common_structs.h:89
@ DIRT
Definition: common_structs.h:84
@ GRASS
Definition: common_structs.h:77
@ STONE_TWO
Definition: common_structs.h:73
@ SAND_FIVE
Definition: common_structs.h:76
GhostController
Definition: common_structs.h:95
@ R
Definition: common_structs.h:99
@ B
Definition: common_structs.h:97
@ A
Definition: common_structs.h:96
@ Z
Definition: common_structs.h:98
u16 Vec3su[3]
Definition: common_structs.h:9
s16 Vec3s[3]
Definition: common_structs.h:8
f32 Mat4[4][4]
Definition: common_structs.h:13
COURSES
Definition: common_structs.h:23
@ COURSE_WARIO_STADIUM
Definition: common_structs.h:38
@ COURSE_MARIO_RACEWAY
Definition: common_structs.h:24
@ COURSE_BANSHEE_BOARDWALK
Definition: common_structs.h:27
@ COURSE_KALAMARI_DESERT
Definition: common_structs.h:35
@ COURSE_BIG_DONUT
Definition: common_structs.h:43
@ COURSE_ROYAL_RACEWAY
Definition: common_structs.h:31
@ COURSE_BLOCK_FORT
Definition: common_structs.h:39
@ COURSE_FRAPPE_SNOWLAND
Definition: common_structs.h:29
@ COURSE_LUIGI_RACEWAY
Definition: common_structs.h:32
@ COURSE_RAINBOW_ROAD
Definition: common_structs.h:37
@ COURSE_YOSHI_VALLEY
Definition: common_structs.h:28
@ COURSE_CHOCO_MOUNTAIN
Definition: common_structs.h:25
@ COURSE_TOADS_TURNPIKE
Definition: common_structs.h:34
@ COURSE_SKYSCRAPER
Definition: common_structs.h:40
@ COURSE_DOUBLE_DECK
Definition: common_structs.h:41
@ COURSE_BOWSER_CASTLE
Definition: common_structs.h:26
@ COURSE_KOOPA_BEACH
Definition: common_structs.h:30
@ NUM_COURSES
Definition: common_structs.h:45
@ COURSE_MOO_MOO_FARM
Definition: common_structs.h:33
@ COURSE_DK_JUNGLE
Definition: common_structs.h:42
@ COURSE_SHERBET_LAND
Definition: common_structs.h:36
@ COURSE_AWARD_CEREMONY
Definition: common_structs.h:44
f32 Mat3[3][3]
Definition: common_structs.h:12
TIME_TRIAL_DATA_INDEX
Definition: common_structs.h:48
@ TIME_TRIAL_DATA_BANSHEE_BOARDWALK
Definition: common_structs.h:63
@ TIME_TRIAL_DATA_ROYAL_RACEWAY
Definition: common_structs.h:59
@ TIME_TRIAL_DATA_SHERBET_LAND
Definition: common_structs.h:58
@ TIME_TRIAL_DATA_KOOPA_BEACH
Definition: common_structs.h:51
@ TIME_TRIAL_DATA_YOSHI_VALLEY
Definition: common_structs.h:62
@ TIME_TRIAL_DATA_KALAMARI_DESERT
Definition: common_structs.h:52
@ TIME_TRIAL_DATA_WARIO_STADIUM
Definition: common_structs.h:57
@ TIME_TRIAL_DATA_BOWSER_CASTLE
Definition: common_structs.h:60
@ TIME_TRIAL_DATA_CHOCO_MOUNTAIN
Definition: common_structs.h:55
@ TIME_TRIAL_DATA_FRAPPE_SNOWLAND
Definition: common_structs.h:54
@ NUM_TIME_TRIAL_DATA
Definition: common_structs.h:65
@ TIME_TRIAL_DATA_RAINBOW_ROAD
Definition: common_structs.h:64
@ TIME_TRIAL_DATA_TOADS_TURNPIKE
Definition: common_structs.h:53
@ TIME_TRIAL_DATA_MARIO_RACEWAY
Definition: common_structs.h:56
@ TIME_TRIAL_DATA_LUIGI_RACEWAY
Definition: common_structs.h:49
@ TIME_TRIAL_DATA_DK_JUNGLE
Definition: common_structs.h:61
@ TIME_TRIAL_DATA_MOO_MOO_FARM
Definition: common_structs.h:50
Definition: common_structs.h:110
u16 unk32
Definition: common_structs.h:112
Vec3f unk3C
Definition: common_structs.h:118
u16 unk30
Definition: common_structs.h:111
u16 unk3A
Definition: common_structs.h:117
u16 unk38
Definition: common_structs.h:115
Vec3f unk54
Definition: common_structs.h:120
u16 unk36
Definition: common_structs.h:114
f32 unk6C
Definition: common_structs.h:122
Vec3f unk60
Definition: common_structs.h:121
u16 unk34
Definition: common_structs.h:113
Vec3f unk48
Definition: common_structs.h:119
Definition: common_structs.h:210
u8 surfaceType
Definition: common_structs.h:213
f32 cornerGroundY
Definition: common_structs.h:221
Vec3f cornerPos
Definition: common_structs.h:211
u16 surfaceMapIndex
Definition: common_structs.h:218
u8 surfaceFlags
Definition: common_structs.h:215
s32 unk_14
Definition: common_structs.h:224
Definition: common_structs.h:247
s16 unk_07A
Definition: common_structs.h:277
f32 unk_104
Definition: common_structs.h:320
f32 unk_DA0
Definition: common_structs.h:360
s16 unk_042
Definition: common_structs.h:265
s16 unk_D9A
Definition: common_structs.h:358
s16 lapCount
Definition: common_structs.h:252
f32 kartFriction
Definition: common_structs.h:318
s16 unk_0C0
Definition: common_structs.h:299
Collision unk_110
Definition: common_structs.h:324
u16 unk_0DE
Definition: common_structs.h:308
f32 kartHopAcceleration
Definition: common_structs.h:315
f32 unk_210
Definition: common_structs.h:335
f32 unk_098
Definition: common_structs.h:285
f32 unk_D9C
Definition: common_structs.h:359
f32 kartGravity
Definition: common_structs.h:319
f32 size
Definition: common_structs.h:341
f32 currentSpeed
Definition: common_structs.h:286
s16 unk_238
Definition: common_structs.h:348
f32 unk_DAC
Definition: common_structs.h:364
u16 unk_046
Definition: common_structs.h:267
f32 unk_0A4
Definition: common_structs.h:288
f32 unk_094
Definition: common_structs.h:284
Mat3 orientationMatrix
Definition: common_structs.h:326
u16 unk_002
Definition: common_structs.h:249
s16 unk_228
Definition: common_structs.h:342
s16 unk_044
Definition: common_structs.h:266
s32 unk_07C
Definition: common_structs.h:278
s32 statusEffects
Definition: common_structs.h:254
u16 characterId
Definition: common_structs.h:354
s16 unk_0CA
Definition: common_structs.h:304
Vec4s unk_0CC
Definition: common_structs.h:305
u16 unk_0B4
Definition: common_structs.h:295
f32 unk_08C
Definition: common_structs.h:282
s16 unk_0FA
Definition: common_structs.h:317
s16 unk_078
Definition: common_structs.h:276
u32 effects
Definition: common_structs.h:298
f32 unk_23C
Definition: common_structs.h:350
f32 unk_05C
Definition: common_structs.h:271
f32 unk_DB0
Definition: common_structs.h:365
Mat3 unk_150
Definition: common_structs.h:325
Vec3s unk_02C
Definition: common_structs.h:261
f32 unk_0E8
Definition: common_structs.h:312
f32 unk_090
Definition: common_structs.h:283
Vec4s unk_050
Definition: common_structs.h:269
s16 slopeAccel
Definition: common_structs.h:301
f32 boostPower
Definition: common_structs.h:279
s16 unk_222
Definition: common_structs.h:340
s16 unk_040
Definition: common_structs.h:264
s16 unk_D98
Definition: common_structs.h:357
f32 unk_20C
Definition: common_structs.h:334
f32 unk_230
Definition: common_structs.h:345
f32 boundingBoxSize
Definition: common_structs.h:274
f32 unk_0A0
Definition: common_structs.h:287
u16 type
Definition: common_structs.h:248
f32 unk_108
Definition: common_structs.h:321
f32 unk_DA8
Definition: common_structs.h:363
s16 unk_0AE
Definition: common_structs.h:292
f32 rotZ
Definition: common_structs.h:260
f32 kartHopJerk
Definition: common_structs.h:314
f32 topSpeed
Definition: common_structs.h:336
f32 unk_0E4
Definition: common_structs.h:311
f32 rotY
Definition: common_structs.h:259
s16 unk_0A8
Definition: common_structs.h:289
s16 unk_234
Definition: common_structs.h:346
Vec3f velocity
Definition: common_structs.h:263
f32 kartHopVelocity
Definition: common_structs.h:313
Vec4s unk_0D4
Definition: common_structs.h:306
f32 rotX
Definition: common_structs.h:258
s16 unk_DA4
Definition: common_structs.h:361
s32 unk_240
Definition: common_structs.h:351
s16 unk_23A
Definition: common_structs.h:349
u16 unk_0B6
Definition: common_structs.h:296
f32 unk_22C
Definition: common_structs.h:344
Vec3f unk_064
Definition: common_structs.h:273
Vec4s unk_048
Definition: common_structs.h:268
s16 unk_0C2
Definition: common_structs.h:300
u16 unk_256
Definition: common_structs.h:355
f32 unk_084
Definition: common_structs.h:280
f32 unk_1FC
Definition: common_structs.h:329
s16 unk_DA6
Definition: common_structs.h:362
s16 boostTimer
Definition: common_structs.h:307
s16 currentItemCopy
Definition: common_structs.h:255
s16 unk_0E2
Definition: common_structs.h:310
u16 unk_006
Definition: common_structs.h:251
s16 unk_0B0
Definition: common_structs.h:293
s16 unk_0C8
Definition: common_structs.h:303
s16 unk_0B2
Definition: common_structs.h:294
s16 unk_204
Definition: common_structs.h:331
s16 unk_236
Definition: common_structs.h:347
f32 unk_088
Definition: common_structs.h:281
s16 unk_206
Definition: common_structs.h:332
f32 unk_060
Definition: common_structs.h:272
f32 unk_218
Definition: common_structs.h:337
f32 unk_208
Definition: common_structs.h:333
f32 unk_058
Definition: common_structs.h:270
s16 nearestWaypointId
Definition: common_structs.h:339
s16 unk_0E0
Definition: common_structs.h:309
s16 unk_012
Definition: common_structs.h:256
f32 unk_0B8
Definition: common_structs.h:297
u16 unk_0F8
Definition: common_structs.h:316
s16 unk_0C6
Definition: common_structs.h:302
u32 unk_200
Definition: common_structs.h:330
f32 unk_1F8
Definition: common_structs.h:328
s16 currentRank
Definition: common_structs.h:250
s16 unk_0AC
Definition: common_structs.h:291
s16 unk_22A
Definition: common_structs.h:343
f32 unk_074
Definition: common_structs.h:275
s16 unk_10C
Definition: common_structs.h:322
f32 unk_21C
Definition: common_structs.h:338
s16 unk_0AA
Definition: common_structs.h:290
Vec3f pos
Definition: common_structs.h:257
Definition: common_structs.h:392
u16 alpha
Definition: common_structs.h:396
u16 red
Definition: common_structs.h:393
u16 blue
Definition: common_structs.h:395
u16 green
Definition: common_structs.h:394
Definition: common_structs.h:102
s8 stickX
Definition: common_structs.h:106
s8 frameDuration
Definition: common_structs.h:104
u8 button
Definition: common_structs.h:103
s8 stickY
Definition: common_structs.h:105
Definition: common_structs.h:232
s16 unk1C
Definition: common_structs.h:242
f32 unkC
Definition: common_structs.h:237
f32 unk10
Definition: common_structs.h:238
s16 unk0
Definition: common_structs.h:233
s16 unk2
Definition: common_structs.h:234
f32 unk4
Definition: common_structs.h:235
f32 unk14
Definition: common_structs.h:239
s16 unk20
Definition: common_structs.h:244
f32 unk8
Definition: common_structs.h:236
s16 unk1E
Definition: common_structs.h:243
s16 unk1A
Definition: common_structs.h:241
s16 unk18
Definition: common_structs.h:240
Definition: common_structs.h:125
s16 unk_040
Definition: common_structs.h:148
s16 unk_036
Definition: common_structs.h:143
s16 unk_032
Definition: common_structs.h:141
s16 unk_02E
Definition: common_structs.h:139
u16 unk_010
Definition: common_structs.h:128
s16 unk_020
Definition: common_structs.h:134
f32 unk_00C
Definition: common_structs.h:127
s16 unk_030
Definition: common_structs.h:140
s16 unk_034
Definition: common_structs.h:142
s16 unk_038
Definition: common_structs.h:144
Vec3f unk_000
Definition: common_structs.h:126
s16 unk_03A
Definition: common_structs.h:145
s16 unk_03C
Definition: common_structs.h:146
s16 unk_02C
Definition: common_structs.h:138
s16 unk_01E
Definition: common_structs.h:133
s16 unk_042
Definition: common_structs.h:149
f32 unk_024
Definition: common_structs.h:136
f32 unk_018
Definition: common_structs.h:131
s16 unk_044
Definition: common_structs.h:150
s16 unk_046
Definition: common_structs.h:151
f32 unk_028
Definition: common_structs.h:137
s16 unk_03E
Definition: common_structs.h:147
s16 unk_022
Definition: common_structs.h:135
s16 unk_01C
Definition: common_structs.h:132
u16 unk_012
Definition: common_structs.h:129
f32 unk_014
Definition: common_structs.h:130
Definition: common_structs.h:17
f32 x
Definition: common_structs.h:18
Definition: common_structs.h:401
u32 lap2CompletionTime
Definition: common_structs.h:412
s8 raceCompleteBool
Definition: common_structs.h:470
s16 lapAfterImage1X
Definition: common_structs.h:458
s32 posXInt
Definition: common_structs.h:427
u8 unk_7A
Definition: common_structs.h:487
s16 lap3CompletionTimeX
Definition: common_structs.h:450
u32 lap1Duration
Definition: common_structs.h:420
s16 slideRankX
Definition: common_structs.h:463
s32 posZInt
Definition: common_structs.h:429
s16 slideItemBoxX
Definition: common_structs.h:439
s8 alsoLapCount
Definition: common_structs.h:472
u8 unk_7D
Definition: common_structs.h:490
s8 unk_74
Definition: common_structs.h:479
s16 rankX
Definition: common_structs.h:461
s8 unk_75
Definition: common_structs.h:480
s16 timerX
Definition: common_structs.h:444
u32 lap3Duration
Definition: common_structs.h:422
s8 blinkState
Definition: common_structs.h:478
s16 lap1CompletionTimeX
Definition: common_structs.h:448
u8 unk_7B
Definition: common_structs.h:488
s16 rankY
Definition: common_structs.h:462
u8 unk_81
Definition: common_structs.h:494
s32 unk_38
Definition: common_structs.h:430
s16 slideRankY
Definition: common_structs.h:464
s16 speedometerX
Definition: common_structs.h:435
u32 lap1CompletionTime
Definition: common_structs.h:411
f32 unknownScaling
Definition: common_structs.h:402
u32 lap3CompletionTime
Definition: common_structs.h:413
s16 lapAfterImage2X
Definition: common_structs.h:459
s16 lapX
Definition: common_structs.h:456
s8 unk_77
Definition: common_structs.h:482
u8 unk_7C
Definition: common_structs.h:489
s16 totalTimeX
Definition: common_structs.h:454
s16 lapY
Definition: common_structs.h:460
s8 unk_82
Definition: common_structs.h:495
u8 unk_7F
Definition: common_structs.h:492
s16 slideItemBoxY
Definition: common_structs.h:440
s16 timerY
Definition: common_structs.h:455
s8 lapCount
Definition: common_structs.h:471
u8 unk_80
Definition: common_structs.h:493
u8 unk_7E
Definition: common_structs.h:491
s16 unk_6C
Definition: common_structs.h:468
s16 itemBoxY
Definition: common_structs.h:438
s16 unk_6E
Definition: common_structs.h:469
u8 itemOverride
Definition: common_structs.h:481
s16 unk_4A
Definition: common_structs.h:442
s32 posYInt
Definition: common_structs.h:428
f32 rankScaling
Definition: common_structs.h:403
u8 unk_78
Definition: common_structs.h:485
s8 unk_83
Definition: common_structs.h:496
s16 speedometerY
Definition: common_structs.h:436
u32 someTimer
Definition: common_structs.h:405
s16 blinkTimer
Definition: common_structs.h:434
u8 unk_79
Definition: common_structs.h:486
s16 stagingPosition
Definition: common_structs.h:465
u32 timeLastTouchedFinishLine
Definition: common_structs.h:407
s16 itemBoxX
Definition: common_structs.h:437
s16 unk_4C
Definition: common_structs.h:443
u32 someTimer1
Definition: common_structs.h:406
u32 lap2Duration
Definition: common_structs.h:421
s16 lap2CompletionTimeX
Definition: common_structs.h:449
Definition: common_structs.h:163
Definition: common_structs.h:156
Definition: common_structs.h:175
s16 vtx21
Definition: common_structs.h:187
u16 surfaceType
Definition: common_structs.h:183
s16 vtx23
Definition: common_structs.h:189
Vtx * vtxPoly3
Definition: common_structs.h:192
Vtx * vtxPoly2
Definition: common_structs.h:191
s16 vtx31
Definition: common_structs.h:184
f32 height2
Definition: common_structs.h:206
u16 flags
Definition: common_structs.h:176
s16 vtx22
Definition: common_structs.h:188
s16 vtx33
Definition: common_structs.h:186
f32 rotation
Definition: common_structs.h:205
Vtx * vtxPoly1
Definition: common_structs.h:190
f32 gravity
Definition: common_structs.h:198
f32 height
Definition: common_structs.h:195
s16 vtx32
Definition: common_structs.h:185
Definition: common_structs.h:381
u8 ghostDataSaved
Definition: common_structs.h:384
u8 checksum
Definition: common_structs.h:389
s32 unk_00
Definition: common_structs.h:383
u8 characterId
Definition: common_structs.h:386
s8 courseIndex
Definition: common_structs.h:385
signed int s32
Definition: ultratypes.h:15
unsigned int u32
Definition: ultratypes.h:16
signed char s8
Definition: ultratypes.h:11
signed short int s16
Definition: ultratypes.h:13
float f32
Definition: ultratypes.h:32
unsigned short int u16
Definition: ultratypes.h:14
unsigned char u8
Definition: ultratypes.h:12