Super Mario 64 Source
A Super Mario 64 decompilation, brought to you by a bunch of clever folks.
object_constants.h
Go to the documentation of this file.
1 #ifndef _OBJECT_CONSTANTS_H
2 #define _OBJECT_CONSTANTS_H
3 
4 // This file contains macros that provide descriptive names for
5 // field-specific and object-specific constants, e.g. actions.
6 
7 /* activeFlags */
8 #define ACTIVE_FLAG_ACTIVE (1 << 0) // 0x0001
9 #define ACTIVE_FLAG_FAR_AWAY (1 << 1) // 0x0002
10 #define ACTIVE_FLAG_UNK2 (1 << 2) // 0x0004
11 #define ACTIVE_FLAG_IN_DIFFERENT_ROOM (1 << 3) // 0x0008
12 #define ACTIVE_FLAG_UNIMPORTANT (1 << 4) // 0x0010
13 #define ACTIVE_FLAG_INITIATED_TIME_STOP (1 << 5) // 0x0020
14 #define ACTIVE_FLAG_MOVE_THROUGH_GRATE (1 << 6) // 0x0040
15 #define ACTIVE_FLAG_UNK7 (1 << 7) // 0x0080
16 #define ACTIVE_FLAG_UNK8 (1 << 8) // 0x0100
17 #define ACTIVE_FLAG_UNK9 (1 << 9) // 0x0200
18 #define ACTIVE_FLAG_UNK10 (1 << 10) // 0x0400
19 
20 #define ACTIVE_FLAGS_DEACTIVATED 0
21 
22 /* respawnInfoType */
23 #define RESPAWN_INFO_TYPE_NULL 0
24 #define RESPAWN_INFO_TYPE_32 1
25 #define RESPAWN_INFO_TYPE_16 2
26 
27 /* respawnInfo */
28 #define RESPAWN_INFO_DONT_RESPAWN 0xFF
29 
30 /* oFlags */
31 #define OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE (1 << 0) // 0x00000001
32 #define OBJ_FLAG_MOVE_XZ_USING_FVEL (1 << 1) // 0x00000002
33 #define OBJ_FLAG_MOVE_Y_WITH_TERMINAL_VEL (1 << 2) // 0x00000004
34 #define OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW (1 << 3) // 0x00000008
35 #define OBJ_FLAG_0010 (1 << 4) // 0x00000010
36 #define OBJ_FLAG_0020 (1 << 5) // 0x00000020
37 #define OBJ_FLAG_COMPUTE_DIST_TO_MARIO (1 << 6) // 0x00000040
38 #define OBJ_FLAG_ACTIVE_FROM_AFAR (1 << 7) // 0x00000080
39 #define OBJ_FLAG_0100 (1 << 8) // 0x00000100
40 #define OBJ_FLAG_TRANSFORM_RELATIVE_TO_PARENT (1 << 9) // 0x00000200
41 #define OBJ_FLAG_HOLDABLE (1 << 10) // 0x00000400
42 #define OBJ_FLAG_0800 (1 << 11) // 0x00000800
43 #define OBJ_FLAG_1000 (1 << 12) // 0x00001000
44 #define OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO (1 << 13) // 0x00002000
45 #define OBJ_FLAG_PERSISTENT_RESPAWN (1 << 14) // 0x00004000
46 #define OBJ_FLAG_8000 (1 << 15) // 0x00008000
47 #define OBJ_FLAG_30 (1 << 30) // 0x40000000
48 
49 /* oHeldState */
50 #define HELD_FREE 0
51 #define HELD_HELD 1
52 #define HELD_THROWN 2
53 #define HELD_DROPPED 3
54 
55 /* oDialogState */
56 #define DIALOG_UNK1_ENABLE_TIME_STOP 0
57 #define DIALOG_UNK1_INTERRUPT_MARIO_ACTION 1
58 #define DIALOG_UNK1_BEGIN_DIALOG 2
59 #define DIALOG_UNK1_AWAIT_DIALOG 3
60 #define DIALOG_UNK1_DISABLE_TIME_STOP 4
61 
62 #define DIALOG_UNK1_FLAG_1 (1 << 1) // 0x02
63 #define DIALOG_UNK1_FLAG_2 (1 << 2) // 0x04
64 #define DIALOG_UNK1_FLAG_4 (1 << 4) // 0x10
65 
66 #define DIALOG_UNK2_ENABLE_TIME_STOP 0
67 #define DIALOG_UNK2_TURN_AND_INTERRUPT_MARIO_ACTION 1
68 #define DIALOG_UNK2_AWAIT_DIALOG 2
69 #define DIALOG_UNK2_END_DIALOG 3
70 
71 #define DIALOG_UNK2_FLAG_0 (1 << 0) // 0x01
72 #define DIALOG_UNK2_LEAVE_TIME_STOP_ENABLED (1 << 4) // 0x10
73 
74 /* oMoveFlags */
75 #define OBJ_MOVE_LANDED (1 << 0) // 0x0001
76 #define OBJ_MOVE_ON_GROUND (1 << 1) // 0x0002 // mutually exclusive to OBJ_MOVE_LANDED
77 #define OBJ_MOVE_LEFT_GROUND (1 << 2) // 0x0004
78 #define OBJ_MOVE_ENTERED_WATER (1 << 3) // 0x0008
79 #define OBJ_MOVE_AT_WATER_SURFACE (1 << 4) // 0x0010
80 #define OBJ_MOVE_UNDERWATER_OFF_GROUND (1 << 5) // 0x0020
81 #define OBJ_MOVE_UNDERWATER_ON_GROUND (1 << 6) // 0x0040
82 #define OBJ_MOVE_IN_AIR (1 << 7) // 0x0080
83 #define OBJ_MOVE_8 (1 << 8) // 0x0100
84 #define OBJ_MOVE_HIT_WALL (1 << 9) // 0x0200
85 #define OBJ_MOVE_HIT_EDGE (1 << 10) // 0x0400
86 #define OBJ_MOVE_ABOVE_LAVA (1 << 11) // 0x0800
87 #define OBJ_MOVE_LEAVING_WATER (1 << 12) // 0x1000
88 #define OBJ_MOVE_13 (1 << 13) // 0x2000
89 #ifndef VERSION_JP
90 #define OBJ_MOVE_ABOVE_DEATH_BARRIER (1 << 14) // 0x4000
91 #endif
92 
93 #define OBJ_MOVE_MASK_ON_GROUND (OBJ_MOVE_LANDED | OBJ_MOVE_ON_GROUND)
94 #define OBJ_MOVE_MASK_33 0x33
95 #define OBJ_MOVE_MASK_IN_WATER (\
96  OBJ_MOVE_ENTERED_WATER |\
97  OBJ_MOVE_AT_WATER_SURFACE |\
98  OBJ_MOVE_UNDERWATER_OFF_GROUND |\
99  OBJ_MOVE_UNDERWATER_ON_GROUND)
100 #define OBJ_MOVE_MASK_HIT_WALL_OR_IN_WATER \
101  (OBJ_MOVE_HIT_WALL | OBJ_MOVE_MASK_IN_WATER)
102 
103 /* oActiveParticleFlags */
104 #define ACTIVE_PARTICLE_0 0x00000001
105 #define ACTIVE_PARTICLE_3 0x00000008
106 #define ACTIVE_PARTICLE_4 0x00000010
107 #define ACTIVE_PARTICLE_5 0x00000020
108 #define ACTIVE_PARTICLE_6 0x00000040
109 #define ACTIVE_PARTICLE_7 0x00000080
110 #define ACTIVE_PARTICLE_8 0x00000100
111 #define ACTIVE_PARTICLE_9 0x00000200
112 #define ACTIVE_PARTICLE_10 0x00000400
113 #define ACTIVE_PARTICLE_11 0x00000800
114 #define ACTIVE_PARTICLE_12 0x00001000
115 #define ACTIVE_PARTICLE_13 0x00002000
116 #define ACTIVE_PARTICLE_14 0x00004000
117 #define ACTIVE_PARTICLE_15 0x00008000
118 #define ACTIVE_PARTICLE_16 0x00010000
119 #define ACTIVE_PARTICLE_17 0x00020000
120 #define ACTIVE_PARTICLE_18 0x00040000
121 #define ACTIVE_PARTICLE_19 0x00080000
122 
123 /* oAction */
124 #define OBJ_ACT_LAVA_DEATH 100
125 #define OBJ_ACT_DEATH_PLANE_DEATH 101
126 
127 #define OBJ_ACT_HORIZONTAL_KNOCKBACK 100
128 #define OBJ_ACT_VERTICAL_KNOCKBACK 101
129 #define OBJ_ACT_SQUISHED 102
130 
131 /* gTTCSpeedSetting */
132 #define TTC_SPEED_SLOW 0
133 #define TTC_SPEED_FAST 1
134 #define TTC_SPEED_RANDOM 2
135 #define TTC_SPEED_STOPPED 3
136 
137 /* Bob-omb */
138  /* oBehParams2ndByte */
139  #define BOBOMB_BP_STYPE_GENERIC 0
140  #define BOBOMB_BP_STYPE_STATIONARY 1
141  /* oAction */
142  #define BOBOMB_ACT_PATROL 0
143  #define BOBOMB_ACT_LAUNCHED 1
144  #define BOBOMB_ACT_CHASE_MARIO 2
145  #define BOBOMB_ACT_EXPLODE 3
146  #define BOBOMB_ACT_LAVA_DEATH 100
147  #define BOBOMB_ACT_DEATH_PLANE_DEATH 101
148 
149 /* Hidden Blue Coin */
150  /* oAction */
151  #define HIDDEN_BLUE_COIN_ACT_INACTIVE 0
152  #define HIDDEN_BLUE_COIN_ACT_WAITING 1
153  #define HIDDEN_BLUE_COIN_ACT_ACTIVE 2
154 
155 /* Blue Coin Switch */
156  /* oAction */
157  #define BLUE_COIN_SWITCH_ACT_IDLE 0
158  #define BLUE_COIN_SWITCH_ACT_RECEDING 1
159  #define BLUE_COIN_SWITCH_ACT_TICKING 2
160 
161 /* Moving Blue Coin */
162  /* oAction */
163  #define MOV_BCOIN_ACT_STILL 0
164  #define MOV_BCOIN_ACT_MOVING 1
165 
166 /* Moving Yellow Coin */
167  /* oAction */
168  #define MOV_YCOIN_ACT_IDLE 0
169  #define MOV_YCOIN_ACT_BLINKING 1
170  #define MOV_YCOIN_ACT_LAVA_DEATH 100
171  #define MOV_YCOIN_ACT_DEATH_PLANE_DEATH 101
172 
173 /* Bob-omb Buddy */
174  /* oBehParams2ndByte */
175  #define BOBOMB_BUDDY_BP_STYPE_GENERIC 0
176  #define BOBOMB_BUDDY_BP_STYPE_BOB_GRASS_KBB 1
177  #define BOBOMB_BUDDY_BP_STYPE_BOB_CANNON_KBB 2
178  #define BOBOMB_BUDDY_BP_STYPE_BOB_GRASS 3
179  /* oAction */
180  #define BOBOMB_BUDDY_ACT_IDLE 0
181  #define BOBOMB_BUDDY_ACT_TURN_TO_TALK 2
182  #define BOBOMB_BUDDY_ACT_TALK 3
183  /* oBobombBuddyRole */
184  #define BOBOMB_BUDDY_ROLE_ADVICE 0
185  #define BOBOMB_BUDDY_ROLE_CANNON 1
186  /* oBobombBuddyCannonStatus */
187  #define BOBOMB_BUDDY_CANNON_UNOPENED 0
188  #define BOBOMB_BUDDY_CANNON_OPENING 1
189  #define BOBOMB_BUDDY_CANNON_OPENED 2
190  #define BOBOMB_BUDDY_CANNON_STOP_TALKING 3
191  /* oBobombBuddyHasTalkedToMario */
192  #define BOBOMB_BUDDY_HAS_NOT_TALKED 0
193  #define BOBOMB_BUDDY_HAS_TALKED 2
194 
195 /* Cannon Trap Door */
196  /* oAction */
197  #define CANNON_TRAP_DOOR_ACT_CLOSED 0
198  #define CANNON_TRAP_DOOR_ACT_CAM_ZOOM 1
199  #define CANNON_TRAP_DOOR_ACT_OPENING 2
200  #define CANNON_TRAP_DOOR_ACT_OPEN 3
201 
202 /* Homing Amp */
203  /* oAction */
204  #define HOMING_AMP_ACT_INACTIVE 0
205  #define HOMING_AMP_ACT_APPEAR 1
206  #define HOMING_AMP_ACT_CHASE 2
207  #define HOMING_AMP_ACT_GIVE_UP 3
208  #define HOMING_AMP_ACT_ATTACK_COOLDOWN 4
209 
210 /* Amp */
211  /* oBehParams2ndByte */
212  #define AMP_BP_ROT_RADIUS_200 0
213  #define AMP_BP_ROT_RADIUS_300 1
214  #define AMP_BP_ROT_RADIUS_400 2
215  #define AMP_BP_ROT_RADIUS_0 3
216 
217  /* oAction */
218  #define AMP_ACT_IDLE 2
219  #define AMP_ACT_ATTACK_COOLDOWN 4
220 
221 /* Butterfly */
222  /* oAction */
223  #define BUTTERFLY_ACT_RESTING 0
224  #define BUTTERFLY_ACT_FOLLOW_MARIO 1
225  #define BUTTERFLY_ACT_RETURN_HOME 2
226 
227 /* Hoot */
228  /* oHootAvailability */
229  #define HOOT_AVAIL_ASLEEP_IN_TREE 0
230  #define HOOT_AVAIL_WANTS_TO_TALK 1
231  #define HOOT_AVAIL_READY_TO_FLY 2
232  /* oAction */
233  #define HOOT_ACT_ASCENT 0
234  #define HOOT_ACT_CARRY 1
235  #define HOOT_ACT_TIRED 2
236 
237 /* Bully (all variants) */
238  /* oBehParams2ndByte */
239  #define BULLY_BP_SIZE_SMALL 0
240  #define BULLY_BP_SIZE_BIG 1
241  /* oAction */
242  #define BULLY_ACT_PATROL 0
243  #define BULLY_ACT_CHASE_MARIO 1
244  #define BULLY_ACT_KNOCKBACK 2
245  #define BULLY_ACT_BACK_UP 3
246  #define BULLY_ACT_INACTIVE 4
247  #define BULLY_ACT_ACTIVATE_AND_FALL 5
248  #define BULLY_ACT_LAVA_DEATH 100
249  #define BULLY_ACT_DEATH_PLANE_DEATH 101
250  /* oBullySubtype */
251  #define BULLY_STYPE_GENERIC 0
252  #define BULLY_STYPE_MINION 1
253  #define BULLY_STYPE_CHILL 16
254 
255 /* Water Ring (all variants) */
256  /* oAction */
257  #define WATER_RING_ACT_NOT_COLLECTED 0
258  #define WATER_RING_ACT_COLLECTED 1
259 
260 /* Jet Stream Water Ring Spawner */
261  /* oAction */
262  #define JS_RING_SPAWNER_ACT_ACTIVE 0
263  #define JS_RING_SPAWNER_ACT_INACTIVE 1
264 
265 /* Celebration Star */
266  /* oAction */
267  #define CELEB_STAR_ACT_SPIN_AROUND_MARIO 0
268  #define CELEB_STAR_ACT_FACE_CAMERA 1
269 
270 /* LLL Drawbridge */
271  /* oAction */
272  #define LLL_DRAWBRIDGE_ACT_LOWER 0
273  #define LLL_DRAWBRIDGE_ACT_RAISE 1
274 
275 /* Bomp (both variants) */
276  /* oAction */
277  #define BOMP_ACT_WAIT 0
278  #define BOMP_ACT_POKE_OUT 1
279  #define BOMP_ACT_EXTEND 2
280  #define BOMP_ACT_RETRACT 3
281 
282 /* WF Sliding Brick Platform */
283  /* oBehParams2ndByte */
284  #define WF_SLID_BRICK_PTFM_BP_MOV_VEL_10 1
285  #define WF_SLID_BRICK_PTFM_BP_MOV_VEL_15 2
286  #define WF_SLID_BRICK_PTFM_BP_MOV_VEL_20 3
287  /* oAction */
288  #define WF_SLID_BRICK_PTFM_ACT_WAIT 0
289  #define WF_SLID_BRICK_PTFM_ACT_EXTEND 1
290  #define WF_SLID_BRICK_PTFM_ACT_RETRACT 2
291 
292 /* Fake Moneybag Coin */
293  /* oAction */
294  #define FAKE_MONEYBAG_COIN_ACT_IDLE 0
295  #define FAKE_MONEYBAG_COIN_ACT_TRANSFORM 1
296 
297 /* Moneybag */
298  /* oAction */
299  #define MONEYBAG_ACT_APPEAR 0
300  #define MONEYBAG_ACT_UNUSED_APPEAR 1
301  #define MONEYBAG_ACT_MOVE_AROUND 2
302  #define MONEYBAG_ACT_RETURN_HOME 3
303  #define MONEYBAG_ACT_DISAPPEAR 4
304  #define MONEYBAG_ACT_DEATH 5
305  /* oMoneybagJumpState */
306  #define MONEYBAG_JUMP_LANDING 0
307  #define MONEYBAG_JUMP_PREPARE 1
308  #define MONEYBAG_JUMP_JUMP 2
309  #define MONEYBAG_JUMP_JUMP_AND_BOUNCE 3
310  #define MONEYBAG_JUMP_WALK_AROUND 4
311  #define MONEYBAG_JUMP_WALK_HOME 5
312 
313 /* Bowling Ball */
314  /* oAction */
315  #define BBALL_ACT_INITIALIZE 0
316  #define BBALL_ACT_ROLL 1
317 
318 /* Bowling Ball + Bowling Ball Spawner (all variants) */
319  /* oBehParams2ndByte */
320  #define BBALL_BP_STYPE_BOB_UPPER 0
321  #define BBALL_BP_STYPE_TTM 1
322  #define BBALL_BP_STYPE_BOB_LOWER 2
323  #define BBALL_BP_STYPE_THI_LARGE 3
324  #define BBALL_BP_STYPE_THI_SMALL 4
325 
326 /* Bowling Ball (Free) */
327  /* oAction */
328  #define FREE_BBALL_ACT_IDLE 0
329  #define FREE_BBALL_ACT_ROLL 1
330  #define FREE_BBALL_ACT_RESET 2
331 
332 /* Beta Chest Lid */
333  /* oAction */
334  #define BETA_CHEST_ACT_IDLE_CLOSED 0
335  #define BETA_CHEST_ACT_OPENING 1
336  #define BETA_CHEST_ACT_IDLE_OPEN 2
337 
338 /* BBH Tilting Trap Platform */
339  /* oAction */
340  // Unused in original Japanese version
341  #define BBH_TILTING_TRAP_PLATFORM_ACT_MARIO_ON 0
342  #define BBH_TILTING_TRAP_PLATFORM_ACT_MARIO_OFF 1
343 
344 /* Boo */
345  /* oBooDeathStatus */
346  #define BOO_DEATH_STATUS_ALIVE 0
347  #define BOO_DEATH_STATUS_DYING 1
348  #define BOO_DEATH_STATUS_DEAD 2
349 
350 /* Beta Boo Key */
351  /* oAction */
352  #define BETA_BOO_KEY_ACT_IN_BOO 0
353  #define BETA_BOO_KEY_ACT_DROPPING 1
354  #define BETA_BOO_KEY_ACT_DROPPED 2
355 
356 /* Boo Cage */
357  /* oAction */
358  #define BOO_CAGE_ACT_IN_BOO 0
359  #define BOO_CAGE_ACT_FALLING 1
360  #define BOO_CAGE_ACT_ON_GROUND 2
361  #define BOO_CAGE_ACT_MARIO_JUMPING_IN 3
362  #define BOO_CAGE_ACT_USELESS 4
363 
364 /* BBH Haunted Bookshelf */
365  /* oAction */
366  #define HAUNTED_BOOKSHELF_ACT_IDLE 0
367  #define HAUNTED_BOOKSHELF_ACT_RECEDE 1
368 
369 /* BBH Merry-Go-Round */
370  /* gMarioCurrentRoom */
371  #define BBH_NEAR_MERRY_GO_ROUND_ROOM 10
372  #define BBH_DYNAMIC_SURFACE_ROOM 0
373  #define BBH_OUTSIDE_ROOM 13
374 
375 /* WDW Arrow Lift */
376  /* oAction */
377  #define ARROW_LIFT_ACT_IDLE 0
378  #define ARROW_LIFT_ACT_MOVING_AWAY 1
379  #define ARROW_LIFT_ACT_MOVING_BACK 2
380 
381  /* status */
382  #define ARROW_LIFT_NOT_DONE_MOVING 0
383  #define ARROW_LIFT_DONE_MOVING 1
384 
385 /* Yoshi */
386  /* oAction */
387  #define YOSHI_ACT_IDLE 0
388  #define YOSHI_ACT_WALK 1
389  #define YOSHI_ACT_TALK 2
390  #define YOSHI_ACT_WALK_JUMP_OFF_ROOF 3
391  #define YOSHI_ACT_FINISH_JUMPING_AND_DESPAWN 4
392  #define YOSHI_ACT_GIVE_PRESENT 5
393  #define YOSHI_ACT_CREDITS 10
394 
395 /* Koopa */
396  /* oAction */
397  #define KOOPA_UNSHELLED_ACT_RUN 0
398  #define KOOPA_UNSHELLED_ACT_DIVE 1
399  #define KOOPA_UNSHELLED_ACT_LYING 2
400  #define KOOPA_UNSHELLED_ACT_UNUSED3 3
401 
402  #define KOOPA_SHELLED_ACT_STOPPED 0
403  #define KOOPA_SHELLED_ACT_WALK 1
404  #define KOOPA_SHELLED_ACT_RUN_FROM_MARIO 2
405  #define KOOPA_SHELLED_ACT_LYING 3
406  #define KOOPA_SHELLED_ACT_DIE 4
407 
408  #define KOOPA_THE_QUICK_ACT_WAIT_BEFORE_RACE 0
409  #define KOOPA_THE_QUICK_ACT_UNUSED1 1
410  #define KOOPA_THE_QUICK_ACT_SHOW_INIT_TEXT 2
411  #define KOOPA_THE_QUICK_ACT_RACE 3
412  #define KOOPA_THE_QUICK_ACT_DECELERATE 4
413  #define KOOPA_THE_QUICK_ACT_STOP 5
414  #define KOOPA_THE_QUICK_ACT_AFTER_RACE 6
415 
416  /* oSubAction */
417  #define KOOPA_SHELLED_SUB_ACT_START_WALK 0
418  #define KOOPA_SHELLED_SUB_ACT_WALK 1
419  #define KOOPA_SHELLED_SUB_ACT_STOP_WALK 2
420 
421  #define KOOPA_THE_QUICK_SUB_ACT_START_RUN 0
422  #define KOOPA_THE_QUICK_SUB_ACT_RUN 1
423  #define KOOPA_THE_QUICK_SUB_ACT_JUMP 2
424 
425  /* oKoopaTheQuickRaceIndex */
426  #define KOOPA_THE_QUICK_BOB_INDEX 0
427  #define KOOPA_THE_QUICK_THI_INDEX 1
428 
429  /* oBehParams2ndByte */
430  #define KOOPA_BP_UNSHELLED 0
431  #define KOOPA_BP_NORMAL 1
432  #define KOOPA_BP_KOOPA_THE_QUICK_BASE 2
433  #define KOOPA_BP_KOOPA_THE_QUICK_BOB (KOOPA_BP_KOOPA_THE_QUICK_BASE + KOOPA_THE_QUICK_BOB_INDEX)
434  #define KOOPA_BP_KOOPA_THE_QUICK_THI (KOOPA_BP_KOOPA_THE_QUICK_BASE + KOOPA_THE_QUICK_THI_INDEX)
435  #define KOOPA_BP_TINY 4
436 
437 /* Pokey */
438  /* oAction */
439  #define POKEY_ACT_UNINITIALIZED 0
440  #define POKEY_ACT_WANDER 1
441  #define POKEY_ACT_UNLOAD_PARTS 2
442 
443 /* Swoop */
444  /* oAction */
445  #define SWOOP_ACT_IDLE 0
446  #define SWOOP_ACT_MOVE 1
447 
448 /* Fly guy */
449  /* oAction */
450  #define FLY_GUY_ACT_IDLE 0
451  #define FLY_GUY_ACT_APPROACH_MARIO 1
452  #define FLY_GUY_ACT_LUNGE 2
453  #define FLY_GUY_ACT_SHOOT_FIRE 3
454 
455 /* Goomba triplet spawner */
456  /* oBehParams2ndByte */
457  #define GOOMBA_TRIPLET_SPAWNER_BP_SIZE_MASK 0x00000003
458  #define GOOMBA_TRIPLET_SPAWNER_BP_EXTRA_GOOMBAS_MASK 0x000000FC
459  /* oAction */
460  #define GOOMBA_TRIPLET_SPAWNER_ACT_UNLOADED 0
461  #define GOOMBA_TRIPLET_SPAWNER_ACT_LOADED 1
462 
463 /* Goomba */
464  /* oBehParams2ndByte */
465  #define GOOMBA_BP_SIZE_MASK 0x00000003
466  #define GOOMBA_SIZE_REGULAR 0
467  #define GOOMBA_SIZE_HUGE 1
468  #define GOOMBA_SIZE_TINY 2
469  #define GOOMBA_BP_TRIPLET_FLAG_MASK 0x000000FC
470  /* oAction */
471  #define GOOMBA_ACT_WALK 0
472  #define GOOMBA_ACT_ATTACKED_MARIO 1
473  #define GOOMBA_ACT_JUMP 2
474 
475 /* Chain chomp */
476  /* oAction */
477  #define CHAIN_CHOMP_ACT_UNINITIALIZED 0
478  #define CHAIN_CHOMP_ACT_MOVE 1
479  #define CHAIN_CHOMP_ACT_UNLOAD_CHAIN 2
480 
481  /* oSubAction */
482  #define CHAIN_CHOMP_SUB_ACT_TURN 0
483  #define CHAIN_CHOMP_SUB_ACT_LUNGE 1
484 
485  /* oChainChompReleaseStatus */
486  #define CHAIN_CHOMP_NOT_RELEASED 0
487  #define CHAIN_CHOMP_RELEASED_TRIGGER_CUTSCENE 1
488  #define CHAIN_CHOMP_RELEASED_LUNGE_AROUND 2
489  #define CHAIN_CHOMP_RELEASED_BREAK_GATE 3
490  #define CHAIN_CHOMP_RELEASED_JUMP_AWAY 4
491  #define CHAIN_CHOMP_RELEASED_END_CUTSCENE 5
492 
493 /* Chain chomp chain part */
494  /* oBehParams2ndByte */
495  #define CHAIN_CHOMP_CHAIN_PART_BP_PIVOT 0
496 
497 /* Wooden post */
498  /* oBehParams */
499  #define WOODEN_POST_BP_NO_COINS_MASK 0x0000FF00
500 
501 /* Wiggler */
502  /* oAction */
503  #define WIGGLER_ACT_UNINITIALIZED 0
504  #define WIGGLER_ACT_WALK 1
505  #define WIGGLER_ACT_KNOCKBACK 2
506  #define WIGGLER_ACT_JUMPED_ON 3
507  #define WIGGLER_ACT_SHRINK 4
508  #define WIGGLER_ACT_FALL_THROUGH_FLOOR 5
509 
510  /* oWigglerTextStatus */
511  #define WIGGLER_TEXT_STATUS_AWAIT_DIALOG 0
512  #define WIGGLER_TEXT_STATUS_SHOWING_DIALOG 1
513  #define WIGGLER_TEXT_STATUS_COMPLETED_DIALOG 2
514 
515 /* Spiny */
516  /* oAction */
517  #define SPINY_ACT_WALK 0
518  #define SPINY_ACT_HELD_BY_LAKITU 1
519  #define SPINY_ACT_THROWN_BY_LAKITU 2
520  #define SPINY_ACT_ATTACKED_MARIO 3
521 
522 /* Evil lakitu */
523  /* oAction */
524  #define ENEMY_LAKITU_ACT_UNINITIALIZED 0
525  #define ENEMY_LAKITU_ACT_MAIN 1
526 
527  /* oSubAction */
528  #define ENEMY_LAKITU_SUB_ACT_NO_SPINY 0
529  #define ENEMY_LAKITU_SUB_ACT_HOLD_SPINY 1
530  #define ENEMY_LAKITU_SUB_ACT_THROW_SPINY 2
531 
532 /* Cloud */
533  /* oAction */
534  #define CLOUD_ACT_SPAWN_PARTS 0
535  #define CLOUD_ACT_MAIN 1
536  #define CLOUD_ACT_UNLOAD 2
537  #define CLOUD_ACT_FWOOSH_HIDDEN 3
538 
539  /* oBehParams2ndByte */
540  #define CLOUD_BP_FWOOSH 0
541  #define CLOUD_BP_LAKITU_CLOUD 1
542 
543 /* Camera lakitu */
544  /* oAction */
545  #define CAMERA_LAKITU_INTRO_ACT_TRIGGER_CUTSCENE 0
546  #define CAMERA_LAKITU_INTRO_ACT_SPAWN_CLOUD 1
547  #define CAMERA_LAKITU_INTRO_ACT_UNK2 2
548 
549  /* oBehParams2ndByte */
550  #define CAMERA_LAKITU_BP_FOLLOW_CAMERA 0
551  #define CAMERA_LAKITU_BP_INTRO 1
552 
553 /* Monty mole */
554  /* oAction */
555  #define MONTY_MOLE_ACT_SELECT_HOLE 0
556  #define MONTY_MOLE_ACT_RISE_FROM_HOLE 1
557  #define MONTY_MOLE_ACT_SPAWN_ROCK 2
558  #define MONTY_MOLE_ACT_BEGIN_JUMP_INTO_HOLE 3
559  #define MONTY_MOLE_ACT_THROW_ROCK 4
560  #define MONTY_MOLE_ACT_JUMP_INTO_HOLE 5
561  #define MONTY_MOLE_ACT_HIDE 6
562  #define MONTY_MOLE_ACT_JUMP_OUT_OF_HOLE 7
563 
564  /* oBehParams2ndByte */
565  #define MONTY_MOLE_BP_NO_ROCK 0
566 
567 /* Monty mole rock */
568  /* oAction */
569  #define MONTY_MOLE_ROCK_ACT_HELD 0
570  #define MONTY_MOLE_ROCK_ACT_MOVE 1
571 
572 /* Piranha Plant */
573  /* oAction */
574  #define PIRANHA_PLANT_ACT_IDLE 0
575  #define PIRANHA_PLANT_ACT_SLEEPING 1
576  #define PIRANHA_PLANT_ACT_BITING 2
577  #define PIRANHA_PLANT_ACT_WOKEN_UP 3
578  #define PIRANHA_PLANT_ACT_STOPPED_BITING 4
579  #define PIRANHA_PLANT_ACT_ATTACKED 5
580  #define PIRANHA_PLANT_ACT_SHRINK_AND_DIE 6
581  #define PIRANHA_PLANT_ACT_WAIT_TO_RESPAWN 7
582  #define PIRANHA_PLANT_ACT_RESPAWN 8
583 
584 /* Piranha Plant bubble */
585  #define PIRANHA_PLANT_BUBBLE_ACT_IDLE 0
586  #define PIRANHA_PLANT_BUBBLE_ACT_GROW_SHRINK_LOOP 1
587  #define PIRANHA_PLANT_BUBBLE_ACT_BURST 2
588 
589 /* Platform on track */
590  /* oAction */
591  #define PLATFORM_ON_TRACK_ACT_INIT 0
592  #define PLATFORM_ON_TRACK_ACT_WAIT_FOR_MARIO 1
593  #define PLATFORM_ON_TRACK_ACT_MOVE_ALONG_TRACK 2
594  #define PLATFORM_ON_TRACK_ACT_PAUSE_BRIEFLY 3
595  #define PLATFORM_ON_TRACK_ACT_FALL 4
596 
597  /* oBehParams >> 16 */
598  #define PLATFORM_ON_TRACK_BP_MASK_PATH 0xF
599  #define PLATFORM_ON_TRACK_BP_MASK_TYPE (0x7 << 4)
600  #define PLATFORM_ON_TRACK_BP_RETURN_TO_START (1 << 8)
601  #define PLATFORM_ON_TRACK_BP_DONT_DISAPPEAR (1 << 9)
602  #define PLATFORM_ON_TRACK_BP_DONT_TURN_YAW (1 << 10)
603  #define PLATFORM_ON_TRACK_BP_DONT_TURN_ROLL (1 << 11)
604 
605  #define PLATFORM_ON_TRACK_TYPE_CARPET 0
606  #define PLATFORM_ON_TRACK_TYPE_SKI_LIFT 1
607  #define PLATFORM_ON_TRACK_TYPE_CHECKERED 2
608  #define PLATFORM_ON_TRACK_TYPE_GRATE 3
609 
610 /* Purple switch */
611  #define PURPLE_SWITCH_IDLE 0
612  #define PURPLE_SWITCH_PRESSED 1
613  #define PURPLE_SWITCH_TICKING 2
614  #define PURPLE_SWITCH_UNPRESSED 3
615  #define PURPLE_SWITCH_WAIT_FOR_MARIO_TO_GET_OFF 4
616 
617 /* Pyramid elevator */
618  #define PYRAMID_ELEVATOR_IDLE 0
619  #define PYRAMID_ELEVATOR_START_MOVING 1
620  #define PYRAMID_ELEVATOR_CONSTANT_VELOCITY 2
621  #define PYRAMID_ELEVATOR_AT_BOTTOM 3
622 
623 /* Pyramid top */
624  #define PYRAMID_TOP_ACT_CHECK_IF_SOLVED 0
625  #define PYRAMID_TOP_ACT_SPINNING 1
626  #define PYRAMID_TOP_ACT_EXPLODE 2
627 
628 /* Pyramid wall */
629  /* oAction */
630  #define PYRAMID_WALL_ACT_MOVING_DOWN 0
631  #define PYRAMID_WALL_ACT_MOVING_UP 1
632 
633  /* oBehParams2ndByte */
634  #define PYRAMID_WALL_BP_POSITION_HIGH 0
635  #define PYRAMID_WALL_BP_POSITION_MIDDLE 1
636  #define PYRAMID_WALL_BP_POSITION_LOW 2
637 
638 /* Tuxie */
639  /* Walking sounds */
640  #define PENGUIN_WALK_BABY 0
641  #define PENGUIN_WALK_BIG 1
642 
643 /* Water bomb */
644  /* oAction */
645  #define WATER_BOMB_ACT_SHOT_FROM_CANNON 0
646  #define WATER_BOMB_ACT_INIT 1
647  #define WATER_BOMB_ACT_DROP 2
648  #define WATER_BOMB_ACT_EXPLODE 3
649 
650 /* TTC rotating solid */
651  /* oBehParams2ndByte */
652  #define TTC_ROTATING_SOLID_BP_CUBE 0
653  #define TTC_ROTATING_SOLID_BP_TRIANGULAR_PRISM 1
654 
655 /* TTC moving bar */
656  /* oAction */
657  #define TTC_MOVING_BAR_ACT_WAIT 0
658  #define TTC_MOVING_BAR_ACT_PULL_BACK 1
659  #define TTC_MOVING_BAR_ACT_EXTEND 2
660  #define TTC_MOVING_BAR_ACT_RETRACT 3
661 
662 /* TTC cog */
663  /* oBehParams2ndByte */
664  #define TTC_COG_BP_SHAPE_MASK 0x00000002
665  #define TTC_COG_BP_SHAPE_HEXAGON (0 << 1)
666  #define TTC_COG_BP_SHAPE_TRIANGLE (1 << 1)
667  #define TTC_COG_BP_DIR_MASK 0x00000001
668  #define TTC_COG_BP_DIR_CCW (0 << 0) // TODO: Check these
669  #define TTC_COG_BP_DIR_CW (1 << 0)
670 
671 /* TTC 2D Rotator */
672  /* oBehParams2ndByte */
673  #define TTC_2D_ROTATOR_BP_HAND 0
674  #define TTC_2D_ROTATOR_BP_2D_COG 1
675 
676 /* Activated Back-and-Forth Platform */
677  /* ((u16)(o->oBehParams >> 16) & 0x0300) >> 8 aka platform type */
678  #define ACTIVATED_BF_PLAT_TYPE_BITS_ARROW_PLAT 0
679  #define ACTIVATED_BF_PLAT_TYPE_BITFS_MESH_PLAT 1
680  #define ACTIVATED_BF_PLAT_TYPE_BITFS_ELEVATOR 2
681 
682 /* Dorrie */
683  /* oAction */
684  #define DORRIE_ACT_MOVE 0
685  #define DORRIE_ACT_LOWER_HEAD 1
686  #define DORRIE_ACT_RAISE_HEAD 2
687 
688 /* Mad piano */
689  /* oAction */
690  #define MAD_PIANO_ACT_WAIT 0
691  #define MAD_PIANO_ACT_ATTACK 1
692 
693 /* Fire piranha plant */
694  /* oAction */
695  #define FIRE_PIRANHA_PLANT_ACT_HIDE 0
696  #define FIRE_PIRANHA_PLANT_ACT_GROW 1
697 
698 /* Fire spitter */
699  /* oAction */
700  #define FIRE_SPITTER_ACT_IDLE 0
701  #define FIRE_SPITTER_ACT_SPIT_FIRE 1
702 
703 /* Eyerok boss */
704  /* oAction */
705  #define EYEROK_BOSS_ACT_SLEEP 0
706  #define EYEROK_BOSS_ACT_WAKE_UP 1
707  #define EYEROK_BOSS_ACT_SHOW_INTRO_TEXT 2
708  #define EYEROK_BOSS_ACT_FIGHT 3
709  #define EYEROK_BOSS_ACT_DIE 4
710 
711 /* Eyerok hand */
712  /* oAction */
713  #define EYEROK_HAND_ACT_SLEEP 0
714  #define EYEROK_HAND_ACT_IDLE 1
715  #define EYEROK_HAND_ACT_OPEN 2
716  #define EYEROK_HAND_ACT_SHOW_EYE 3
717  #define EYEROK_HAND_ACT_CLOSE 4
718  #define EYEROK_HAND_ACT_RETREAT 5
719  #define EYEROK_HAND_ACT_TARGET_MARIO 6
720  #define EYEROK_HAND_ACT_SMASH 7
721  #define EYEROK_HAND_ACT_FIST_PUSH 8
722  #define EYEROK_HAND_ACT_FIST_SWEEP 9
723  #define EYEROK_HAND_ACT_BEGIN_DOUBLE_POUND 10 // raising for double smash
724  #define EYEROK_HAND_ACT_DOUBLE_POUND 11 // double smashing
725  #define EYEROK_HAND_ACT_ATTACKED 12
726  #define EYEROK_HAND_ACT_RECOVER 13
727  #define EYEROK_HAND_ACT_BECOME_ACTIVE 14
728  #define EYEROK_HAND_ACT_DIE 15
729 
730 /* Klepto */
731  /* oAction */
732  #define KLEPTO_ACT_CIRCLE_TARGET_HOLDING 0
733  #define KLEPTO_ACT_APPROACH_TARGET_HOLDING 1
734  #define KLEPTO_ACT_WAIT_FOR_MARIO 2
735  #define KLEPTO_ACT_TURN_TOWARD_MARIO 3
736  #define KLEPTO_ACT_DIVE_AT_MARIO 4
737  #define KLEPTO_ACT_RESET_POSITION 5
738  #define KLEPTO_ACT_STRUCK_BY_MARIO 6
739  #define KLEPTO_ACT_RETREAT 7
740 
741  /* oAnimState */
742  #define KLEPTO_ANIM_STATE_HOLDING_NOTHING 0
743  #define KLEPTO_ANIM_STATE_HOLDING_CAP 1
744  #define KLEPTO_ANIM_STATE_HOLDING_STAR 2
745 
746 /* Bird */
747  /* oAction */
748  #define BIRD_ACT_INACTIVE 0
749  #define BIRD_ACT_FLY 1
750 
751  /* oBehParams2ndByte */
752  #define BIRD_BP_SPAWNED 0
753  #define BIRD_BP_SPAWNER 1
754 
755 /* Racing penguin */
756  /* oAction */
757  #define RACING_PENGUIN_ACT_WAIT_FOR_MARIO 0
758  #define RACING_PENGUIN_ACT_SHOW_INIT_TEXT 1
759  #define RACING_PENGUIN_ACT_PREPARE_FOR_RACE 2
760  #define RACING_PENGUIN_ACT_RACE 3
761  #define RACING_PENGUIN_ACT_FINISH_RACE 4
762  #define RACING_PENGUIN_ACT_SHOW_FINAL_TEXT 5
763 
764 /* Skeeter */
765  /* oAction */
766  #define SKEETER_ACT_IDLE 0
767  #define SKEETER_ACT_LUNGE 1
768  #define SKEETER_ACT_WALK 2
769 
770 /* Triplet butterfly */
771  /* oAction */
772  #define TRIPLET_BUTTERFLY_ACT_INIT 0
773  #define TRIPLET_BUTTERFLY_ACT_WANDER 1
774  #define TRIPLET_BUTTERFLY_ACT_ACTIVATE 2
775  #define TRIPLET_BUTTERFLY_ACT_EXPLODE 3
776 
777  /* oBehParams2ndByte */
778  #define TRIPLET_BUTTERFLY_BP_BUTTERFLY_NUM 0x00000003
779  #define TRIPLET_BUTTERFLY_BP_NO_BOMBS 0x00000004
780 
781  /* oTripletButterflyType */
782  #define TRIPLET_BUTTERFLY_TYPE_NORMAL -1
783  #define TRIPLET_BUTTERFLY_TYPE_EXPLODES 0
784  #define TRIPLET_BUTTERFLY_TYPE_SPAWN_1UP 1
785 
786 /* Water level diamond */
787  /* oAction */
788  // Loading
789  #define WATER_LEVEL_DIAMOND_ACT_INIT 0
790  // Idling when Mario isn't inside its hitbox
791  #define WATER_LEVEL_DIAMOND_ACT_IDLE 1
792  // While the water level is changing
793  #define WATER_LEVEL_DIAMOND_ACT_CHANGE_WATER_LEVEL 2
794  // After the water level has changed but Mario hasn't left its hitbox yet
795  #define WATER_LEVEL_DIAMOND_ACT_IDLE_SPINNING 3
796 
797 /* Mips */
798  /* oAction */
799  #define MIPS_ACT_WAIT_FOR_NEARBY_MARIO 0
800  #define MIPS_ACT_FOLLOW_PATH 1
801  #define MIPS_ACT_WAIT_FOR_ANIMATION_DONE 2
802  #define MIPS_ACT_FALL_DOWN 3
803  #define MIPS_ACT_IDLE 4
804 
805  /* oMipsStarStatus */
806  #define MIPS_STAR_STATUS_HAVENT_SPAWNED_STAR 0
807  #define MIPS_STAR_STATUS_SHOULD_SPAWN_STAR 1
808  #define MIPS_STAR_STATUS_ALREADY_SPAWNED_STAR 2
809 
810 /* Falling Pillar */
811  /* oAction */
812  #define FALLING_PILLAR_ACT_IDLE 0
813  #define FALLING_PILLAR_ACT_TURNING 1
814  #define FALLING_PILLAR_ACT_FALLING 2
815 
816 /* Bowser Puzzle */
817  /* oAction */
818  #define BOWSER_PUZZLE_ACT_SPAWN_PIECES 0
819  #define BOWSER_PUZZLE_ACT_WAIT_FOR_COMPLETE 1
820  #define BOWSER_PUZZLE_ACT_DONE 2
821 
822 #endif