sm64/include/object_constants.h

1310 lines
45 KiB
C

#ifndef OBJECT_CONSTANTS_H
#define OBJECT_CONSTANTS_H
// This file contains macros that provide descriptive names for
// field-specific and object-specific constants, e.g. actions.
/* activeFlags */
#define ACTIVE_FLAG_DEACTIVATED 0 // 0x0000
#define ACTIVE_FLAG_ACTIVE (1 << 0) // 0x0001
#define ACTIVE_FLAG_FAR_AWAY (1 << 1) // 0x0002
#define ACTIVE_FLAG_UNK2 (1 << 2) // 0x0004
#define ACTIVE_FLAG_IN_DIFFERENT_ROOM (1 << 3) // 0x0008
#define ACTIVE_FLAG_UNIMPORTANT (1 << 4) // 0x0010
#define ACTIVE_FLAG_INITIATED_TIME_STOP (1 << 5) // 0x0020
#define ACTIVE_FLAG_MOVE_THROUGH_GRATE (1 << 6) // 0x0040
#define ACTIVE_FLAG_DITHERED_ALPHA (1 << 7) // 0x0080
#define ACTIVE_FLAG_UNK8 (1 << 8) // 0x0100
#define ACTIVE_FLAG_UNK9 (1 << 9) // 0x0200
#define ACTIVE_FLAG_UNK10 (1 << 10) // 0x0400
/* respawnInfoType */
#define RESPAWN_INFO_TYPE_NULL 0
#define RESPAWN_INFO_TYPE_32 1
#define RESPAWN_INFO_TYPE_16 2
/* respawnInfo */
#define RESPAWN_INFO_DONT_RESPAWN 0xFF
/* oFlags */
#define OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE (1 << 0) // 0x00000001
#define OBJ_FLAG_MOVE_XZ_USING_FVEL (1 << 1) // 0x00000002
#define OBJ_FLAG_MOVE_Y_WITH_TERMINAL_VEL (1 << 2) // 0x00000004
#define OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW (1 << 3) // 0x00000008
#define OBJ_FLAG_SET_FACE_ANGLE_TO_MOVE_ANGLE (1 << 4) // 0x00000010
#define OBJ_FLAG_0020 (1 << 5) // 0x00000020
#define OBJ_FLAG_COMPUTE_DIST_TO_MARIO (1 << 6) // 0x00000040
#define OBJ_FLAG_ACTIVE_FROM_AFAR (1 << 7) // 0x00000080
#define OBJ_FLAG_0100 (1 << 8) // 0x00000100
#define OBJ_FLAG_TRANSFORM_RELATIVE_TO_PARENT (1 << 9) // 0x00000200
#define OBJ_FLAG_HOLDABLE (1 << 10) // 0x00000400
#define OBJ_FLAG_SET_THROW_MATRIX_FROM_TRANSFORM (1 << 11) // 0x00000800
#define OBJ_FLAG_1000 (1 << 12) // 0x00001000
#define OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO (1 << 13) // 0x00002000
#define OBJ_FLAG_PERSISTENT_RESPAWN (1 << 14) // 0x00004000
#define OBJ_FLAG_8000 (1 << 15) // 0x00008000
#define OBJ_FLAG_30 (1 << 30) // 0x40000000
/* oHeldState */
#define HELD_FREE 0
#define HELD_HELD 1
#define HELD_THROWN 2
#define HELD_DROPPED 3
/* oDialogState */
#define DIALOG_STATUS_ENABLE_TIME_STOP 0
#define DIALOG_STATUS_INTERRUPT 1
#define DIALOG_STATUS_START_DIALOG 2
#define DIALOG_STATUS_STOP_DIALOG 3
#define DIALOG_STATUS_DISABLE_TIME_STOP 4
#define DIALOG_FLAG_NONE 0
#define DIALOG_FLAG_TURN_TO_MARIO (1 << 0) // 0x01 // cutscene only
#define DIALOG_FLAG_TEXT_DEFAULT (1 << 1) // 0x02
#define DIALOG_FLAG_TEXT_RESPONSE (1 << 2) // 0x04 // non-cutscene only
#define DIALOG_FLAG_UNK_CAPSWITCH (1 << 3) // 0x08 // not defined
#define DIALOG_FLAG_TIME_STOP_ENABLED (1 << 4) // 0x10
/* oMoveFlags */
#define OBJ_MOVE_LANDED (1 << 0) // 0x0001
#define OBJ_MOVE_ON_GROUND (1 << 1) // 0x0002 // mutually exclusive to OBJ_MOVE_LANDED
#define OBJ_MOVE_LEFT_GROUND (1 << 2) // 0x0004
#define OBJ_MOVE_ENTERED_WATER (1 << 3) // 0x0008
#define OBJ_MOVE_AT_WATER_SURFACE (1 << 4) // 0x0010
#define OBJ_MOVE_UNDERWATER_OFF_GROUND (1 << 5) // 0x0020
#define OBJ_MOVE_UNDERWATER_ON_GROUND (1 << 6) // 0x0040
#define OBJ_MOVE_IN_AIR (1 << 7) // 0x0080
#define OBJ_MOVE_OUT_SCOPE (1 << 8) // 0x0100
#define OBJ_MOVE_HIT_WALL (1 << 9) // 0x0200
#define OBJ_MOVE_HIT_EDGE (1 << 10) // 0x0400
#define OBJ_MOVE_ABOVE_LAVA (1 << 11) // 0x0800
#define OBJ_MOVE_LEAVING_WATER (1 << 12) // 0x1000
#define OBJ_MOVE_BOUNCE (1 << 13) // 0x2000
#ifndef VERSION_JP
#define OBJ_MOVE_ABOVE_DEATH_BARRIER (1 << 14) // 0x4000
#endif
#define OBJ_MOVE_MASK_ON_GROUND (OBJ_MOVE_LANDED | OBJ_MOVE_ON_GROUND)
#define OBJ_MOVE_MASK_IN_WATER ( \
OBJ_MOVE_ENTERED_WATER | \
OBJ_MOVE_AT_WATER_SURFACE | \
OBJ_MOVE_UNDERWATER_OFF_GROUND | \
OBJ_MOVE_UNDERWATER_ON_GROUND)
/* oActiveParticleFlags */
#define ACTIVE_PARTICLE_DUST (1 << 0) // 0x00000001
#define ACTIVE_PARTICLE_UNUSED_1 (1 << 1) // 0x00000002
#define ACTIVE_PARTICLE_UNUSED_2 (1 << 2) // 0x00000004
#define ACTIVE_PARTICLE_SPARKLES (1 << 3) // 0x00000008
#define ACTIVE_PARTICLE_H_STAR (1 << 4) // 0x00000010
#define ACTIVE_PARTICLE_BUBBLE (1 << 5) // 0x00000020
#define ACTIVE_PARTICLE_WATER_SPLASH (1 << 6) // 0x00000040
#define ACTIVE_PARTICLE_IDLE_WATER_WAVE (1 << 7) // 0x00000080
#define ACTIVE_PARTICLE_SHALLOW_WATER_WAVE (1 << 8) // 0x00000100
#define ACTIVE_PARTICLE_PLUNGE_BUBBLE (1 << 9) // 0x00000200
#define ACTIVE_PARTICLE_WAVE_TRAIL (1 << 10) // 0x00000400
#define ACTIVE_PARTICLE_FIRE (1 << 11) // 0x00000800
#define ACTIVE_PARTICLE_SHALLOW_WATER_SPLASH (1 << 12) // 0x00001000
#define ACTIVE_PARTICLE_LEAF (1 << 13) // 0x00002000
#define ACTIVE_PARTICLE_DIRT (1 << 14) // 0x00004000
#define ACTIVE_PARTICLE_MIST_CIRCLE (1 << 15) // 0x00008000
#define ACTIVE_PARTICLE_SNOW (1 << 16) // 0x00010000
#define ACTIVE_PARTICLE_BREATH (1 << 17) // 0x00020000
#define ACTIVE_PARTICLE_V_STAR (1 << 18) // 0x00040000
#define ACTIVE_PARTICLE_TRIANGLE (1 << 19) // 0x00080000
/* oAction */
#define OBJ_ACT_LAVA_DEATH 100
#define OBJ_ACT_DEATH_PLANE_DEATH 101
#define OBJ_ACT_HORIZONTAL_KNOCKBACK 100
#define OBJ_ACT_VERTICAL_KNOCKBACK 101
#define OBJ_ACT_SQUISHED 102
/* Star Index */
#define STAR_INDEX_ACT_1 0
#define STAR_INDEX_ACT_2 1
#define STAR_INDEX_ACT_3 2
#define STAR_INDEX_ACT_4 3
#define STAR_INDEX_ACT_5 4
#define STAR_INDEX_ACT_6 5
#define STAR_INDEX_100_COINS 6
/* gTTCSpeedSetting */
#define TTC_SPEED_SLOW 0
#define TTC_SPEED_FAST 1
#define TTC_SPEED_RANDOM 2
#define TTC_SPEED_STOPPED 3
/* Bob-omb */
/* oBhvParams2ndByte */
#define BOBOMB_BP_STYPE_GENERIC 0
#define BOBOMB_BP_STYPE_STATIONARY 1
/* oAction */
#define BOBOMB_ACT_PATROL 0
#define BOBOMB_ACT_LAUNCHED 1
#define BOBOMB_ACT_CHASE_MARIO 2
#define BOBOMB_ACT_EXPLODE 3
#define BOBOMB_ACT_LAVA_DEATH 100
#define BOBOMB_ACT_DEATH_PLANE_DEATH 101
/* Coin Formation */
/* oAction */
#define COIN_FORMATION_ACT_SPAWN_COINS 0
#define COIN_FORMATION_ACT_IDLE 1
#define COIN_FORMATION_ACT_RESPAWN_COINS 2
/* oBhvParams2ndByte */
#define COIN_FORMATION_BP_FLAG_HORIZONTAL (0 << 0)
#define COIN_FORMATION_BP_FLAG_VERTICAL (1 << 0)
#define COIN_FORMATION_BP_FLAG_RING (1 << 1)
#define COIN_FORMATION_BP_FLAG_ARROW (1 << 2)
#define COIN_FORMATION_BP_FLAG_FLYING (1 << 4)
#define COIN_FORMATION_BP_FLAG_MASK (COIN_FORMATION_BP_FLAG_HORIZONTAL | \
COIN_FORMATION_BP_FLAG_VERTICAL | \
COIN_FORMATION_BP_FLAG_RING | \
COIN_FORMATION_BP_FLAG_ARROW)
#define COIN_FORMATION_BP_LINE_HORIZONTAL (COIN_FORMATION_BP_FLAG_HORIZONTAL)
#define COIN_FORMATION_BP_LINE_VERTICAL (COIN_FORMATION_BP_FLAG_VERTICAL)
#define COIN_FORMATION_BP_RING_HORIZONTAL (COIN_FORMATION_BP_FLAG_HORIZONTAL | COIN_FORMATION_BP_FLAG_RING)
#define COIN_FORMATION_BP_RING_VERTICAL (COIN_FORMATION_BP_FLAG_VERTICAL | COIN_FORMATION_BP_FLAG_RING)
#define COIN_FORMATION_BP_ARROW (COIN_FORMATION_BP_FLAG_ARROW)
/* Hidden Blue Coin */
/* oAction */
#define HIDDEN_BLUE_COIN_ACT_INACTIVE 0
#define HIDDEN_BLUE_COIN_ACT_WAITING 1
#define HIDDEN_BLUE_COIN_ACT_ACTIVE 2
/* Blue Coin Switch */
/* oAction */
#define BLUE_COIN_SWITCH_ACT_IDLE 0
#define BLUE_COIN_SWITCH_ACT_RECEDING 1
#define BLUE_COIN_SWITCH_ACT_TICKING 2
/* Moving Blue Coin */
/* oAction */
#define MOV_BCOIN_ACT_STILL 0
#define MOV_BCOIN_ACT_MOVING 1
/* Moving Yellow Coin */
/* oAction */
#define MOV_YCOIN_ACT_IDLE 0
#define MOV_YCOIN_ACT_BLINKING 1
#define MOV_YCOIN_ACT_LAVA_DEATH 100
#define MOV_YCOIN_ACT_DEATH_PLANE_DEATH 101
/* Bob-omb Buddy */
/* oBhvParams2ndByte */
#define BOBOMB_BUDDY_BP_STYPE_GENERIC 0
#define BOBOMB_BUDDY_BP_STYPE_BOB_GRASS_KBB 1
#define BOBOMB_BUDDY_BP_STYPE_BOB_CANNON_KBB 2
#define BOBOMB_BUDDY_BP_STYPE_BOB_GRASS 3
/* oAction */
#define BOBOMB_BUDDY_ACT_IDLE 0
#define BOBOMB_BUDDY_ACT_TURN_TO_TALK 2
#define BOBOMB_BUDDY_ACT_TALK 3
/* oBobombBuddyRole */
#define BOBOMB_BUDDY_ROLE_ADVICE 0
#define BOBOMB_BUDDY_ROLE_CANNON 1
/* oBobombBuddyCannonStatus */
#define BOBOMB_BUDDY_CANNON_UNOPENED 0
#define BOBOMB_BUDDY_CANNON_OPENING 1
#define BOBOMB_BUDDY_CANNON_OPENED 2
#define BOBOMB_BUDDY_CANNON_STOP_TALKING 3
/* oBobombBuddyHasTalkedToMario */
#define BOBOMB_BUDDY_HAS_NOT_TALKED 0
#define BOBOMB_BUDDY_HAS_TALKED 2
/* Bowser */
/* Tail oAction */
#define BOWSER_ACT_TAIL_DEFAULT 0
#define BOWSER_ACT_TAIL_THROWN 1
#define BOWSER_ACT_TAIL_TOUCHED_MARIO 2
/* oAction */
#define BOWSER_ACT_DEFAULT 0
#define BOWSER_ACT_THROWN 1
#define BOWSER_ACT_JUMP_ONTO_STAGE 2
#define BOWSER_ACT_DANCE 3
#define BOWSER_ACT_DEAD 4
#define BOWSER_ACT_WAIT 5
#define BOWSER_ACT_INTRO_WALK 6
#define BOWSER_ACT_CHARGE_MARIO 7
#define BOWSER_ACT_SPIT_FIRE_INTO_SKY 8
#define BOWSER_ACT_SPIT_FIRE_ONTO_FLOOR 9
#define BOWSER_ACT_HIT_EDGE 10
#define BOWSER_ACT_TURN_FROM_EDGE 11
#define BOWSER_ACT_HIT_MINE 12
#define BOWSER_ACT_BIG_JUMP 13
#define BOWSER_ACT_WALK_TO_MARIO 14
#define BOWSER_ACT_BREATH_FIRE 15
#define BOWSER_ACT_TELEPORT 16
#define BOWSER_ACT_QUICK_JUMP 17
#define BOWSER_ACT_UNUSED_SLOW_WALK 18
#define BOWSER_ACT_TILT_LAVA_PLATFORM 19
/* Animations */
#define BOWSER_ANIM_STAND_UP 0
#define BOWSER_ANIM_STAND_UP_UNUSED 1 // slightly different
#define BOWSER_ANIM_SHAKING 2
#define BOWSER_ANIM_GRABBED 3
#define BOWSER_ANIM_BROKEN 4 // broken animation
#define BOWSER_ANIM_FALL_DOWN 5 // unused
#define BOWSER_ANIM_BREATH 6
#define BOWSER_ANIM_JUMP 7 // unused, short jump, replaced by start/stop
#define BOWSER_ANIM_JUMP_STOP 8
#define BOWSER_ANIM_JUMP_START 9
#define BOWSER_ANIM_DANCE 10
#define BOWSER_ANIM_BREATH_UP 11
#define BOWSER_ANIM_IDLE 12
#define BOWSER_ANIM_SLOW_GAIT 13
#define BOWSER_ANIM_LOOK_DOWN_STOP_WALK 14
#define BOWSER_ANIM_LOOK_UP_START_WALK 15
#define BOWSER_ANIM_FLIP_DOWN 16
#define BOWSER_ANIM_LAY_DOWN 17
#define BOWSER_ANIM_RUN_START 18
#define BOWSER_ANIM_RUN 19
#define BOWSER_ANIM_RUN_STOP 20
#define BOWSER_ANIM_RUN_SLIP 21
#define BOWSER_ANIM_BREATH_QUICK 22
#define BOWSER_ANIM_EDGE_MOVE 23
#define BOWSER_ANIM_EDGE_STOP 24
#define BOWSER_ANIM_FLIP 25
#define BOWSER_ANIM_STAND_UP_FROM_FLIP 26
/* oBhvParams2ndByte */
#define BOWSER_BP_BITDW 0
#define BOWSER_BP_BITFS 1
#define BOWSER_BP_BITS 2
/* oBowserCamAct */
#define BOWSER_CAM_ACT_IDLE 0
#define BOWSER_CAM_ACT_WALK 1
#define BOWSER_CAM_ACT_END 2
/* oBowserStatus */
#define BOWSER_STATUS_ANGLE_MARIO (1 << 1) // 0x00000002
#define BOWSER_STATUS_ANGLE_CENTER (1 << 2) // 0x00000004
#define BOWSER_STATUS_DIST_MARIO (1 << 3) // 0x00000008
#define BOWSER_STATUS_DIST_CENTER (1 << 4) // 0x00000010
#define BOWSER_STATUS_BIG_JUMP (1 << 16) // 0x00010000
#define BOWSER_STATUS_FIRE_SKY (1 << 17) // 0x00020000
/* oBowserGrabbedStatus */
#define BOWSER_GRAB_STATUS_NONE 0
#define BOWSER_GRAB_STATUS_GRABBED 1
#define BOWSER_GRAB_STATUS_HOLDING 2
/* oSubAction */
#define BOWSER_SUB_ACT_DEAD_FLY_BACK 0
#define BOWSER_SUB_ACT_DEAD_BOUNCE 1
#define BOWSER_SUB_ACT_DEAD_WAIT 2
#define BOWSER_SUB_ACT_DEAD_DEFAULT_END 3
#define BOWSER_SUB_ACT_DEAD_DEFAULT_END_OVER 4
#define BOWSER_SUB_ACT_DEAD_FINAL_END 10
#define BOWSER_SUB_ACT_DEAD_FINAL_END_OVER 11
#define BOWSER_SUB_ACT_CHARGE_START 0
#define BOWSER_SUB_ACT_CHARGE_RUN 1
#define BOWSER_SUB_ACT_CHARGE_END 2
#define BOWSER_SUB_ACT_CHARGE_SLIP 3
#define BOWSER_SUB_ACT_TELEPORT_START 0
#define BOWSER_SUB_ACT_TELEPORT_MOVE 1
#define BOWSER_SUB_ACT_TELEPORT_STOP 2
#define BOWSER_SUB_ACT_HIT_MINE_START 0
#define BOWSER_SUB_ACT_HIT_MINE_FALL 1
#define BOWSER_SUB_ACT_HIT_MINE_STOP 2
#define BOWSER_SUB_ACT_JUMP_ON_STAGE_IDLE 0
#define BOWSER_SUB_ACT_JUMP_ON_STAGE_START 1
#define BOWSER_SUB_ACT_JUMP_ON_STAGE_LAND 2
#define BOWSER_SUB_ACT_JUMP_ON_STAGE_STOP 3
/* Bowser BitS Platform */
/* oAction */
#define BOWSER_BITS_PLAT_ACT_START 0
#define BOWSER_BITS_PLAT_ACT_CHECK 1
#define BOWSER_BITS_PLAT_ACT_FALL 2
/* Fish Spawer */
/* oAction */
#define FISH_SPAWNER_ACT_SPAWN 0
#define FISH_SPAWNER_ACT_IDLE 1
#define FISH_SPAWNER_ACT_RESPAWN 2
/* oBhvParams2ndByte */
#define FISH_SPAWNER_BP_MANY_BLUE 0
#define FISH_SPAWNER_BP_FEW_BLUE 1
#define FISH_SPAWNER_BP_MANY_CYAN 2
#define FISH_SPAWNER_BP_FEW_CYAN 3
/* Fish */
/* oAction */
#define FISH_ACT_INIT 0
#define FISH_ACT_ROAM 1
#define FISH_ACT_FLEE 2
/* Blue Fish */
/* oAction */
#define BLUE_FISH_ACT_DIVE 0
#define BLUE_FISH_ACT_TURN 1
#define BLUE_FISH_ACT_ASCEND 2
#define BLUE_FISH_ACT_TURN_BACK 3
/* oAction: bhv_blue_fish_spawn_loop */
#define BLUE_FISH_ACT_SPAWN 0
#define BLUE_FISH_ACT_ROOM 1
#define BLUE_FISH_ACT_DUPLICATE 2
/* Cannon Trap Door */
/* oAction */
#define CANNON_TRAP_DOOR_ACT_CLOSED 0
#define CANNON_TRAP_DOOR_ACT_CAM_ZOOM 1
#define CANNON_TRAP_DOOR_ACT_OPENING 2
#define CANNON_TRAP_DOOR_ACT_OPEN 3
/* Homing Amp */
/* oAction */
#define HOMING_AMP_ACT_INACTIVE 0
#define HOMING_AMP_ACT_APPEAR 1
#define HOMING_AMP_ACT_CHASE 2
#define HOMING_AMP_ACT_GIVE_UP 3
#define HOMING_AMP_ACT_ATTACK_COOLDOWN 4
/* Amp */
/* oBhvParams2ndByte */
#define AMP_BP_ROT_RADIUS_200 0
#define AMP_BP_ROT_RADIUS_300 1
#define AMP_BP_ROT_RADIUS_400 2
#define AMP_BP_ROT_RADIUS_0 3
/* oAction */
#define AMP_ACT_IDLE 2
#define AMP_ACT_ATTACK_COOLDOWN 4
/* Butterfly */
/* oAction */
#define BUTTERFLY_ACT_RESTING 0
#define BUTTERFLY_ACT_FOLLOW_MARIO 1
#define BUTTERFLY_ACT_RETURN_HOME 2
/* Hoot */
/* oHootAvailability */
#define HOOT_AVAIL_ASLEEP_IN_TREE 0
#define HOOT_AVAIL_WANTS_TO_TALK 1
#define HOOT_AVAIL_READY_TO_FLY 2
/* oAction */
#define HOOT_ACT_ASCENT 0
#define HOOT_ACT_CARRY 1
#define HOOT_ACT_TIRED 2
/* Bully (All variants) */
/* oBhvParams2ndByte */
#define BULLY_BP_SIZE_SMALL 0
#define BULLY_BP_SIZE_BIG 1
/* oAction */
#define BULLY_ACT_PATROL 0
#define BULLY_ACT_CHASE_MARIO 1
#define BULLY_ACT_KNOCKBACK 2
#define BULLY_ACT_BACK_UP 3
#define BULLY_ACT_INACTIVE 4
#define BULLY_ACT_ACTIVATE_AND_FALL 5
#define BULLY_ACT_LAVA_DEATH 100
#define BULLY_ACT_DEATH_PLANE_DEATH 101
/* oBullySubtype */
#define BULLY_STYPE_GENERIC 0
#define BULLY_STYPE_MINION 1
#define BULLY_STYPE_CHILL 16
/* Water Ring (All variants) */
/* oAction */
#define WATER_RING_ACT_NOT_COLLECTED 0
#define WATER_RING_ACT_COLLECTED 1
/* Jet Stream Water Ring Spawner */
/* oAction */
#define JS_RING_SPAWNER_ACT_ACTIVE 0
#define JS_RING_SPAWNER_ACT_INACTIVE 1
/* Celebration Star */
/* oAction */
#define CELEB_STAR_ACT_SPIN_AROUND_MARIO 0
#define CELEB_STAR_ACT_FACE_CAMERA 1
/* LLL Drawbridge */
/* oAction */
#define LLL_DRAWBRIDGE_ACT_LOWER 0
#define LLL_DRAWBRIDGE_ACT_RAISE 1
/* Bomp (Both variants) */
/* oAction */
#define BOMP_ACT_WAIT 0
#define BOMP_ACT_POKE_OUT 1
#define BOMP_ACT_EXTEND 2
#define BOMP_ACT_RETRACT 3
/* WF Sliding Brick Platform */
/* oBhvParams2ndByte */
#define WF_SLID_BRICK_PTFM_BP_MOV_VEL_10 1
#define WF_SLID_BRICK_PTFM_BP_MOV_VEL_15 2
#define WF_SLID_BRICK_PTFM_BP_MOV_VEL_20 3
/* oAction */
#define WF_SLID_BRICK_PTFM_ACT_WAIT 0
#define WF_SLID_BRICK_PTFM_ACT_EXTEND 1
#define WF_SLID_BRICK_PTFM_ACT_RETRACT 2
/* Fake Moneybag Coin */
/* oAction */
#define FAKE_MONEYBAG_COIN_ACT_IDLE 0
#define FAKE_MONEYBAG_COIN_ACT_TRANSFORM 1
/* Moneybag */
/* oAction */
#define MONEYBAG_ACT_APPEAR 0
#define MONEYBAG_ACT_UNUSED_APPEAR 1
#define MONEYBAG_ACT_MOVE_AROUND 2
#define MONEYBAG_ACT_RETURN_HOME 3
#define MONEYBAG_ACT_DISAPPEAR 4
#define MONEYBAG_ACT_DEATH 5
/* oMoneybagJumpState */
#define MONEYBAG_JUMP_LANDING 0
#define MONEYBAG_JUMP_PREPARE 1
#define MONEYBAG_JUMP_JUMP 2
#define MONEYBAG_JUMP_JUMP_AND_BOUNCE 3
#define MONEYBAG_JUMP_WALK_AROUND 4
#define MONEYBAG_JUMP_WALK_HOME 5
/* Bowling Ball */
/* oAction */
#define BBALL_ACT_INITIALIZE 0
#define BBALL_ACT_ROLL 1
/* Bowling Ball + Bowling Ball Spawner (All variants) */
/* oBhvParams2ndByte */
#define BBALL_BP_STYPE_BOB_UPPER 0
#define BBALL_BP_STYPE_TTM 1
#define BBALL_BP_STYPE_BOB_LOWER 2
#define BBALL_BP_STYPE_THI_LARGE 3
#define BBALL_BP_STYPE_THI_SMALL 4
/* Bowling Ball (Free) */
/* oAction */
#define FREE_BBALL_ACT_IDLE 0
#define FREE_BBALL_ACT_ROLL 1
#define FREE_BBALL_ACT_RESET 2
/* Beta Chest Lid */
/* oAction */
#define BETA_CHEST_ACT_IDLE_CLOSED 0
#define BETA_CHEST_ACT_OPENING 1
#define BETA_CHEST_ACT_IDLE_OPEN 2
/* BBH Tilting Trap Platform */
/* oAction */
// Unused in original Japanese version
#define BBH_TILTING_TRAP_PLATFORM_ACT_MARIO_ON 0
#define BBH_TILTING_TRAP_PLATFORM_ACT_MARIO_OFF 1
/* Boo */
/* oBooDeathStatus */
#define BOO_DEATH_STATUS_ALIVE 0
#define BOO_DEATH_STATUS_DYING 1
#define BOO_DEATH_STATUS_DEAD 2
/* attackStatus */
#define BOO_NOT_ATTACKED 0
#define BOO_ATTACKED 1
#define BOO_BOUNCED_ON -1
/* oBhvParams2ndByte */
#define BOO_BP_GHOST_HUNT 0
#define BOO_BP_GENERIC 1
#define BOO_BP_MERRY_GO_ROUND 2
/* Big Boo */
/* oBhvParams2ndByte */
#define BIG_BOO_BP_GHOST_HUNT 0
#define BIG_BOO_BP_MERRY_GO_ROUND 1
#define BIG_BOO_BP_BALCONY 2
/* Beta Boo Key */
/* oAction */
#define BETA_BOO_KEY_ACT_IN_BOO 0
#define BETA_BOO_KEY_ACT_DROPPING 1
#define BETA_BOO_KEY_ACT_DROPPED 2
/* Boo Cage */
/* oAction */
#define BOO_CAGE_ACT_IN_BOO 0
#define BOO_CAGE_ACT_FALLING 1
#define BOO_CAGE_ACT_ON_GROUND 2
#define BOO_CAGE_ACT_MARIO_JUMPING_IN 3
#define BOO_CAGE_ACT_USELESS 4
/* BBH Haunted Bookshelf */
/* oAction */
#define HAUNTED_BOOKSHELF_ACT_IDLE 0
#define HAUNTED_BOOKSHELF_ACT_RECEDE 1
/* BBH Merry-Go-Round */
/* gMarioCurrentRoom */
#define BBH_NEAR_MERRY_GO_ROUND_ROOM 10
#define BBH_DYNAMIC_SURFACE_ROOM 0
#define BBH_OUTSIDE_ROOM 13
/* Coffin Spawner */
/* oAction */
#define COFFIN_SPAWNER_ACT_COFFINS_UNLOADED 0
/* Coffin */
/* oAction */
#define COFFIN_ACT_IDLE 0
#define COFFIN_ACT_STAND_UP 1
/* oBhvParams2ndByte */
#define COFFIN_BP_STATIC 0
/* WDW Arrow Lift */
/* oAction */
#define ARROW_LIFT_ACT_IDLE 0
#define ARROW_LIFT_ACT_MOVING_AWAY 1
#define ARROW_LIFT_ACT_MOVING_BACK 2
/* status */
#define ARROW_LIFT_NOT_DONE_MOVING 0
#define ARROW_LIFT_DONE_MOVING 1
/* Yoshi */
/* oAction */
#define YOSHI_ACT_IDLE 0
#define YOSHI_ACT_WALK 1
#define YOSHI_ACT_TALK 2
#define YOSHI_ACT_WALK_JUMP_OFF_ROOF 3
#define YOSHI_ACT_FINISH_JUMPING_AND_DESPAWN 4
#define YOSHI_ACT_GIVE_PRESENT 5
#define YOSHI_ACT_CREDITS 10
/* Koopa */
/* oAction */
#define KOOPA_UNSHELLED_ACT_RUN 0
#define KOOPA_UNSHELLED_ACT_DIVE 1
#define KOOPA_UNSHELLED_ACT_LYING 2
#define KOOPA_UNSHELLED_ACT_UNUSED3 3
#define KOOPA_SHELLED_ACT_STOPPED 0
#define KOOPA_SHELLED_ACT_WALK 1
#define KOOPA_SHELLED_ACT_RUN_FROM_MARIO 2
#define KOOPA_SHELLED_ACT_LYING 3
#define KOOPA_SHELLED_ACT_DIE 4
#define KOOPA_THE_QUICK_ACT_WAIT_BEFORE_RACE 0
#define KOOPA_THE_QUICK_ACT_UNUSED1 1
#define KOOPA_THE_QUICK_ACT_SHOW_INIT_TEXT 2
#define KOOPA_THE_QUICK_ACT_RACE 3
#define KOOPA_THE_QUICK_ACT_DECELERATE 4
#define KOOPA_THE_QUICK_ACT_STOP 5
#define KOOPA_THE_QUICK_ACT_AFTER_RACE 6
/* oSubAction */
#define KOOPA_SHELLED_SUB_ACT_START_WALK 0
#define KOOPA_SHELLED_SUB_ACT_WALK 1
#define KOOPA_SHELLED_SUB_ACT_STOP_WALK 2
#define KOOPA_THE_QUICK_SUB_ACT_START_RUN 0
#define KOOPA_THE_QUICK_SUB_ACT_RUN 1
#define KOOPA_THE_QUICK_SUB_ACT_JUMP 2
/* oKoopaTheQuickRaceIndex */
#define KOOPA_THE_QUICK_BOB_INDEX 0
#define KOOPA_THE_QUICK_THI_INDEX 1
/* oBhvParams2ndByte */
#define KOOPA_BP_UNSHELLED 0
#define KOOPA_BP_NORMAL 1
#define KOOPA_BP_KOOPA_THE_QUICK_BASE 2
#define KOOPA_BP_KOOPA_THE_QUICK_BOB (KOOPA_BP_KOOPA_THE_QUICK_BASE + KOOPA_THE_QUICK_BOB_INDEX)
#define KOOPA_BP_KOOPA_THE_QUICK_THI (KOOPA_BP_KOOPA_THE_QUICK_BASE + KOOPA_THE_QUICK_THI_INDEX)
#define KOOPA_BP_TINY 4
/* Pokey */
/* oAction */
#define POKEY_ACT_UNINITIALIZED 0
#define POKEY_ACT_WANDER 1
#define POKEY_ACT_UNLOAD_PARTS 2
/* Swoop */
/* oAction */
#define SWOOP_ACT_IDLE 0
#define SWOOP_ACT_MOVE 1
/* Fly Guy */
/* oAction */
#define FLY_GUY_ACT_IDLE 0
#define FLY_GUY_ACT_APPROACH_MARIO 1
#define FLY_GUY_ACT_LUNGE 2
#define FLY_GUY_ACT_SHOOT_FIRE 3
/* oBhvParams2ndByte */
#define FLY_GUY_BP_GENERIC 0
#define FLY_GUY_BP_FIRE 1
/* Goomba */
/* oAction */
#define GOOMBA_ACT_WALK 0
#define GOOMBA_ACT_ATTACKED_MARIO 1
#define GOOMBA_ACT_JUMP 2
/* oBhvParams2ndByte */
#define GOOMBA_SIZE_REGULAR 0
#define GOOMBA_SIZE_HUGE 1
#define GOOMBA_SIZE_TINY 2
#define GOOMBA_BP_SIZE_MASK (GOOMBA_SIZE_REGULAR | GOOMBA_SIZE_HUGE | GOOMBA_SIZE_TINY)
#define GOOMBA_BP_TRIPLET_RESPAWN_FLAG_MASK (0x000000FF & ~GOOMBA_BP_SIZE_MASK)
/* Goomba Triplet Spawner */
/* oAction */
#define GOOMBA_TRIPLET_SPAWNER_ACT_UNLOADED 0
#define GOOMBA_TRIPLET_SPAWNER_ACT_LOADED 1
/* oBhvParams2ndByte */
#define GOOMBA_TRIPLET_SPAWNER_BP_EXTRA_GOOMBAS_MASK (0x000000FF & ~GOOMBA_BP_SIZE_MASK)
#define GOOMBA_TRIPLET_SPAWNER_BP_EXTRA_GOOMBAS(num) ((num) << 2)
/* Chain Chomp */
/* oAction */
#define CHAIN_CHOMP_ACT_UNINITIALIZED 0
#define CHAIN_CHOMP_ACT_MOVE 1
#define CHAIN_CHOMP_ACT_UNLOAD_CHAIN 2
/* oSubAction */
#define CHAIN_CHOMP_SUB_ACT_TURN 0
#define CHAIN_CHOMP_SUB_ACT_LUNGE 1
/* oChainChompReleaseStatus */
#define CHAIN_CHOMP_NOT_RELEASED 0
#define CHAIN_CHOMP_RELEASED_TRIGGER_CUTSCENE 1
#define CHAIN_CHOMP_RELEASED_LUNGE_AROUND 2
#define CHAIN_CHOMP_RELEASED_BREAK_GATE 3
#define CHAIN_CHOMP_RELEASED_JUMP_AWAY 4
#define CHAIN_CHOMP_RELEASED_END_CUTSCENE 5
/* Chain Chomp Chain Part */
/* oBhvParams2ndByte */
#define CHAIN_CHOMP_CHAIN_PART_BP_PIVOT 0
/* Wooden Post */
/* oBhvParams */
#define WOODEN_POST_BP_NO_COINS_MASK 0x0000FF00
/* Wiggler */
/* oAction */
#define WIGGLER_ACT_UNINITIALIZED 0
#define WIGGLER_ACT_WALK 1
#define WIGGLER_ACT_KNOCKBACK 2
#define WIGGLER_ACT_JUMPED_ON 3
#define WIGGLER_ACT_SHRINK 4
#define WIGGLER_ACT_FALL_THROUGH_FLOOR 5
/* oWigglerTextStatus */
#define WIGGLER_TEXT_STATUS_AWAIT_DIALOG 0
#define WIGGLER_TEXT_STATUS_SHOWING_DIALOG 1
#define WIGGLER_TEXT_STATUS_COMPLETED_DIALOG 2
/* Spiny */
/* oAction */
#define SPINY_ACT_WALK 0
#define SPINY_ACT_HELD_BY_LAKITU 1
#define SPINY_ACT_THROWN_BY_LAKITU 2
#define SPINY_ACT_ATTACKED_MARIO 3
/* Evil Lakitu */
/* oAction */
#define ENEMY_LAKITU_ACT_UNINITIALIZED 0
#define ENEMY_LAKITU_ACT_MAIN 1
/* oSubAction */
#define ENEMY_LAKITU_SUB_ACT_NO_SPINY 0
#define ENEMY_LAKITU_SUB_ACT_HOLD_SPINY 1
#define ENEMY_LAKITU_SUB_ACT_THROW_SPINY 2
/* Cloud */
/* oAction */
#define CLOUD_ACT_SPAWN_PARTS 0
#define CLOUD_ACT_MAIN 1
#define CLOUD_ACT_UNLOAD 2
#define CLOUD_ACT_FWOOSH_HIDDEN 3
/* oBhvParams2ndByte */
#define CLOUD_BP_FWOOSH 0
#define CLOUD_BP_LAKITU_CLOUD 1
/* Camera Lakitu */
/* oAction */
#define CAMERA_LAKITU_INTRO_ACT_TRIGGER_CUTSCENE 0
#define CAMERA_LAKITU_INTRO_ACT_SPAWN_CLOUD 1
#define CAMERA_LAKITU_INTRO_ACT_UNK2 2
/* oBhvParams2ndByte */
#define CAMERA_LAKITU_BP_FOLLOW_CAMERA 0
#define CAMERA_LAKITU_BP_INTRO 1
/* Manta Ray */
/* oAction */
#define MANTA_ACT_SPAWN_RINGS 0
#define MANTA_ACT_NO_RINGS 1
/* Monty Mole */
/* oAction */
#define MONTY_MOLE_ACT_SELECT_HOLE 0
#define MONTY_MOLE_ACT_RISE_FROM_HOLE 1
#define MONTY_MOLE_ACT_SPAWN_ROCK 2
#define MONTY_MOLE_ACT_BEGIN_JUMP_INTO_HOLE 3
#define MONTY_MOLE_ACT_THROW_ROCK 4
#define MONTY_MOLE_ACT_JUMP_INTO_HOLE 5
#define MONTY_MOLE_ACT_HIDE 6
#define MONTY_MOLE_ACT_JUMP_OUT_OF_HOLE 7
/* oBhvParams2ndByte */
#define MONTY_MOLE_BP_NO_ROCK 0
#define MONTY_MOLE_BP_GENERIC 1
/* Monty Mole Rock */
/* oAction */
#define MONTY_MOLE_ROCK_ACT_HELD 0
#define MONTY_MOLE_ROCK_ACT_MOVE 1
/* Ukiki */
/* oAction */
#define UKIKI_ACT_IDLE 0
#define UKIKI_ACT_RUN 1
#define UKIKI_ACT_TURN_TO_MARIO 2
#define UKIKI_ACT_JUMP 3
#define UKIKI_ACT_GO_TO_CAGE 4
#define UKIKI_ACT_WAIT_TO_RESPAWN 5
#define UKIKI_ACT_UNUSED_TURN 6
#define UKIKI_ACT_RETURN_HOME 7
/* oSubAction */
#define UKIKI_SUB_ACT_TAUNT_NONE 0
#define UKIKI_SUB_ACT_TAUNT_ITCH 1
#define UKIKI_SUB_ACT_TAUNT_SCREECH 2
#define UKIKI_SUB_ACT_TAUNT_JUMP_CLAP 3
#define UKIKI_SUB_ACT_TAUNT_HANDSTAND 4
#define UKIKI_SUB_ACT_CAGE_RUN_TO_CAGE 0
#define UKIKI_SUB_ACT_CAGE_WAIT_FOR_MARIO 1
#define UKIKI_SUB_ACT_CAGE_TALK_TO_MARIO 2
#define UKIKI_SUB_ACT_CAGE_TURN_TO_CAGE 3
#define UKIKI_SUB_ACT_CAGE_JUMP_TO_CAGE 4
#define UKIKI_SUB_ACT_CAGE_LAND_ON_CAGE 5
#define UKIKI_SUB_ACT_CAGE_SPIN_ON_CAGE 6
#define UKIKI_SUB_ACT_CAGE_DESPAWN 7
/* oUkikiTextState */
#define UKIKI_TEXT_DEFAULT 0
#define UKIKI_TEXT_CAGE_TEXTBOX 1
#define UKIKI_TEXT_GO_TO_CAGE 2
#define UKIKI_TEXT_STOLE_CAP 3
#define UKIKI_TEXT_HAS_CAP 4
#define UKIKI_TEXT_GAVE_CAP_BACK 5
#define UKIKI_TEXT_DO_NOT_LET_GO 6
#define UKIKI_TEXT_STEAL_CAP 7
/* oBhvParams2ndByte */
#define UKIKI_BP_CAGE 0
#define UKIKI_BP_CAP 1
/* Animations */
#define UKIKI_ANIM_RUN 0
#define UKIKI_ANIM_UNUSED_WALK 1
#define UKIKI_ANIM_UNUSED_APOSE 2
#define UKIKI_ANIM_UNUSED_DEATH 3
#define UKIKI_ANIM_SCREECH 4
#define UKIKI_ANIM_JUMP_CLAP 5
#define UKIKI_ANIM_UNUSED_HOP 6
#define UKIKI_ANIM_LAND 7
#define UKIKI_ANIM_JUMP 8
#define UKIKI_ANIM_ITCH 9
#define UKIKI_ANIM_HANDSTAND 10
#define UKIKI_ANIM_TURN 11
#define UKIKI_ANIM_HELD 12
/* oAnimState */
#define UKIKI_ANIM_STATE_DEFAULT 0
#define UKIKI_ANIM_STATE_EYE_CLOSED 1
#define UKIKI_ANIM_STATE_CAP_ON 2
/* oUkikiHasCap */
#define UKIKI_CAP_ON 1
/* Ukiki Cage Star */
/* oAction */
#define UKIKI_CAGE_STAR_ACT_IN_CAGE 0
#define UKIKI_CAGE_STAR_ACT_SPAWN_STAR 1
/* Ukiki Cage */
/* oAction */
#define UKIKI_CAGE_ACT_WAIT_FOR_UKIKI 0
#define UKIKI_CAGE_ACT_SPIN 1
#define UKIKI_CAGE_ACT_FALL 2
#define UKIKI_CAGE_ACT_HIDE 3
/* Piranha Plant */
/* oAction */
#define PIRANHA_PLANT_ACT_IDLE 0
#define PIRANHA_PLANT_ACT_SLEEPING 1
#define PIRANHA_PLANT_ACT_BITING 2
#define PIRANHA_PLANT_ACT_WOKEN_UP 3
#define PIRANHA_PLANT_ACT_STOPPED_BITING 4
#define PIRANHA_PLANT_ACT_ATTACKED 5
#define PIRANHA_PLANT_ACT_SHRINK_AND_DIE 6
#define PIRANHA_PLANT_ACT_WAIT_TO_RESPAWN 7
#define PIRANHA_PLANT_ACT_RESPAWN 8
/* oPiranhaPlantSleepMusicState */
#define PIRANHA_PLANT_SLEEP_MUSIC_PLAYING 0
/* Piranha Plant Bubble */
/* oAction */
#define PIRANHA_PLANT_BUBBLE_ACT_IDLE 0
#define PIRANHA_PLANT_BUBBLE_ACT_GROW_SHRINK_LOOP 1
#define PIRANHA_PLANT_BUBBLE_ACT_BURST 2
/* Platform on Track */
/* oAction */
#define PLATFORM_ON_TRACK_ACT_INIT 0
#define PLATFORM_ON_TRACK_ACT_WAIT_FOR_MARIO 1
#define PLATFORM_ON_TRACK_ACT_MOVE_ALONG_TRACK 2
#define PLATFORM_ON_TRACK_ACT_PAUSE_BRIEFLY 3
#define PLATFORM_ON_TRACK_ACT_FALL 4
/* oBhvParams >> 16 */
#define PLATFORM_ON_TRACK_BP_MASK_PATH 0x000F
#define PLATFORM_ON_TRACK_BP_MASK_TYPE 0x0070
#define PLATFORM_ON_TRACK_BP_RETURN_TO_START (1 << 8)
#define PLATFORM_ON_TRACK_BP_DONT_DISAPPEAR (1 << 9)
#define PLATFORM_ON_TRACK_BP_DONT_TURN_YAW (1 << 10)
#define PLATFORM_ON_TRACK_BP_DONT_TURN_ROLL (1 << 11)
#define PLATFORM_ON_TRACK_TYPE_CARPET 0
#define PLATFORM_ON_TRACK_TYPE_SKI_LIFT 1
#define PLATFORM_ON_TRACK_TYPE_CHECKERED 2
#define PLATFORM_ON_TRACK_TYPE_GRATE 3
/* Purple Switch */
/* oAction */
#define PURPLE_SWITCH_ACT_IDLE 0
#define PURPLE_SWITCH_ACT_PRESSED 1
#define PURPLE_SWITCH_ACT_TICKING 2
#define PURPLE_SWITCH_ACT_UNPRESSED 3
#define PURPLE_SWITCH_ACT_WAIT_FOR_MARIO_TO_GET_OFF 4
/* Pyramid Elevator */
/* oAction */
#define PYRAMID_ELEVATOR_ACT_IDLE 0
#define PYRAMID_ELEVATOR_ACT_START_MOVING 1
#define PYRAMID_ELEVATOR_ACT_CONSTANT_VELOCITY 2
#define PYRAMID_ELEVATOR_ACT_AT_BOTTOM 3
/* Pyramid Top */
/* oAction */
#define PYRAMID_TOP_ACT_CHECK_IF_SOLVED 0
#define PYRAMID_TOP_ACT_SPINNING 1
#define PYRAMID_TOP_ACT_EXPLODE 2
/* Pyramid Wall */
/* oAction */
#define PYRAMID_WALL_ACT_MOVING_DOWN 0
#define PYRAMID_WALL_ACT_MOVING_UP 1
/* oBhvParams2ndByte */
#define PYRAMID_WALL_BP_POSITION_HIGH 0
#define PYRAMID_WALL_BP_POSITION_MIDDLE 1
#define PYRAMID_WALL_BP_POSITION_LOW 2
/* Penguins (General) */
/* Walking sounds */
#define PENGUIN_WALK_BABY 0
#define PENGUIN_WALK_BIG 1
/* Animations */
#define PENGUIN_ANIM_WALK 0
#define PENGUIN_ANIM_IDLE 3
/* Racing Penguin */
/* oAction */
#define RACING_PENGUIN_ACT_WAIT_FOR_MARIO 0
#define RACING_PENGUIN_ACT_SHOW_INIT_TEXT 1
#define RACING_PENGUIN_ACT_PREPARE_FOR_RACE 2
#define RACING_PENGUIN_ACT_RACE 3
#define RACING_PENGUIN_ACT_FINISH_RACE 4
#define RACING_PENGUIN_ACT_SHOW_FINAL_TEXT 5
/* oBhvParams2ndByte */
#define RACING_PENGUIN_BP_THIN 0
#define RACING_PENGUIN_BP_FAT 1
/* SL Walking Penguin */
/* oAction */
#define SL_WALKING_PENGUIN_ACT_MOVING_FORWARDS 0
#define SL_WALKING_PENGUIN_ACT_TURNING_BACK 1
#define SL_WALKING_PENGUIN_ACT_RETURNING 2
#define SL_WALKING_PENGUIN_ACT_TURNING_FORWARDS 3
/* Snowman Wind */
/* oSubAction */
#define SL_SNOWMAN_WIND_ACT_IDLE 0
#define SL_SNOWMAN_WIND_ACT_TALKING 1
#define SL_SNOWMAN_WIND_ACT_BLOWING 2
/* Water Bomb */
/* oAction */
#define WATER_BOMB_ACT_SHOT_FROM_CANNON 0
#define WATER_BOMB_ACT_INIT 1
#define WATER_BOMB_ACT_DROP 2
#define WATER_BOMB_ACT_EXPLODE 3
/* TTC Rotating Solid */
/* oBhvParams2ndByte */
#define TTC_ROTATING_SOLID_BP_CUBE 0
#define TTC_ROTATING_SOLID_BP_TRIANGULAR_PRISM 1
/* TTC Treadmill */
/* oBhvParams2ndByte */
#define TTC_TREADMILL_BP_FLAG_LARGE (0 << 0)
#define TTC_TREADMILL_BP_FLAG_SMALL (1 << 0)
#define TTC_TREADMILL_BP_FLAG_MASK (TTC_TREADMILL_BP_FLAG_LARGE | TTC_TREADMILL_BP_FLAG_SMALL)
#define TTC_TREADMILL_BP_LARGE_1 ((0 << 1) | TTC_TREADMILL_BP_FLAG_LARGE)
#define TTC_TREADMILL_BP_SMALL_1 ((0 << 1) | TTC_TREADMILL_BP_FLAG_SMALL)
#define TTC_TREADMILL_BP_LARGE_2 ((1 << 1) | TTC_TREADMILL_BP_FLAG_LARGE)
#define TTC_TREADMILL_BP_SMALL_2 ((1 << 1) | TTC_TREADMILL_BP_FLAG_SMALL)
/* TTC Moving Bar */
/* oAction */
#define TTC_MOVING_BAR_ACT_WAIT 0
#define TTC_MOVING_BAR_ACT_PULL_BACK 1
#define TTC_MOVING_BAR_ACT_EXTEND 2
#define TTC_MOVING_BAR_ACT_RETRACT 3
/* TTC Cog */
/* oBhvParams2ndByte */
#define TTC_COG_BP_SHAPE_HEXAGON (0 << 1)
#define TTC_COG_BP_SHAPE_TRIANGLE (1 << 1)
#define TTC_COG_BP_SHAPE_MASK (TTC_COG_BP_SHAPE_HEXAGON | TTC_COG_BP_SHAPE_TRIANGLE)
#define TTC_COG_BP_DIR_CCW (0 << 0) // TODO: Check these
#define TTC_COG_BP_DIR_CW (1 << 0)
#define TTC_COG_BP_DIR_MASK (TTC_COG_BP_DIR_CCW | TTC_COG_BP_DIR_CW)
/* TTC 2D Rotator */
/* oBhvParams2ndByte */
#define TTC_2D_ROTATOR_BP_HAND 0
#define TTC_2D_ROTATOR_BP_2D_COG 1
/* Activated Back-and-Forth Platform */
#define ACTIVATED_BF_PLAT_TYPE_BITS_ARROW_PLAT 0
#define ACTIVATED_BF_PLAT_TYPE_BITFS_MESH_PLAT 1
#define ACTIVATED_BF_PLAT_TYPE_BITFS_ELEVATOR 2
/* oBhvParams >> 16 */
#define ACTIVATED_BF_PLAT_BP_MASK_TYPE ((ACTIVATED_BF_PLAT_TYPE_BITS_ARROW_PLAT | \
ACTIVATED_BF_PLAT_TYPE_BITFS_MESH_PLAT | \
ACTIVATED_BF_PLAT_TYPE_BITFS_ELEVATOR) << 8)
/* Dorrie */
/* oAction */
#define DORRIE_ACT_MOVE 0
#define DORRIE_ACT_LOWER_HEAD 1
#define DORRIE_ACT_RAISE_HEAD 2
/* Mad Piano */
/* oAction */
#define MAD_PIANO_ACT_WAIT 0
#define MAD_PIANO_ACT_ATTACK 1
/* Fire Piranha Plant */
/* oAction */
#define FIRE_PIRANHA_PLANT_ACT_HIDE 0
#define FIRE_PIRANHA_PLANT_ACT_GROW 1
/* Fire Spitter */
/* oAction */
#define FIRE_SPITTER_ACT_IDLE 0
#define FIRE_SPITTER_ACT_SPIT_FIRE 1
/* Eyerok Boss */
/* oAction */
#define EYEROK_BOSS_ACT_SLEEP 0
#define EYEROK_BOSS_ACT_WAKE_UP 1
#define EYEROK_BOSS_ACT_SHOW_INTRO_TEXT 2
#define EYEROK_BOSS_ACT_FIGHT 3
#define EYEROK_BOSS_ACT_DIE 4
/* Eyerok Hand */
/* oAction */
#define EYEROK_HAND_ACT_SLEEP 0
#define EYEROK_HAND_ACT_IDLE 1
#define EYEROK_HAND_ACT_OPEN 2
#define EYEROK_HAND_ACT_SHOW_EYE 3
#define EYEROK_HAND_ACT_CLOSE 4
#define EYEROK_HAND_ACT_RETREAT 5
#define EYEROK_HAND_ACT_TARGET_MARIO 6
#define EYEROK_HAND_ACT_SMASH 7
#define EYEROK_HAND_ACT_FIST_PUSH 8
#define EYEROK_HAND_ACT_FIST_SWEEP 9
#define EYEROK_HAND_ACT_BEGIN_DOUBLE_POUND 10 // raising for double smash
#define EYEROK_HAND_ACT_DOUBLE_POUND 11 // double smashing
#define EYEROK_HAND_ACT_ATTACKED 12
#define EYEROK_HAND_ACT_RECOVER 13
#define EYEROK_HAND_ACT_BECOME_ACTIVE 14
#define EYEROK_HAND_ACT_DIE 15
/* Klepto */
/* oAction */
#define KLEPTO_ACT_CIRCLE_TARGET_HOLDING 0
#define KLEPTO_ACT_APPROACH_TARGET_HOLDING 1
#define KLEPTO_ACT_WAIT_FOR_MARIO 2
#define KLEPTO_ACT_TURN_TOWARD_MARIO 3
#define KLEPTO_ACT_DIVE_AT_MARIO 4
#define KLEPTO_ACT_RESET_POSITION 5
#define KLEPTO_ACT_STRUCK_BY_MARIO 6
#define KLEPTO_ACT_RETREAT 7
/* oAnimState */
#define KLEPTO_ANIM_STATE_HOLDING_NOTHING 0
#define KLEPTO_ANIM_STATE_HOLDING_CAP 1
#define KLEPTO_ANIM_STATE_HOLDING_STAR 2
/* Bird */
/* oAction */
#define BIRD_ACT_INACTIVE 0
#define BIRD_ACT_FLY 1
/* oBhvParams2ndByte */
#define BIRD_BP_SPAWNED 0
#define BIRD_BP_SPAWNER 1
/* Skeeter */
/* oAction */
#define SKEETER_ACT_IDLE 0
#define SKEETER_ACT_LUNGE 1
#define SKEETER_ACT_WALK 2
/* Snufit */
/* oAction */
#define SNUFIT_ACT_IDLE 0
#define SNUFIT_ACT_SHOOT 1
/* Tweester */
/* oAction */
#define TWEESTER_ACT_IDLE 0
#define TWEESTER_ACT_CHASE 1
#define TWEESTER_ACT_HIDE 2
/* oSubAction */
#define TWEESTER_SUB_ACT_WAIT 0
#define TWEESTER_SUB_ACT_CHASE 0
/* Triplet Butterfly */
/* oAction */
#define TRIPLET_BUTTERFLY_ACT_INIT 0
#define TRIPLET_BUTTERFLY_ACT_WANDER 1
#define TRIPLET_BUTTERFLY_ACT_ACTIVATE 2
#define TRIPLET_BUTTERFLY_ACT_EXPLODE 3
/* oBhvParams2ndByte */
#define TRIPLET_BUTTERFLY_BP_SPAWN_TYPE_SPAWNER (0 << 0)
#define TRIPLET_BUTTERFLY_BP_SPAWN_TYPE_SPAWNED_1 (1 << 0)
#define TRIPLET_BUTTERFLY_BP_SPAWN_TYPE_SPAWNED_2 (1 << 1)
#define TRIPLET_BUTTERFLY_BP_SPAWN_TYPE_MASK (TRIPLET_BUTTERFLY_BP_SPAWN_TYPE_SPAWNER | \
TRIPLET_BUTTERFLY_BP_SPAWN_TYPE_SPAWNED_1 | \
TRIPLET_BUTTERFLY_BP_SPAWN_TYPE_SPAWNED_2)
#define TRIPLET_BUTTERFLY_BP_NO_BOMBS (1 << 2)
/* oTripletButterflyType */
#define TRIPLET_BUTTERFLY_TYPE_NORMAL -1
#define TRIPLET_BUTTERFLY_TYPE_EXPLODES 0
#define TRIPLET_BUTTERFLY_TYPE_SPAWN_1UP 1
/* Water Level Diamond */
/* oAction */
// Loading
#define WATER_LEVEL_DIAMOND_ACT_INIT 0
// Idling when Mario isn't inside its hitbox
#define WATER_LEVEL_DIAMOND_ACT_IDLE 1
// While the water level is changing
#define WATER_LEVEL_DIAMOND_ACT_CHANGE_WATER_LEVEL 2
// After the water level has changed but Mario hasn't left its hitbox yet
#define WATER_LEVEL_DIAMOND_ACT_IDLE_SPINNING 3
/* Mips */
/* oAction */
#define MIPS_ACT_WAIT_FOR_NEARBY_MARIO 0
#define MIPS_ACT_FOLLOW_PATH 1
#define MIPS_ACT_WAIT_FOR_ANIMATION_DONE 2
#define MIPS_ACT_FALL_DOWN 3
#define MIPS_ACT_IDLE 4
/* oMipsStarStatus */
#define MIPS_STAR_STATUS_HAVENT_SPAWNED_STAR 0
#define MIPS_STAR_STATUS_SHOULD_SPAWN_STAR 1
#define MIPS_STAR_STATUS_ALREADY_SPAWNED_STAR 2
/* oBhvParams2ndByte */
#define MIPS_BP_15_STARS 0
#define MIPS_BP_50_STARS 1
/* Falling Pillar */
/* oAction */
#define FALLING_PILLAR_ACT_IDLE 0
#define FALLING_PILLAR_ACT_TURNING 1
#define FALLING_PILLAR_ACT_FALLING 2
/* Bowser Puzzle */
/* oAction */
#define BOWSER_PUZZLE_ACT_SPAWN_PIECES 0
#define BOWSER_PUZZLE_ACT_WAIT_FOR_COMPLETE 1
#define BOWSER_PUZZLE_ACT_DONE 2
/* Mr Blizzard */
/* oAction */
#define MR_BLIZZARD_ACT_SPAWN_SNOWBALL 0
#define MR_BLIZZARD_ACT_HIDE_UNHIDE 1
#define MR_BLIZZARD_ACT_RISE_FROM_GROUND 2
#define MR_BLIZZARD_ACT_ROTATE 3
#define MR_BLIZZARD_ACT_THROW_SNOWBALL 4
#define MR_BLIZZARD_ACT_BURROW 5
#define MR_BLIZZARD_ACT_DEATH 6
#define MR_BLIZZARD_ACT_JUMP 7
/* oBhvParams2ndByte */
#define MR_BLIZZARD_STYPE_GENERIC 0
#define MR_BLIZZARD_STYPE_JUMPING 1
#define MR_BLIZZARD_STYPE_CAP 2
/* Whomp */
/* oBhvParams2ndByte */
#define WHOMP_BP_SMALL 0
#define WHOMP_BP_KING 1
/* 1-Up Mushroom */
/* oBhvParams2ndByte */
#define ONE_UP_BP_GENERIC 0
#define ONE_UP_BP_BEAT_BITDW_BOWSER 1
#define ONE_UP_BP_BEAT_BITFS_BOWSER 2
/* Breakable Box */
/* oBhvParams2ndByte */
#define BREAKABLE_BOX_BP_NO_COINS 0
#define BREAKABLE_BOX_BP_3_COINS 1
#define BREAKABLE_BOX_BP_5_COINS 2
#define BREAKABLE_BOX_BP_GIANT 3
/* Hidden Object */
/* oAction */
#define HIDDEN_OBJECT_ACT_INACTIVE 0
#define HIDDEN_OBJECT_ACT_ACTIVE 1
#define HIDDEN_OBJECT_ACT_BROKEN 2
/* oBhvParams2ndByte */
#define HIDDEN_OBJECT_BP_BREAKABLE_BOX 0
#define HIDDEN_OBJECT_BP_WDW_PLATFORM 1
#define HIDDEN_OBJECT_BP_UNBREAKABLE_BOX_UNUSED_1 1
#define HIDDEN_OBJECT_BP_UNBREAKABLE_BOX_UNUSED_2 2
/* Exclamation Box */
/* oAnimState */
#define EXCLAMATION_BOX_ANIM_STATE_WING_CAP 0
#define EXCLAMATION_BOX_ANIM_STATE_METAL_CAP 1
#define EXCLAMATION_BOX_ANIM_STATE_VANISH_CAP 2
#define EXCLAMATION_BOX_ANIM_STATE_DEFAULT 3
/* oBhvParams2ndByte */
#define EXCLAMATION_BOX_BP_WING_CAP 0
#define EXCLAMATION_BOX_BP_METAL_CAP 1
#define EXCLAMATION_BOX_BP_VANISH_CAP 2
#define EXCLAMATION_BOX_BP_SPECIAL_CAP_END 2
#define EXCLAMATION_BOX_BP_KOOPA_SHELL 3
#define EXCLAMATION_BOX_BP_ONE_COIN 4
#define EXCLAMATION_BOX_BP_THREE_COINS 5
#define EXCLAMATION_BOX_BP_TEN_COINS 6
#define EXCLAMATION_BOX_BP_1UP_WALKING 7
#define EXCLAMATION_BOX_BP_STAR_ACT_1 8
#define EXCLAMATION_BOX_BP_1UP_RUNNING_AWAY 9
#define EXCLAMATION_BOX_BP_STAR_ACT_2 10
#define EXCLAMATION_BOX_BP_STAR_ACT_3 11
#define EXCLAMATION_BOX_BP_STAR_ACT_4 12
#define EXCLAMATION_BOX_BP_STAR_ACT_5 13
#define EXCLAMATION_BOX_BP_STAR_ACT_6 14
#define EXCLAMATION_BOX_BP_END 99
/* Cap Switch */
/* oBhvParams2ndByte */
#define CAP_SWITCH_BP_RED 0
#define CAP_SWITCH_BP_GREEN 1
#define CAP_SWITCH_BP_BLUE 2
#define CAP_SWITCH_BP_YELLOW 3
/* Openable Grill */
/* oBhvParams2ndByte */
#define OPENABLE_GRILL_BP_BOB 0
#define OPENABLE_GRILL_BP_HMC 1
/* WF Rotating Wooden Platform */
/* oAction */
#define WF_ROTATING_WOODEN_PLATFORM_ACT_IDLE 0
#define WF_ROTATING_WOODEN_PLATFORM_ACT_ROTATING 1
/* Rotating Platform */
/* oBhvParams2ndByte */
#define ROTATING_PLATFORM_BP_WF 0
#define ROTATING_PLATFORM_BP_WDW 1
/* Tumbling Bridge */
/* oBhvParams2ndByte */
#define TUMBLING_BRIDGE_BP_WF 0
#define TUMBLING_BRIDGE_BP_BBH 1
#define TUMBLING_BRIDGE_BP_LLL 2
#define TUMBLING_BRIDGE_BP_BITFS 3
/* Grindel or Thwomp */
/* oAction */
#define GRINDEL_THWOMP_ACT_RAISE 0
#define GRINDEL_THWOMP_ACT_IDLE_AT_TOP 1
#define GRINDEL_THWOMP_ACT_LOWER 2
#define GRINDEL_THWOMP_ACT_LAND 3
#define GRINDEL_THWOMP_ACT_IDLE_AT_BOTTOM 4
/* Tox Box */
/* oAction */
#define TOX_BOX_ACT_INIT 0
#define TOX_BOX_ACT_ROLL_LAND 1
#define TOX_BOX_ACT_IDLE 2
#define TOX_BOX_ACT_UNUSED_IDLE 3
#define TOX_BOX_ACT_ROLL_FORWARD 4
#define TOX_BOX_ACT_ROLL_BACKWARD 5
#define TOX_BOX_ACT_ROLL_RIGHT 6
#define TOX_BOX_ACT_ROLL_LEFT 7
#define TOX_BOX_ACT_TABLE_END -1
/* oBhvParams2ndByte */
#define TOX_BOX_BP_MOVEMENT_PATTERN_1 0
#define TOX_BOX_BP_MOVEMENT_PATTERN_2 1
#define TOX_BOX_BP_MOVEMENT_PATTERN_3 2
#endif // OBJECT_CONSTANTS_H