4enum class SurfaceType {
5 SURFACE_DEFAULT = 0x0000,
6 SURFACE_BURNING = 0x0001,
8 SURFACE_HANGABLE = 0x0005,
10 SURFACE_DEATH_PLANE = 0x000A,
11 SURFACE_CLOSE_CAMERA = 0x000B,
12 SURFACE_WATER = 0x000D,
13 SURFACE_FLOWING_WATER = 0x000E,
14 SURFACE_INTANGIBLE = 0x0012,
15 SURFACE_VERY_SLIPPERY = 0x0013,
16 SURFACE_SLIPPERY = 0x0014,
17 SURFACE_NOT_SLIPPERY = 0x0015,
18 SURFACE_TTM_VINES = 0x0016,
19 SURFACE_MGR_MUSIC = 0x001A,
20 SURFACE_INSTANT_WARP_1B = 0x001B,
21 SURFACE_INSTANT_WARP_1C = 0x001C,
22 SURFACE_INSTANT_WARP_1D = 0x001D,
23 SURFACE_INSTANT_WARP_1E = 0x001E,
24 SURFACE_SHALLOW_QUICKSAND = 0x0021,
25 SURFACE_DEEP_QUICKSAND = 0x0022,
26 SURFACE_INSTANT_QUICKSAND = 0x0023,
27 SURFACE_DEEP_MOVING_QUICKSAND = 0x0024,
28 SURFACE_SHALLOW_MOVING_QUICKSAND = 0x0025,
29 SURFACE_QUICKSAND = 0x0026,
30 SURFACE_MOVING_QUICKSAND = 0x0027,
31 SURFACE_WALL_MISC = 0x0028,
32 SURFACE_NOISE_DEFAULT = 0x0029,
33 SURFACE_NOISE_SLIPPERY = 0x002A,
34 SURFACE_HORIZONTAL_WIND = 0x002C,
35 SURFACE_INSTANT_MOVING_QUICKSAND = 0x002D,
37 SURFACE_LOOK_UP_WARP = 0x002F,
38 SURFACE_HARD = 0x0030,
39 SURFACE_WARP = 0x0032,
40 SURFACE_TIMER_START = 0x0033,
41 SURFACE_TIMER_END = 0x0034,
42 SURFACE_HARD_SLIPPERY = 0x0035,
43 SURFACE_HARD_VERY_SLIPPERY = 0x0036,
44 SURFACE_HARD_NOT_SLIPPERY = 0x0037,
45 SURFACE_VERTICAL_WIND = 0x0038,
46 SURFACE_BOSS_FIGHT_CAMERA = 0x0065,
47 SURFACE_CAMERA_FREE_ROAM = 0x0066,
48 SURFACE_THI3_WALLKICK = 0x0068,
49 SURFACE_CAMERA_8_DIR = 0x0069,
50 SURFACE_CAMERA_MIDDLE = 0x006E,
51 SURFACE_CAMERA_ROTATE_RIGHT = 0x006F,
52 SURFACE_CAMERA_ROTATE_LEFT = 0x0070,
53 SURFACE_CAMERA_BOUNDARY = 0x0072,
54 SURFACE_NOISE_VERY_SLIPPERY_73 = 0x0073,
55 SURFACE_NOISE_VERY_SLIPPERY_74 = 0x0074,
56 SURFACE_NOISE_VERY_SLIPPERY = 0x0075,
57 SURFACE_NO_CAM_COLLISION = 0x0076,
58 SURFACE_NO_CAM_COLLISION_77 = 0x0077,
59 SURFACE_NO_CAM_COL_VERY_SLIPPERY = 0x0078,
60 SURFACE_NO_CAM_COL_SLIPPERY = 0x0079,
61 SURFACE_SWITCH = 0x007A,
62 SURFACE_VANISH_CAP_WALLS = 0x007B,
63 SURFACE_PAINTING_WOBBLE_A6 = 0x00A6,
64 SURFACE_PAINTING_WOBBLE_A7 = 0x00A7,
65 SURFACE_PAINTING_WOBBLE_A8 = 0x00A8,
66 SURFACE_PAINTING_WOBBLE_A9 = 0x00A9,
67 SURFACE_PAINTING_WOBBLE_AA = 0x00AA,
68 SURFACE_PAINTING_WOBBLE_AB = 0x00AB,
69 SURFACE_PAINTING_WOBBLE_AC = 0x00AC,
70 SURFACE_PAINTING_WOBBLE_AD = 0x00AD,
71 SURFACE_PAINTING_WOBBLE_AE = 0x00AE,
72 SURFACE_PAINTING_WOBBLE_AF = 0x00AF,
73 SURFACE_PAINTING_WOBBLE_B0 = 0x00B0,
74 SURFACE_PAINTING_WOBBLE_B1 = 0x00B1,
75 SURFACE_PAINTING_WOBBLE_B2 = 0x00B2,
76 SURFACE_PAINTING_WOBBLE_B3 = 0x00B3,
77 SURFACE_PAINTING_WOBBLE_B4 = 0x00B4,
78 SURFACE_PAINTING_WOBBLE_B5 = 0x00B5,
79 SURFACE_PAINTING_WOBBLE_B6 = 0x00B6,
80 SURFACE_PAINTING_WOBBLE_B7 = 0x00B7,
81 SURFACE_PAINTING_WOBBLE_B8 = 0x00B8,
82 SURFACE_PAINTING_WOBBLE_B9 = 0x00B9,
83 SURFACE_PAINTING_WOBBLE_BA = 0x00BA,
84 SURFACE_PAINTING_WOBBLE_BB = 0x00BB,
85 SURFACE_PAINTING_WOBBLE_BC = 0x00BC,
86 SURFACE_PAINTING_WOBBLE_BD = 0x00BD,
87 SURFACE_PAINTING_WOBBLE_BE = 0x00BE,
88 SURFACE_PAINTING_WOBBLE_BF = 0x00BF,
89 SURFACE_PAINTING_WOBBLE_C0 = 0x00C0,
90 SURFACE_PAINTING_WOBBLE_C1 = 0x00C1,
91 SURFACE_PAINTING_WOBBLE_C2 = 0x00C2,
92 SURFACE_PAINTING_WOBBLE_C3 = 0x00C3,
93 SURFACE_PAINTING_WOBBLE_C4 = 0x00C4,
94 SURFACE_PAINTING_WOBBLE_C5 = 0x00C5,
95 SURFACE_PAINTING_WOBBLE_C6 = 0x00C6,
96 SURFACE_PAINTING_WOBBLE_C7 = 0x00C7,
97 SURFACE_PAINTING_WOBBLE_C8 = 0x00C8,
98 SURFACE_PAINTING_WOBBLE_C9 = 0x00C9,
99 SURFACE_PAINTING_WOBBLE_CA = 0x00CA,
100 SURFACE_PAINTING_WOBBLE_CB = 0x00CB,
101 SURFACE_PAINTING_WOBBLE_CC = 0x00CC,
102 SURFACE_PAINTING_WOBBLE_CD = 0x00CD,
103 SURFACE_PAINTING_WOBBLE_CE = 0x00CE,
104 SURFACE_PAINTING_WOBBLE_CF = 0x00CF,
105 SURFACE_PAINTING_WOBBLE_D0 = 0x00D0,
106 SURFACE_PAINTING_WOBBLE_D1 = 0x00D1,
107 SURFACE_PAINTING_WOBBLE_D2 = 0x00D2,
108 SURFACE_PAINTING_WARP_D3 = 0x00D3,
109 SURFACE_PAINTING_WARP_D4 = 0x00D4,
110 SURFACE_PAINTING_WARP_D5 = 0x00D5,
111 SURFACE_PAINTING_WARP_D6 = 0x00D6,
112 SURFACE_PAINTING_WARP_D7 = 0x00D7,
113 SURFACE_PAINTING_WARP_D8 = 0x00D8,
114 SURFACE_PAINTING_WARP_D9 = 0x00D9,
115 SURFACE_PAINTING_WARP_DA = 0x00DA,
116 SURFACE_PAINTING_WARP_DB = 0x00DB,
117 SURFACE_PAINTING_WARP_DC = 0x00DC,
118 SURFACE_PAINTING_WARP_DD = 0x00DD,
119 SURFACE_PAINTING_WARP_DE = 0x00DE,
120 SURFACE_PAINTING_WARP_DF = 0x00DF,
121 SURFACE_PAINTING_WARP_E0 = 0x00E0,
122 SURFACE_PAINTING_WARP_E1 = 0x00E1,
123 SURFACE_PAINTING_WARP_E2 = 0x00E2,
124 SURFACE_PAINTING_WARP_E3 = 0x00E3,
125 SURFACE_PAINTING_WARP_E4 = 0x00E4,
126 SURFACE_PAINTING_WARP_E5 = 0x00E5,
127 SURFACE_PAINTING_WARP_E6 = 0x00E6,
128 SURFACE_PAINTING_WARP_E7 = 0x00E7,
129 SURFACE_PAINTING_WARP_E8 = 0x00E8,
130 SURFACE_PAINTING_WARP_E9 = 0x00E9,
131 SURFACE_PAINTING_WARP_EA = 0x00EA,
132 SURFACE_PAINTING_WARP_EB = 0x00EB,
133 SURFACE_PAINTING_WARP_EC = 0x00EC,
134 SURFACE_PAINTING_WARP_ED = 0x00ED,
135 SURFACE_PAINTING_WARP_EE = 0x00EE,
136 SURFACE_PAINTING_WARP_EF = 0x00EF,
137 SURFACE_PAINTING_WARP_F0 = 0x00F0,
138 SURFACE_PAINTING_WARP_F1 = 0x00F1,
139 SURFACE_PAINTING_WARP_F2 = 0x00F2,
140 SURFACE_PAINTING_WARP_F3 = 0x00F3,
141 SURFACE_TTC_PAINTING_1 = 0x00F4,
142 SURFACE_TTC_PAINTING_2 = 0x00F5,
143 SURFACE_TTC_PAINTING_3 = 0x00F6,
144 SURFACE_PAINTING_WARP_F7 = 0x00F7,
145 SURFACE_PAINTING_WARP_F8 = 0x00F8,
146 SURFACE_PAINTING_WARP_F9 = 0x00F9,
147 SURFACE_PAINTING_WARP_FA = 0x00FA,
148 SURFACE_PAINTING_WARP_FB = 0x00FB,
149 SURFACE_PAINTING_WARP_FC = 0x00FC,
150 SURFACE_WOBBLING_WARP = 0x00FD,
151 SURFACE_TRAPDOOR = 0x00FF,
154inline std::ostream& operator<<(std::ostream& out,
const SurfaceType& surfaceType) {
156 switch (surfaceType) {
157 case SurfaceType::SURFACE_DEFAULT:
158 output =
"SURFACE_DEFAULT";
160 case SurfaceType::SURFACE_BURNING:
161 output =
"SURFACE_BURNING";
163 case SurfaceType::SURFACE_0004:
164 output =
"SURFACE_0004";
166 case SurfaceType::SURFACE_HANGABLE:
167 output =
"SURFACE_HANGABLE";
169 case SurfaceType::SURFACE_SLOW:
170 output =
"SURFACE_SLOW";
172 case SurfaceType::SURFACE_DEATH_PLANE:
173 output =
"SURFACE_DEATH_PLANE";
175 case SurfaceType::SURFACE_CLOSE_CAMERA:
176 output =
"SURFACE_CLOSE_CAMERA";
178 case SurfaceType::SURFACE_WATER:
179 output =
"SURFACE_WATER";
181 case SurfaceType::SURFACE_FLOWING_WATER:
182 output =
"SURFACE_FLOWING_WATER";
184 case SurfaceType::SURFACE_INTANGIBLE:
185 output =
"SURFACE_INTANGIBLE";
187 case SurfaceType::SURFACE_VERY_SLIPPERY:
188 output =
"SURFACE_VERY_SLIPPERY";
190 case SurfaceType::SURFACE_SLIPPERY:
191 output =
"SURFACE_SLIPPERY";
193 case SurfaceType::SURFACE_NOT_SLIPPERY:
194 output =
"SURFACE_NOT_SLIPPERY";
196 case SurfaceType::SURFACE_TTM_VINES:
197 output =
"SURFACE_TTM_VINES";
199 case SurfaceType::SURFACE_MGR_MUSIC:
200 output =
"SURFACE_MGR_MUSIC";
202 case SurfaceType::SURFACE_INSTANT_WARP_1B:
203 output =
"SURFACE_INSTANT_WARP_1B";
205 case SurfaceType::SURFACE_INSTANT_WARP_1C:
206 output =
"SURFACE_INSTANT_WARP_1C";
208 case SurfaceType::SURFACE_INSTANT_WARP_1D:
209 output =
"SURFACE_INSTANT_WARP_1D";
211 case SurfaceType::SURFACE_INSTANT_WARP_1E:
212 output =
"SURFACE_INSTANT_WARP_1E";
214 case SurfaceType::SURFACE_SHALLOW_QUICKSAND:
215 output =
"SURFACE_SHALLOW_QUICKSAND";
217 case SurfaceType::SURFACE_DEEP_QUICKSAND:
218 output =
"SURFACE_DEEP_QUICKSAND";
220 case SurfaceType::SURFACE_INSTANT_QUICKSAND:
221 output =
"SURFACE_INSTANT_QUICKSAND";
223 case SurfaceType::SURFACE_DEEP_MOVING_QUICKSAND:
224 output =
"SURFACE_DEEP_MOVING_QUICKSAND";
226 case SurfaceType::SURFACE_SHALLOW_MOVING_QUICKSAND:
227 output =
"SURFACE_SHALLOW_MOVING_QUICKSAND";
229 case SurfaceType::SURFACE_QUICKSAND:
230 output =
"SURFACE_QUICKSAND";
232 case SurfaceType::SURFACE_MOVING_QUICKSAND:
233 output =
"SURFACE_MOVING_QUICKSAND";
235 case SurfaceType::SURFACE_WALL_MISC:
236 output =
"SURFACE_WALL_MISC";
238 case SurfaceType::SURFACE_NOISE_DEFAULT:
239 output =
"SURFACE_NOISE_DEFAULT";
241 case SurfaceType::SURFACE_NOISE_SLIPPERY:
242 output =
"SURFACE_NOISE_SLIPPERY";
244 case SurfaceType::SURFACE_HORIZONTAL_WIND:
245 output =
"SURFACE_HORIZONTAL_WIND";
247 case SurfaceType::SURFACE_INSTANT_MOVING_QUICKSAND:
248 output =
"SURFACE_INSTANT_MOVING_QUICKSAND";
250 case SurfaceType::SURFACE_ICE:
251 output =
"SURFACE_ICE";
253 case SurfaceType::SURFACE_LOOK_UP_WARP:
254 output =
"SURFACE_LOOK_UP_WARP";
256 case SurfaceType::SURFACE_HARD:
257 output =
"SURFACE_HARD";
259 case SurfaceType::SURFACE_WARP:
260 output =
"SURFACE_WARP";
262 case SurfaceType::SURFACE_TIMER_START:
263 output =
"SURFACE_TIMER_START";
265 case SurfaceType::SURFACE_TIMER_END:
266 output =
"SURFACE_TIMER_END";
268 case SurfaceType::SURFACE_HARD_SLIPPERY:
269 output =
"SURFACE_HARD_SLIPPERY";
271 case SurfaceType::SURFACE_HARD_VERY_SLIPPERY:
272 output =
"SURFACE_HARD_VERY_SLIPPERY";
274 case SurfaceType::SURFACE_HARD_NOT_SLIPPERY:
275 output =
"SURFACE_HARD_NOT_SLIPPERY";
277 case SurfaceType::SURFACE_VERTICAL_WIND:
278 output =
"SURFACE_VERTICAL_WIND";
280 case SurfaceType::SURFACE_BOSS_FIGHT_CAMERA:
281 output =
"SURFACE_BOSS_FIGHT_CAMERA";
283 case SurfaceType::SURFACE_CAMERA_FREE_ROAM:
284 output =
"SURFACE_CAMERA_FREE_ROAM";
286 case SurfaceType::SURFACE_THI3_WALLKICK:
287 output =
"SURFACE_THI3_WALLKICK";
289 case SurfaceType::SURFACE_CAMERA_8_DIR:
290 output =
"SURFACE_CAMERA_8_DIR";
292 case SurfaceType::SURFACE_CAMERA_MIDDLE:
293 output =
"SURFACE_CAMERA_MIDDLE";
295 case SurfaceType::SURFACE_CAMERA_ROTATE_RIGHT:
296 output =
"SURFACE_CAMERA_ROTATE_RIGHT";
298 case SurfaceType::SURFACE_CAMERA_ROTATE_LEFT:
299 output =
"SURFACE_CAMERA_ROTATE_LEFT";
301 case SurfaceType::SURFACE_CAMERA_BOUNDARY:
302 output =
"SURFACE_CAMERA_BOUNDARY";
304 case SurfaceType::SURFACE_NOISE_VERY_SLIPPERY_73:
305 output =
"SURFACE_NOISE_VERY_SLIPPERY_73";
307 case SurfaceType::SURFACE_NOISE_VERY_SLIPPERY_74:
308 output =
"SURFACE_NOISE_VERY_SLIPPERY_74";
310 case SurfaceType::SURFACE_NOISE_VERY_SLIPPERY:
311 output =
"SURFACE_NOISE_VERY_SLIPPERY";
313 case SurfaceType::SURFACE_NO_CAM_COLLISION:
314 output =
"SURFACE_NO_CAM_COLLISION";
316 case SurfaceType::SURFACE_NO_CAM_COLLISION_77:
317 output =
"SURFACE_NO_CAM_COLLISION_77";
319 case SurfaceType::SURFACE_NO_CAM_COL_VERY_SLIPPERY:
320 output =
"SURFACE_NO_CAM_COL_VERY_SLIPPERY";
322 case SurfaceType::SURFACE_NO_CAM_COL_SLIPPERY:
323 output =
"SURFACE_NO_CAM_COL_SLIPPERY";
325 case SurfaceType::SURFACE_SWITCH:
326 output =
"SURFACE_SWITCH";
328 case SurfaceType::SURFACE_VANISH_CAP_WALLS:
329 output =
"SURFACE_VANISH_CAP_WALLS";
331 case SurfaceType::SURFACE_PAINTING_WOBBLE_A6:
332 output =
"SURFACE_PAINTING_WOBBLE_A6";
334 case SurfaceType::SURFACE_PAINTING_WOBBLE_A7:
335 output =
"SURFACE_PAINTING_WOBBLE_A7";
337 case SurfaceType::SURFACE_PAINTING_WOBBLE_A8:
338 output =
"SURFACE_PAINTING_WOBBLE_A8";
340 case SurfaceType::SURFACE_PAINTING_WOBBLE_A9:
341 output =
"SURFACE_PAINTING_WOBBLE_A9";
343 case SurfaceType::SURFACE_PAINTING_WOBBLE_AA:
344 output =
"SURFACE_PAINTING_WOBBLE_AA";
346 case SurfaceType::SURFACE_PAINTING_WOBBLE_AB:
347 output =
"SURFACE_PAINTING_WOBBLE_AB";
349 case SurfaceType::SURFACE_PAINTING_WOBBLE_AC:
350 output =
"SURFACE_PAINTING_WOBBLE_AC";
352 case SurfaceType::SURFACE_PAINTING_WOBBLE_AD:
353 output =
"SURFACE_PAINTING_WOBBLE_AD";
355 case SurfaceType::SURFACE_PAINTING_WOBBLE_AE:
356 output =
"SURFACE_PAINTING_WOBBLE_AE";
358 case SurfaceType::SURFACE_PAINTING_WOBBLE_AF:
359 output =
"SURFACE_PAINTING_WOBBLE_AF";
361 case SurfaceType::SURFACE_PAINTING_WOBBLE_B0:
362 output =
"SURFACE_PAINTING_WOBBLE_B0";
364 case SurfaceType::SURFACE_PAINTING_WOBBLE_B1:
365 output =
"SURFACE_PAINTING_WOBBLE_B1";
367 case SurfaceType::SURFACE_PAINTING_WOBBLE_B2:
368 output =
"SURFACE_PAINTING_WOBBLE_B2";
370 case SurfaceType::SURFACE_PAINTING_WOBBLE_B3:
371 output =
"SURFACE_PAINTING_WOBBLE_B3";
373 case SurfaceType::SURFACE_PAINTING_WOBBLE_B4:
374 output =
"SURFACE_PAINTING_WOBBLE_B4";
376 case SurfaceType::SURFACE_PAINTING_WOBBLE_B5:
377 output =
"SURFACE_PAINTING_WOBBLE_B5";
379 case SurfaceType::SURFACE_PAINTING_WOBBLE_B6:
380 output =
"SURFACE_PAINTING_WOBBLE_B6";
382 case SurfaceType::SURFACE_PAINTING_WOBBLE_B7:
383 output =
"SURFACE_PAINTING_WOBBLE_B7";
385 case SurfaceType::SURFACE_PAINTING_WOBBLE_B8:
386 output =
"SURFACE_PAINTING_WOBBLE_B8";
388 case SurfaceType::SURFACE_PAINTING_WOBBLE_B9:
389 output =
"SURFACE_PAINTING_WOBBLE_B9";
391 case SurfaceType::SURFACE_PAINTING_WOBBLE_BA:
392 output =
"SURFACE_PAINTING_WOBBLE_BA";
394 case SurfaceType::SURFACE_PAINTING_WOBBLE_BB:
395 output =
"SURFACE_PAINTING_WOBBLE_BB";
397 case SurfaceType::SURFACE_PAINTING_WOBBLE_BC:
398 output =
"SURFACE_PAINTING_WOBBLE_BC";
400 case SurfaceType::SURFACE_PAINTING_WOBBLE_BD:
401 output =
"SURFACE_PAINTING_WOBBLE_BD";
403 case SurfaceType::SURFACE_PAINTING_WOBBLE_BE:
404 output =
"SURFACE_PAINTING_WOBBLE_BE";
406 case SurfaceType::SURFACE_PAINTING_WOBBLE_BF:
407 output =
"SURFACE_PAINTING_WOBBLE_BF";
409 case SurfaceType::SURFACE_PAINTING_WOBBLE_C0:
410 output =
"SURFACE_PAINTING_WOBBLE_C0";
412 case SurfaceType::SURFACE_PAINTING_WOBBLE_C1:
413 output =
"SURFACE_PAINTING_WOBBLE_C1";
415 case SurfaceType::SURFACE_PAINTING_WOBBLE_C2:
416 output =
"SURFACE_PAINTING_WOBBLE_C2";
418 case SurfaceType::SURFACE_PAINTING_WOBBLE_C3:
419 output =
"SURFACE_PAINTING_WOBBLE_C3";
421 case SurfaceType::SURFACE_PAINTING_WOBBLE_C4:
422 output =
"SURFACE_PAINTING_WOBBLE_C4";
424 case SurfaceType::SURFACE_PAINTING_WOBBLE_C5:
425 output =
"SURFACE_PAINTING_WOBBLE_C5";
427 case SurfaceType::SURFACE_PAINTING_WOBBLE_C6:
428 output =
"SURFACE_PAINTING_WOBBLE_C6";
430 case SurfaceType::SURFACE_PAINTING_WOBBLE_C7:
431 output =
"SURFACE_PAINTING_WOBBLE_C7";
433 case SurfaceType::SURFACE_PAINTING_WOBBLE_C8:
434 output =
"SURFACE_PAINTING_WOBBLE_C8";
436 case SurfaceType::SURFACE_PAINTING_WOBBLE_C9:
437 output =
"SURFACE_PAINTING_WOBBLE_C9";
439 case SurfaceType::SURFACE_PAINTING_WOBBLE_CA:
440 output =
"SURFACE_PAINTING_WOBBLE_CA";
442 case SurfaceType::SURFACE_PAINTING_WOBBLE_CB:
443 output =
"SURFACE_PAINTING_WOBBLE_CB";
445 case SurfaceType::SURFACE_PAINTING_WOBBLE_CC:
446 output =
"SURFACE_PAINTING_WOBBLE_CC";
448 case SurfaceType::SURFACE_PAINTING_WOBBLE_CD:
449 output =
"SURFACE_PAINTING_WOBBLE_CD";
451 case SurfaceType::SURFACE_PAINTING_WOBBLE_CE:
452 output =
"SURFACE_PAINTING_WOBBLE_CE";
454 case SurfaceType::SURFACE_PAINTING_WOBBLE_CF:
455 output =
"SURFACE_PAINTING_WOBBLE_CF";
457 case SurfaceType::SURFACE_PAINTING_WOBBLE_D0:
458 output =
"SURFACE_PAINTING_WOBBLE_D0";
460 case SurfaceType::SURFACE_PAINTING_WOBBLE_D1:
461 output =
"SURFACE_PAINTING_WOBBLE_D1";
463 case SurfaceType::SURFACE_PAINTING_WOBBLE_D2:
464 output =
"SURFACE_PAINTING_WOBBLE_D2";
466 case SurfaceType::SURFACE_PAINTING_WARP_D3:
467 output =
"SURFACE_PAINTING_WARP_D3";
469 case SurfaceType::SURFACE_PAINTING_WARP_D4:
470 output =
"SURFACE_PAINTING_WARP_D4";
472 case SurfaceType::SURFACE_PAINTING_WARP_D5:
473 output =
"SURFACE_PAINTING_WARP_D5";
475 case SurfaceType::SURFACE_PAINTING_WARP_D6:
476 output =
"SURFACE_PAINTING_WARP_D6";
478 case SurfaceType::SURFACE_PAINTING_WARP_D7:
479 output =
"SURFACE_PAINTING_WARP_D7";
481 case SurfaceType::SURFACE_PAINTING_WARP_D8:
482 output =
"SURFACE_PAINTING_WARP_D8";
484 case SurfaceType::SURFACE_PAINTING_WARP_D9:
485 output =
"SURFACE_PAINTING_WARP_D9";
487 case SurfaceType::SURFACE_PAINTING_WARP_DA:
488 output =
"SURFACE_PAINTING_WARP_DA";
490 case SurfaceType::SURFACE_PAINTING_WARP_DB:
491 output =
"SURFACE_PAINTING_WARP_DB";
493 case SurfaceType::SURFACE_PAINTING_WARP_DC:
494 output =
"SURFACE_PAINTING_WARP_DC";
496 case SurfaceType::SURFACE_PAINTING_WARP_DD:
497 output =
"SURFACE_PAINTING_WARP_DD";
499 case SurfaceType::SURFACE_PAINTING_WARP_DE:
500 output =
"SURFACE_PAINTING_WARP_DE";
502 case SurfaceType::SURFACE_PAINTING_WARP_DF:
503 output =
"SURFACE_PAINTING_WARP_DF";
505 case SurfaceType::SURFACE_PAINTING_WARP_E0:
506 output =
"SURFACE_PAINTING_WARP_E0";
508 case SurfaceType::SURFACE_PAINTING_WARP_E1:
509 output =
"SURFACE_PAINTING_WARP_E1";
511 case SurfaceType::SURFACE_PAINTING_WARP_E2:
512 output =
"SURFACE_PAINTING_WARP_E2";
514 case SurfaceType::SURFACE_PAINTING_WARP_E3:
515 output =
"SURFACE_PAINTING_WARP_E3";
517 case SurfaceType::SURFACE_PAINTING_WARP_E4:
518 output =
"SURFACE_PAINTING_WARP_E4";
520 case SurfaceType::SURFACE_PAINTING_WARP_E5:
521 output =
"SURFACE_PAINTING_WARP_E5";
523 case SurfaceType::SURFACE_PAINTING_WARP_E6:
524 output =
"SURFACE_PAINTING_WARP_E6";
526 case SurfaceType::SURFACE_PAINTING_WARP_E7:
527 output =
"SURFACE_PAINTING_WARP_E7";
529 case SurfaceType::SURFACE_PAINTING_WARP_E8:
530 output =
"SURFACE_PAINTING_WARP_E8";
532 case SurfaceType::SURFACE_PAINTING_WARP_E9:
533 output =
"SURFACE_PAINTING_WARP_E9";
535 case SurfaceType::SURFACE_PAINTING_WARP_EA:
536 output =
"SURFACE_PAINTING_WARP_EA";
538 case SurfaceType::SURFACE_PAINTING_WARP_EB:
539 output =
"SURFACE_PAINTING_WARP_EB";
541 case SurfaceType::SURFACE_PAINTING_WARP_EC:
542 output =
"SURFACE_PAINTING_WARP_EC";
544 case SurfaceType::SURFACE_PAINTING_WARP_ED:
545 output =
"SURFACE_PAINTING_WARP_ED";
547 case SurfaceType::SURFACE_PAINTING_WARP_EE:
548 output =
"SURFACE_PAINTING_WARP_EE";
550 case SurfaceType::SURFACE_PAINTING_WARP_EF:
551 output =
"SURFACE_PAINTING_WARP_EF";
553 case SurfaceType::SURFACE_PAINTING_WARP_F0:
554 output =
"SURFACE_PAINTING_WARP_F0";
556 case SurfaceType::SURFACE_PAINTING_WARP_F1:
557 output =
"SURFACE_PAINTING_WARP_F1";
559 case SurfaceType::SURFACE_PAINTING_WARP_F2:
560 output =
"SURFACE_PAINTING_WARP_F2";
562 case SurfaceType::SURFACE_PAINTING_WARP_F3:
563 output =
"SURFACE_PAINTING_WARP_F3";
565 case SurfaceType::SURFACE_TTC_PAINTING_1:
566 output =
"SURFACE_TTC_PAINTING_1";
568 case SurfaceType::SURFACE_TTC_PAINTING_2:
569 output =
"SURFACE_TTC_PAINTING_2";
571 case SurfaceType::SURFACE_TTC_PAINTING_3:
572 output =
"SURFACE_TTC_PAINTING_3";
574 case SurfaceType::SURFACE_PAINTING_WARP_F7:
575 output =
"SURFACE_PAINTING_WARP_F7";
577 case SurfaceType::SURFACE_PAINTING_WARP_F8:
578 output =
"SURFACE_PAINTING_WARP_F8";
580 case SurfaceType::SURFACE_PAINTING_WARP_F9:
581 output =
"SURFACE_PAINTING_WARP_F9";
583 case SurfaceType::SURFACE_PAINTING_WARP_FA:
584 output =
"SURFACE_PAINTING_WARP_FA";
586 case SurfaceType::SURFACE_PAINTING_WARP_FB:
587 output =
"SURFACE_PAINTING_WARP_FB";
589 case SurfaceType::SURFACE_PAINTING_WARP_FC:
590 output =
"SURFACE_PAINTING_WARP_FC";
592 case SurfaceType::SURFACE_WOBBLING_WARP:
593 output =
"SURFACE_WOBBLING_WARP";
595 case SurfaceType::SURFACE_TRAPDOOR:
596 output =
"SURFACE_TRAPDOOR";
599 throw std::runtime_error(
"Unknown Surface Type");
601 return out << output;
604#define SURFACE_IS_QUICKSAND(cmd) (cmd >= 0x21 && cmd < 0x28)
605#define SURFACE_IS_NOT_HARD(cmd) (cmd != SurfaceType::SURFACE_HARD && \
606 !(cmd >= 0x35 && cmd <= 0x37))
607#define SURFACE_IS_PAINTING_WARP(cmd) (cmd >= 0xD3 && cmd < 0xFD)
609#define SURFACE_CLASS_DEFAULT 0x0000
610#define SURFACE_CLASS_VERY_SLIPPERY 0x0013
611#define SURFACE_CLASS_SLIPPERY 0x0014
612#define SURFACE_CLASS_NOT_SLIPPERY 0x0015
614#define SURFACE_FLAG_DYNAMIC (1 << 0)
615#define SURFACE_FLAG_NO_CAM_COLLISION (1 << 1)
616#define SURFACE_FLAG_X_PROJECTION (1 << 3)
620#define TERRAIN_LOAD_VERTICES 0x0040
621#define TERRAIN_LOAD_CONTINUE 0x0041
622#define TERRAIN_LOAD_END 0x0042
623#define TERRAIN_LOAD_OBJECTS 0x0043
624#define TERRAIN_LOAD_ENVIRONMENT 0x0044
626#define TERRAIN_LOAD_IS_SURFACE_TYPE_LOW(cmd) (cmd < 0x40)
627#define TERRAIN_LOAD_IS_SURFACE_TYPE_HIGH(cmd) (cmd >= 0x65)
630#define TERRAIN_GRASS 0x0000
631#define TERRAIN_STONE 0x0001
632#define TERRAIN_SNOW 0x0002
633#define TERRAIN_SAND 0x0003
634#define TERRAIN_SPOOKY 0x0004
635#define TERRAIN_WATER 0x0005
636#define TERRAIN_SLIDE 0x0006
637#define TERRAIN_MASK 0x0007
642#define COL_INIT() TERRAIN_LOAD_VERTICES
645#define COL_VERTEX_INIT(vtxNum) vtxNum
648#define COL_VERTEX(x, y, z) x, y, z
651#define COL_TRI_INIT(surfType, triNum) surfType, triNum
654#define COL_TRI(v1, v2, v3) v1, v2, v3
657#define COL_TRI_SPECIAL(v1, v2, v3, param) v1, v2, v3, param
660#define COL_TRI_STOP() TERRAIN_LOAD_CONTINUE
663#define COL_END() TERRAIN_LOAD_END
666#define COL_SPECIAL_INIT(num) TERRAIN_LOAD_OBJECTS, num
669#define COL_WATER_BOX_INIT(num) TERRAIN_LOAD_ENVIRONMENT, num
672#define COL_WATER_BOX(id, x1, z1, x2, z2, y) id, x1, z1, x2, z2, y