Mario Kart 64
objects.h
Go to the documentation of this file.
1 #ifndef OBJECTS_H
2 #define OBJECTS_H
3 
4 #include "common_structs.h"
5 
6 #define OBJECT_LIST_SIZE 0x226
7 #define SOME_OBJECT_INDEX_LIST_SIZE 32
8 
9 typedef struct
10 {
11  /* 0x00 */ f32 sizeScaling;
12  /* 0x04 */ Vec3f pos;
13  /* 0x10 */ Vec3f unk_010;
14  /* 0x1C */ Vec3f unk_01C;
15  /* 0x28 */ Vec3f unk_028;
16  /* 0x34 */ f32 unk_034;
17  /* 0x38 */ Vec3f unk_038;
18  /* 0x44 */ f32 unk_044;
19  /* 0x48 */ s32 unk_048;
20  /* 0x4C */ s32 unk_04C;
21  /* 0x50 */ s32 unk_050;
22  /* 0x54 */ s32 unk_054;
23  /* 0x58 */ s32 unk_058;
24  /* 0x5C */ s32 unk_05C;
25  /* 0x60 */ u8 *activeTLUT;
26  /* 0x64 */ u8 *activeTexture;
32  /* 0x68 */ u8 *tlutList; // I feel like this should actually be `u8 (*tlutList)[512]`, but that causes mismatches
33  /* 0x6C */ u8 *textureList;
34  /* 0x70 */ Gfx *unk_070;
35  /* 0x74 */ Vtx *vertex;
36  /* 0x78 */ s8 unk_078[0x04];
37  /* 0x7C */ Vec4s *unk_07C;
38  /* 0x80 */ Vec4s *unk_080; // unk_080[][4]?
39  /* 0x84 */ s16 unk_084[0xA];
40  /* 0x98 */ u16 timer;
41  /* 0x9A */ u16 unk_09A;
42  /* 0x9C */ s16 unk_09C;
43  /* 0x9E */ s16 unk_09E;
44  /* 0xA0 */ s16 unk_0A0;
45  /* 0xA2 */ s16 unk_0A2;
46  /* 0xA4 */ s16 type;
47  /* 0xA6 */ s16 state;
48  /* 0xA8 */ s16 unk_0A8;
49  /* 0xAA */ s16 unk_0AA;
50  /* 0xAC */ s16 unk_0AC;
51  /* 0xAE */ s16 unk_0AE;
52  /* 0xB0 */ s16 unk_0B0;
53  /* 0xB2 */ Vec3su unk_0B2; // rotation, I think
54  /* 0xB8 */ Vec3su unk_0B8;
55  /* 0xBE */ Vec3su unk_0BE;
56  /* 0xC4 */ u16 unk_0C4;
57  /* 0xC6 */ u16 unk_0C6;
58  /* 0xC8 */ u16 unk_0C8;
59  /* 0xCA */ s8 unk_0CA;
60  /* 0xCB */ s8 unk_0CB;
61  /* 0xCC */ s8 unk_0CC;
62  /* 0xCD */ s8 unk_0CD;
63  /* 0xCE */ s8 unk_0CE;
64  /* 0xCF */ s8 unk_0CF;
65  /* 0xD0 */ s8 unk_0D0;
66  /* 0xD1 */ s8 unk_0D1;
67  /* 0xD2 */ s8 itemDisplay;
68  /* 0xD3 */ s8 unk_0D3;
69  /* 0xD4 */ s8 unk_0D4;
70  /* 0xD5 */ u8 unk_0D5;
71  /* 0xD6 */ u8 unk_0D6;
72  /* 0xD7 */ u8 unk_0D7;
73  /* 0xD8 */ u8 unk_0D8;
74  /* 0xD9 */ u8 textureWidth;
75  /* 0xDA */ u8 textureHeight;
76  /* 0xDB */ u8 unk_0DB;
77  /* 0xDC */ u8 unk_0DC;
78  /* 0xDD */ u8 unk_0DD;
79  /* 0xDE */ s8 unk_0DE;
80  /* 0xDF */ u8 unk_0DF;
81 } Objects; // size = 0xE0
82 
83 // This is the object list
84 extern Objects gObjectList[];
85 
86 typedef struct
87 {
88  /* 0x00 */ f32 sizeScaling;
89  /* 0x04 */ Vec3f pos;
90  /* 0x10 */ Vec3f unk_010;
91  /* 0x1C */ Vec3f unk_01C;
92  /* 0x28 */ Vec3f unk_028;
93  /* 0x34 */ f32 unk_034;
94  /* 0x38 */ Vec3f unk_038;
95  /* 0x44 */ f32 unk_044;
96  /* 0x48 */ s32 unk_048;
97  /* 0x4C */ s32 unk_04C;
98  /* 0x50 */ s32 unk_050;
99  /* 0x54 */ s32 unk_054;
100  /* 0x58 */ s32 unk_058;
101  /* 0x5C */ s32 unk_05C;
102  /* 0x60 */ u8 *activeTLUT;
103  /* 0x64 */ u8 *activeTexture;
109  /* 0x68 */ u8 *tlutList; // I feel like this should actually be `u8 (*tlutList)[512]`, but that causes mismatches
110  /* 0x6C */ u8 *textureList;
111  /* 0x70 */ Gfx *unk_070;
112  /* 0x74 */ Vtx *vertex;
113  /* 0x78 */ s8 unk_078[0x04];
114  /* 0x7C */ Vec4s *unk_07C;
115  /* 0x80 */ Vec4s *unk_080; // unk_080[][4]?
116  /* 0x84 */ s16 unk_084[0xA];
118  /* 0x9A */ u16 unk_09A;
119  /* 0x9C */ s16 unk_09C;
120  /* 0x9E */ s16 unk_09E;
121  /* 0xA0 */ s16 unk_0A0;
122  /* 0xA2 */ s16 unk_0A2;
123  /* 0xA4 */ s16 currentItem;
124  /* 0xA6 */ s16 itemDisplayState; // Usually a state tracker
125  /* 0xA8 */ s16 unk_0A8;
126  /* 0xAA */ s16 unk_0AA;
127  /* 0xAC */ s16 unk_0AC;
128  /* 0xAE */ s16 unk_0AE;
129  /* 0xB0 */ s16 unk_0B0;
130  /* 0xB2 */ Vec3su unk_0B2; // rotation, I think
131  /* 0xB8 */ Vec3su unk_0B8;
132  /* 0xBE */ Vec3su unk_0BE;
133  /* 0xC4 */ u16 unk_0C4;
134  /* 0xC6 */ u16 unk_0C6;
135  /* 0xC8 */ u16 unk_0C8;
136  /* 0xCA */ s8 unk_0CA;
137  /* 0xCB */ s8 unk_0CB;
138  /* 0xCC */ s8 unk_0CC;
139  /* 0xCD */ s8 unk_0CD;
140  /* 0xCE */ s8 unk_0CE;
141  /* 0xCF */ s8 unk_0CF;
142  /* 0xD0 */ s8 unk_0D0;
143  /* 0xD1 */ s8 unk_0D1;
144  /* 0xD2 */ s8 itemDisplay;
145  /* 0xD3 */ s8 unk_0D3;
146  /* 0xD4 */ s8 unk_0D4;
147  /* 0xD5 */ u8 unk_0D5;
148  /* 0xD6 */ u8 unk_0D6;
149  /* 0xD7 */ u8 unk_0D7;
150  /* 0xD8 */ u8 unk_0D8;
151  /* 0xD9 */ u8 textureWidth;
152  /* 0xDA */ u8 textureHeight;
153  /* 0xDB */ u8 unk_0DB;
154  /* 0xDC */ u8 unk_0DC;
155  /* 0xDD */ u8 unk_0DD;
156  /* 0xDE */ s8 unk_0DE;
157  /* 0xDF */ u8 unk_0DF;
158 } ItemWindowObjects; // size = 0xE0
159 
160 // This are other lists of indices in gObjectList.
161 
166 extern s32 D_80183DA0;
167 
171 extern s32 D_80183DB8[];
172 
173 #define DELETED_OBJECT_ID -1
174 
175 // Appears to be a list of object list indices for the Item Window part of the HUD
177 
178 // Used for loop bounds when accessing D_80183EA0
179 extern s16 D_80165750;
180 // These seem to be limits on different object types in Moo Moo Farm
181 // See func_80070780 in code_8006E9C0.c
182 extern s32 D_8018D1C8;
183 extern s32 D_8018D1D0;
184 extern s32 D_8018D1D8;
185 // Limit on some object type (ice chips?) in Sherbet Land
186 extern s32 D_8018D3C0;
187 
188 extern Collision D_8018C0B0[];
189 
198 #define NUM_CRABS 0xA
199 #define NUM_NEON_SIGNS 0xA
200 
209 extern s32 D_80183EA0[];
216 extern s32 D_80183F28[];
217 
218 #define NUM_BOOS 0xA
219 
223 extern s32 D_8018BFA8[];
224 extern s32 D_8018C030[];
225 
226 #define D_8018C1B0_SIZE 128
227 #define NUM_MOLES 0x1F
228 #define NUM_SNOWFLAKES 0x32
236 extern s32 D_8018C1B0[];
237 // Next free spot in D_8018C1B0? Wraps back around to 0 if it gets bigger than D_8018C1B0_SIZE
238 extern s32 D_80183E38;
239 // Used for cycling through snowflakes in func_80078790
240 extern s16 D_8018D174;
241 
242 #define D_8018C3F0_SIZE 128
247 extern s32 D_8018C3F0[];
248 // Next free spot in D_8018C3F0? Wraps back around to 0 if it gets bigger than D_8018C3F0_SIZE
249 extern s32 D_80183E4C;
250 // Controls number of come object type placed into D_8018C3F0 on Frappe Snowland. So, maybe snowmen/snowflakes?
251 extern s32 D_8018D3BC;
252 
253 #define D_8018C630_SIZE 128
254 extern s32 D_8018C630[];
255 // Next free spot in D_8018C630?
256 extern s32 D_80183E5C;
257 extern s16 D_80165730;
258 // Tracking a count of some object type, don't know what object type yet
259 extern s16 D_80165738;
260 
261 #define D_8018C870_SIZE 0x40
267 extern s32 D_8018C870[];
268 // Next free spot in D_8018C870? Wraps back around to 0 if it gets bigger than D_8018C870_SIZE
269 extern s32 D_80183E6C;
270 
271 // Maximum number of leaves that can be falling?
272 #define D_8018C970_SIZE 0x40
273 // Number of leaves to spawn each bonk?
274 #define D_8018C970_SPAWN_SIZE 0x14
275 // Seemingly a list of object list indices used for the leaves that sometimes fall
276 // trees when you bonk into them
277 extern s32 D_8018C970[];
278 // Next free spot in D_8018C970? Wraps back around to 0 if it gets bigger than D_8018C970_SIZE
279 extern s32 D_80183E7C;
280 
281 #define D_8018CC80_SIZE 0x64
282 // List of object list indices used by the clouds and stars in some stages
283 // Also used for snowflakes like D_8018C1B0? Not sure what's up with that
284 extern s32 D_8018CC80[];
285 // Number of used spots in D_8018CC80?
286 extern s32 D_8018D1F0;
287 // Next free spot in D_8018CC80?
288 extern s32 D_8018D1F8;
289 // Something related to the display of the clouds/stars?
290 extern s8 D_8018D230;
291 // Some sort of limiter on how many of some object type can spawn
292 extern s32 D_8018D3C4;
293 
294 #endif
s16 Vec4s[4]
Definition: common_structs.h:10
f32 Vec3f[3]
Definition: common_structs.h:6
u16 Vec3su[3]
Definition: common_structs.h:9
s32 D_8018D3C4
s32 D_8018D1C8
s32 gItemWindowObjectByPlayerId[]
s16 D_80165750
s32 D_8018D1D8
s32 D_80183E6C
s32 D_80183E7C
s32 D_8018C1B0[]
s32 D_8018CC80[]
s16 D_8018D174
s32 D_80183E5C
Collision D_8018C0B0[]
s32 D_8018C970[]
s32 D_80183F28[]
Objects gObjectList[]
s32 D_80183DA0
s32 D_8018D3BC
s32 D_80183EA0[]
s32 D_80183E38
s32 D_8018C870[]
s32 D_8018D1F8
s16 D_80165730
s32 D_8018D1F0
s32 D_8018C030[]
s32 D_8018C630[]
s32 D_8018C3F0[]
s32 D_80183E4C
s32 D_8018BFA8[]
s32 D_8018D3C0
s32 D_80183DB8[]
s16 D_80165738
s8 D_8018D230
s32 D_8018D1D0
Definition: common_structs.h:110
Definition: objects.h:87
u8 unk_0DB
Definition: objects.h:153
s16 itemDisplayState
Definition: objects.h:124
u16 unk_0C8
Definition: objects.h:135
s16 unk_0AA
Definition: objects.h:126
u8 * textureList
Definition: objects.h:110
Vec3su unk_0BE
Definition: objects.h:132
s8 unk_0D1
Definition: objects.h:143
s8 unk_0D0
Definition: objects.h:142
f32 sizeScaling
Definition: objects.h:88
s32 unk_04C
Definition: objects.h:97
s16 unk_0AC
Definition: objects.h:127
u8 unk_0DF
Definition: objects.h:157
u8 unk_0D7
Definition: objects.h:149
s16 unk_0A0
Definition: objects.h:121
s8 unk_0CF
Definition: objects.h:141
s8 unk_0CD
Definition: objects.h:139
Vec3su unk_0B2
Definition: objects.h:130
s8 unk_0CB
Definition: objects.h:137
s8 unk_0CE
Definition: objects.h:140
Vec4s * unk_07C
Definition: objects.h:114
u8 unk_0D8
Definition: objects.h:150
s8 unk_0DE
Definition: objects.h:156
s32 unk_05C
Definition: objects.h:101
u8 unk_0D6
Definition: objects.h:148
s16 currentItem
Definition: objects.h:123
s8 unk_0D3
Definition: objects.h:145
Vec4s * unk_080
Definition: objects.h:115
s16 unk_0B0
Definition: objects.h:129
s16 unk_09E
Definition: objects.h:120
Vtx * vertex
Definition: objects.h:112
s32 unk_058
Definition: objects.h:100
s16 unk_0AE
Definition: objects.h:128
u16 unk_0C6
Definition: objects.h:134
Gfx * unk_070
Definition: objects.h:111
f32 unk_044
Definition: objects.h:95
s16 unk_09C
Definition: objects.h:119
s8 unk_0CC
Definition: objects.h:138
Vec3f unk_01C
Definition: objects.h:91
s32 unk_048
Definition: objects.h:96
s8 itemDisplay
Definition: objects.h:144
Vec3f unk_028
Definition: objects.h:92
s8 unk_0CA
Definition: objects.h:136
s32 unk_050
Definition: objects.h:98
u8 * tlutList
Definition: objects.h:109
u8 unk_0D5
Definition: objects.h:147
u8 unk_0DD
Definition: objects.h:155
u8 unk_0DC
Definition: objects.h:154
s16 unk_0A2
Definition: objects.h:122
u8 * activeTexture
Definition: objects.h:103
Vec3f unk_038
Definition: objects.h:94
s8 unk_0D4
Definition: objects.h:146
Vec3f pos
Definition: objects.h:89
u8 textureHeight
Definition: objects.h:152
u8 textureWidth
Definition: objects.h:151
u16 unk_09A
Definition: objects.h:118
u16 unk_0C4
Definition: objects.h:133
u8 * activeTLUT
Definition: objects.h:102
s16 unk_0A8
Definition: objects.h:125
u16 goldenMushroomTimer
Definition: objects.h:117
s32 unk_054
Definition: objects.h:99
Vec3su unk_0B8
Definition: objects.h:131
f32 unk_034
Definition: objects.h:93
Vec3f unk_010
Definition: objects.h:90
Definition: objects.h:10
s8 unk_0CD
Definition: objects.h:62
u8 unk_0D8
Definition: objects.h:73
Vec4s * unk_080
Definition: objects.h:38
s8 unk_0D1
Definition: objects.h:66
f32 sizeScaling
Definition: objects.h:11
s16 unk_0A0
Definition: objects.h:44
u8 unk_0DC
Definition: objects.h:77
u8 * textureList
Definition: objects.h:33
u8 unk_0D7
Definition: objects.h:72
u8 unk_0DD
Definition: objects.h:78
f32 unk_034
Definition: objects.h:16
Vec3f pos
Definition: objects.h:12
s32 unk_04C
Definition: objects.h:20
u16 unk_0C8
Definition: objects.h:58
s8 unk_0CF
Definition: objects.h:64
s8 itemDisplay
Definition: objects.h:67
s8 unk_0DE
Definition: objects.h:79
s16 unk_0A2
Definition: objects.h:45
u16 unk_0C6
Definition: objects.h:57
Vec3f unk_01C
Definition: objects.h:14
u8 textureHeight
Definition: objects.h:75
Vec3su unk_0B8
Definition: objects.h:54
s16 state
Definition: objects.h:47
s16 unk_0AE
Definition: objects.h:51
s32 unk_058
Definition: objects.h:23
u8 * activeTexture
Definition: objects.h:26
f32 unk_044
Definition: objects.h:18
u8 unk_0D5
Definition: objects.h:70
s32 unk_050
Definition: objects.h:21
u8 * tlutList
Definition: objects.h:32
s32 unk_054
Definition: objects.h:22
s8 unk_0D0
Definition: objects.h:65
s16 unk_0AA
Definition: objects.h:49
u8 unk_0DF
Definition: objects.h:80
Vec3f unk_038
Definition: objects.h:17
Vec3su unk_0BE
Definition: objects.h:55
s8 unk_0CC
Definition: objects.h:61
s16 unk_0AC
Definition: objects.h:50
s8 unk_0CA
Definition: objects.h:59
Vec3f unk_010
Definition: objects.h:13
s16 type
Definition: objects.h:46
s32 unk_048
Definition: objects.h:19
Vtx * vertex
Definition: objects.h:35
Gfx * unk_070
Definition: objects.h:34
u8 unk_0DB
Definition: objects.h:76
s16 unk_09C
Definition: objects.h:42
s8 unk_0CE
Definition: objects.h:63
u8 textureWidth
Definition: objects.h:74
Vec3su unk_0B2
Definition: objects.h:53
s8 unk_0D3
Definition: objects.h:68
Vec4s * unk_07C
Definition: objects.h:37
s16 unk_09E
Definition: objects.h:43
u16 unk_0C4
Definition: objects.h:56
s8 unk_0CB
Definition: objects.h:60
u8 * activeTLUT
Definition: objects.h:25
u16 unk_09A
Definition: objects.h:41
s16 unk_0B0
Definition: objects.h:52
s16 unk_0A8
Definition: objects.h:48
u8 unk_0D6
Definition: objects.h:71
s8 unk_0D4
Definition: objects.h:69
u16 timer
Definition: objects.h:40
s32 unk_05C
Definition: objects.h:24
Vec3f unk_028
Definition: objects.h:15
signed int s32
Definition: ultratypes.h:15
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