New Super Mario Bros. U Headers
Loading...
Searching...
No Matches
CourseData.h
Go to the documentation of this file.
1#pragma once
2
3#include <container/seadSafeArray.h>
4#include <heap/seadDisposer.h>
5#include <math/seadBoundBox.h>
6
7struct Options
8{
9 // Official name not known, but is called area options by the modding community.
10
21};
22static_assert(sizeof(Options) == 0x18);
23
25{
26 // Not certain if official name, but official name in NSMBW is Bg2 (which is conflicting with tile layers)
27
29 struct
30 {
34 } offset; // Unused
35 char name[16];
36 u16 parallax_mode; // Unused
37 u8 _pad[2];
38};
39static_assert(sizeof(DistantViewData) == 0x1C);
40
42{
43 // Is the official name. Called entrance by the modding community.
44
45 struct
46 {
49 } offset;
50 struct
51 {
52 u16 x;
53 u16 y;
54 } camera_offset;
56 struct
57 {
60 } destination;
69 struct
70 {
73 } rail;
75 u8 _pad[1];
76
115
116 enum Flag
117 {
118 cFlag_FaceLeft = 1 << 0, ///< Spawns the player facing left.
119 cFlag_RailPipe = 1 << 1, ///< An unused and broken DokanType, leftover from NSMBW that wasn't fully stripped.
120
121 cFlag_Enterable = 1 << 7, ///< Allows the player to enter.
122 };
123};
124static_assert(sizeof(NextGoto) == 0x18);
125
127{
129 struct
130 {
133 } offset;
134 u16 switch_flags; // Lower byte: switch flag 0, higher byte: switch flag 1.
143};
144static_assert(sizeof(ActorInitDat) == 0x18);
145
147{
148 // Is the official name. Called "zone" by the modding community.
149
150 // NSMBW
151 struct
152 {
155 } offset;
156 struct
157 {
158 u16 x;
159 u16 y;
160 } size;
161 u16 color_obj; // "Theme", unused.
162 u16 color_bg; // "Terrain", unused.
169 u8 bg2; // 1st BG id in NSMBW, DV ID in NSMBU.
170 u8 bg3; // 2nd BG id in NSMBW, unused.
175
176 // NSMB2
177 u8 dv; // DV ID in NSMB2, unused.
178
179 // NSMBU
182};
183static_assert(sizeof(AreaData) == 0x1C);
184
185struct Range
186{
187 struct
188 {
191 } offset;
192 struct
193 {
194 u16 x;
195 u16 y;
196 } size;
199};
200static_assert(sizeof(Range) == 0xC, "Range size mismatch");
201
203{
204 // Not certain if official name.
205
208 struct
209 {
212 } point;
215};
216static_assert(sizeof(RailInfo) == 0xC);
217
219{
220 // Official name not known.
221
222 struct
223 {
226 } offset;
230
231 // Nabbit-related
237};
238static_assert(sizeof(RailPoint) == 0x14);
239
241{
242 // Is the official name. Called "area" by the modding community.
243
244public:
245 enum Block
246 {
250 // 4
252 // 6
257 cBlock_Range = 11 - 1,
258 // 12
259 // 13
263 };
264
265public:
267
268 const void* getBlock(Block block) const
269 {
270 return mBlock[block];
271 }
272
273 template <typename T>
274 const T* getBlock(Block block) const
275 {
276 return static_cast<const T*>(getBlock(block));
277 }
278
279 const DistantViewData* getBg2Data(u16 id) const;
280 // Address: 0x02699BD8
281 const NextGoto* getNextGoto(u8 id) const;
282 // Address: 0x02699C08
283 const ActorInitDat* getMapActor(u16 type, const ActorInitDat* start = nullptr) const;
284 const AreaData* getAreaData(u8 id, sead::BoundBox2f* box = nullptr) const;
285 // Address: 0x0269A020
286 const Range* getRange(sead::BoundBox2f* box, u8 id) const;
287 // Address: 0x0269A0A8
288 const RailInfo* getRailInfo(u8 id) const;
289 // Address: 0x0269A0F4
290 const RailPoint* getRailPoint(u8 rail_id) const;
291
292private:
293 void getAreaBox_(sead::BoundBox2f* box, const AreaData& area_data, f32 delta = 0.0f) const;
294
295private:
303};
304static_assert(sizeof(CourseDataFile) == 0x3B8);
305
307{
308 // sInstance Address: 0x101DB048
310
311public:
312 // Address: 0x0269A144
315
316 // Address: 0x0269A2DC
318
319private:
321};
322static_assert(sizeof(CourseData) == 0xEF0, "CourseData size mismatch");
Definition CourseData.h:241
sead::SafeArray< ActorInitDat *, 64 > _b8
Definition CourseData.h:300
u32 mIndex
Definition CourseData.h:296
const ActorInitDat * getMapActor(u16 type, const ActorInitDat *start=nullptr) const
const void * getBlock(Block block) const
Definition CourseData.h:268
void getAreaBox_(sead::BoundBox2f *box, const AreaData &area_data, f32 delta=0.0f) const
sead::SafeArray< u32, cBlock_Num > mBlockEntryNum
Definition CourseData.h:299
sead::SafeArray< u32, 64 > _1b8
Definition CourseData.h:301
sead::SafeArray< u32, cBlock_Num > mBlockSize
Definition CourseData.h:298
const T * getBlock(Block block) const
Definition CourseData.h:274
Block
Definition CourseData.h:246
@ cBlock_RailInfo
Definition CourseData.h:260
@ cBlock_MapActor
Definition CourseData.h:254
@ cBlock_MapActorLoadRes
Definition CourseData.h:255
@ cBlock_RailPoint
Definition CourseData.h:261
@ cBlock_DistantViewData
Definition CourseData.h:251
@ cBlock_ScrollData
Definition CourseData.h:249
@ cBlock_Options
Definition CourseData.h:248
@ cBlock_NextGoto
Definition CourseData.h:253
@ cBlock_Environment
Definition CourseData.h:247
@ cBlock_Range
Definition CourseData.h:257
@ cBlock_Num
Definition CourseData.h:262
@ cBlock_AreaData
Definition CourseData.h:256
const RailPoint * getRailPoint(u8 rail_id) const
sead::SafeArray< u32, 64 > _2b8
Definition CourseData.h:302
const NextGoto * getNextGoto(u8 id) const
const AreaData * getAreaData(u8 id, sead::BoundBox2f *box=nullptr) const
const RailInfo * getRailInfo(u8 id) const
sead::SafeArray< const void *, cBlock_Num > mBlock
Definition CourseData.h:297
const DistantViewData * getBg2Data(u16 id) const
const Range * getRange(sead::BoundBox2f *box, u8 id) const
Definition CourseData.h:307
sead::SafeArray< CourseDataFile, 4 > mFile
Definition CourseData.h:320
CourseDataFile * getFile(s32 index)
Definition CourseData.h:127
u8 movement_id
Definition CourseData.h:139
u8 area
Definition CourseData.h:137
u8 _pad[3]
Definition CourseData.h:142
u8 init_state
Definition CourseData.h:141
u16 type
Definition CourseData.h:128
u16 switch_flags
Definition CourseData.h:134
u32 param_1
Definition CourseData.h:136
u16 y
Definition CourseData.h:132
u16 x
Definition CourseData.h:131
u8 link_id
Definition CourseData.h:140
u8 layer
Definition CourseData.h:138
u32 param_0
Definition CourseData.h:135
Definition CourseData.h:147
u16 y
Definition CourseData.h:154
u8 bgm
Definition CourseData.h:173
u8 direction
Definition CourseData.h:171
u8 bg3
Definition CourseData.h:170
u8 bg2
Definition CourseData.h:169
u8 mask
Definition CourseData.h:168
u8 _15
Definition CourseData.h:172
u16 color_bg
Definition CourseData.h:162
u8 zoom_type
Definition CourseData.h:165
u8 zoom_change
Definition CourseData.h:167
u8 bgm_mode
Definition CourseData.h:174
u8 zoom_id
Definition CourseData.h:166
u8 _pad[2]
Definition CourseData.h:181
u8 dv
Definition CourseData.h:177
u16 color_obj
Definition CourseData.h:161
u8 id
Definition CourseData.h:163
u8 flag
Definition CourseData.h:180
u16 x
Definition CourseData.h:153
u8 scroll
Definition CourseData.h:164
Definition CourseData.h:25
u8 _pad[2]
Definition CourseData.h:37
u16 parallax_mode
Definition CourseData.h:36
u16 id
Definition CourseData.h:28
s16 z
Definition CourseData.h:33
char name[16]
Definition CourseData.h:35
s16 y
Definition CourseData.h:32
s16 x
Definition CourseData.h:31
Definition CourseData.h:42
u8 mp_spawn_flag
Definition CourseData.h:62
u8 _pad[1]
Definition CourseData.h:75
u16 flag
Definition CourseData.h:66
u8 coin_edit_priority
Definition CourseData.h:68
u8 mp_inner_gap
Definition CourseData.h:65
u8 type
Definition CourseData.h:61
u8 _unused0
Definition CourseData.h:64
u16 y
Definition CourseData.h:48
Flag
Definition CourseData.h:117
@ cFlag_Enterable
Allows the player to enter.
Definition CourseData.h:121
@ cFlag_FaceLeft
Spawns the player facing left.
Definition CourseData.h:118
@ cFlag_RailPipe
An unused and broken DokanType, leftover from NSMBW that wasn't fully stripped.
Definition CourseData.h:119
u8 area
Definition CourseData.h:63
u8 file
Definition CourseData.h:58
u8 next_goto
Definition CourseData.h:59
u8 id
Definition CourseData.h:55
u8 chibi_yoshi_next_goto
Definition CourseData.h:67
u8 wipe_type
Definition CourseData.h:74
u16 x
Definition CourseData.h:47
Type
Definition CourseData.h:78
@ cType_DoorExit
Definition CourseData.h:81
@ cType_Checkpoint
Definition CourseData.h:80
@ cType_MiniPipeRight
Definition CourseData.h:96
@ cType_Vine
Definition CourseData.h:98
@ cType_Num
Definition CourseData.h:113
@ cType_ForwardPipe
Definition CourseData.h:99
@ cType_Slip
Definition CourseData.h:88
@ cType_CreditsP4
Definition CourseData.h:109
@ cType_MiniPipeLeft
Definition CourseData.h:95
@ cType_BossFall
Definition CourseData.h:103
@ cType_Normal
Definition CourseData.h:79
@ cType_PipeUp
Definition CourseData.h:82
@ cType_Falling
Definition CourseData.h:86
@ cType_BossWalk
Definition CourseData.h:101
@ cType_Jump
Definition CourseData.h:97
@ cType_PipeDown
Definition CourseData.h:83
@ cType_PipeRight
Definition CourseData.h:85
@ cType_Title
Definition CourseData.h:110
@ cType_Ambush
Definition CourseData.h:111
@ cType_Swim
Definition CourseData.h:89
@ cType_DoorEnter
Definition CourseData.h:104
@ cType_HipAttack
Definition CourseData.h:87
@ cType_CreditsP3
Definition CourseData.h:108
@ cType_CreditsP1
Definition CourseData.h:106
@ cType_MiniPipeUp
Definition CourseData.h:93
@ cType_PipeLeft
Definition CourseData.h:84
@ cType_Boss
Definition CourseData.h:100
@ cType_BossJump
Definition CourseData.h:102
@ cType_MiniPipeDown
Definition CourseData.h:94
@ cType_CreditsP2
Definition CourseData.h:107
u8 point
Definition CourseData.h:72
u8 info
Definition CourseData.h:71
Definition CourseData.h:8
u8 start_next_goto_coin_boost
Definition CourseData.h:18
u8 _unused1[2]
Definition CourseData.h:17
u16 time_0
Definition CourseData.h:14
u16 time_1
Definition CourseData.h:19
u8 _unused0[4]
Definition CourseData.h:15
u32 course_default_switch_flags
Definition CourseData.h:11
u16 loop
Definition CourseData.h:13
u8 start_next_goto
Definition CourseData.h:16
u32 file_default_switch_flags
Definition CourseData.h:12
u16 time_2
Definition CourseData.h:20
Definition CourseData.h:203
u32 _8
Definition CourseData.h:214
u8 id
Definition CourseData.h:206
s8 _1
Definition CourseData.h:207
u16 start
Definition CourseData.h:210
u16 num
Definition CourseData.h:211
u16 flag
Definition CourseData.h:213
Definition CourseData.h:219
u16 y
Definition CourseData.h:225
u8 _pad[1]
Definition CourseData.h:236
u16 _e
Definition CourseData.h:232
u8 _11
Definition CourseData.h:234
u8 _12
Definition CourseData.h:235
s16 delay
Definition CourseData.h:229
u8 _10
Definition CourseData.h:233
f32 accel
Definition CourseData.h:228
u16 x
Definition CourseData.h:224
f32 speed
Definition CourseData.h:227
Definition CourseData.h:186
u8 id
Definition CourseData.h:197
u16 y
Definition CourseData.h:190
u8 _pad[3]
Definition CourseData.h:198
u16 x
Definition CourseData.h:189