Files
Microtransactions64/include/sm64.h
thecozies f3e61a31aa HackerSM64 v2.0.0
* buffers: refresh 15 and revert to base decomp

* behavior script

* color helper functions

* extended bounds

* egeo_layout

* fixed model ids

* camera conf improved

* message panel ucode small

* graph node

* level script

* mathutil updates

* mathutil updates (allow unused funcs)

* behaviors a - beta_fish

* Add librtc and fix some data declarations

* Move GRUCODE define to proper location in makefile

* Refresh 15

* extra

* Make ROM name smaller and change messages printed on build a bit

* Fix console (lol)

* Update UNF to latest master

* Make ucode load from .o's (and also fix Super3D)

* Fix crash with rumble + custom mario model

* graph node and mathutil

* removed behaviors

* Ldtob documentation

* _Putfld labeling

* area

* behavior actions

* camera

* debug updates

* bubbles

* envfx snow

* farcall helpers

* game init

* geo misc

* hud

* only check if VC on render init

* ingame menu

* revert goddard to base decomp

* insn disasm

* interaction documentation

* level geo

* level update defines

* macro special objects formatting changes

* main.h documentation

* map parser documentation & formatting

* airborne documentation

* mario actions automatic documentation

* mario actions cutscene documentation

* mario actions moving documentation and options

* mario actions object documentation and options

* mario stationary documentation

* mario submerged documentation

* mario misc documentation

* mario step: ledge grab fixes and documentation

* mario documentation

* memory.h documentation

* moving textures

* object behaviors

* object collision

* fix flamethrower bug

* object helpers

* object list processor documentation

* paintings

* platform displacement

* print / printf

* puppycam absf

* puppyprint updates and formatting changes

* rendering graph node performance optimizations

* rumble opt and doc

* hqvm back to ultrasm64

* save file documentation and unlock defines

* s2d engine

* reset various files to ultrasm64

* file select

* intro geo documentation

* screen transition documentation

* segment2.h

* shadow overhaul

* skybox refactor

* sound init: clean up define usage + documentation

* spawn object optimizations and documentation

* spawn sound cleanup

* sram to ultrasm64

* star select cleanup

* title screen cleanup

* dialogs / text

* rename stomp smoke

* stomp smoke -> small water splash

* updated README

* compilation flags

* optimized file positions + support function/data sections

* surface collision performance improvements

* surface load optimizations

* camera conf documentation

* Allow easier command for opening puppyprint debug

* Rearranged framebuffers & fixed puppyprint console printing

* Fix shadow scaling and shifting

* Fix SILHOUETTE, OBJECTS_REJ, and ucode loading, also clean up render phase system a bit.

* Fixed build with BETTER_HANGING off

* Clean up OBJECTS_REJ ifdefs

* Fix duplicate comment & graph render layers/flags bitmask

* Fixed build with BETTER_HANGING off

* Fix Fast64 importing by reverting sSegmentTable change

* Readded missing functions that caused build errors with Mario head enabled

* Fixed clang compilation issues

* Add INTER mode for geo_update_layer_transparency

* Fix build warnings

* bugfix: miscalculation in obj_turn_toward_object

* Some puppytech fixes

* Further Puppycamera fixes

* Fix BUGFIX_DIALOG_TIME_STOP

Fixes #136

* Fix sliding platform bparams

* Add LEGACY_SHADOW_IDS define for Fast64 compatibility

* Apply suggested changes

* Better find_in_bounds_yaw_wdw_bob_thi ifdef

* Fix build warnings for unused functions

* Fixed stale reference bug from obj_mark_for_deletion change

* Fixed incorrect digit for 100s #145

* Change groundpound-fix define and functionality to just disable bonking

* Fixed puppyroll #134

* Adjust height value for terrain angle to kick in

* fixed hi score flashing

* Remove menudata backup (#131)

Not considered important enough to keep

* Fix fread() build warning

* Add COURSE_NUM_TO_INDEX to save_file_get_star_flags check in bhv_unagi_init

* Fix approach_s16 return value

* Use boolean defines for oCapDoScaleVertically

* Make the door lock a part of the key door model to eliminate z-fighting, also reduce z fighting on numbered doors with AUTO_LOD enabled.

* Move flames to LAYER_TRANSPARENT_INTER

* Resolved some compiler warnings and added FALL_THROUGH define (#168)

* Address some more compiler warnings with different define toggles

* Remove unnecessary fallthrough attribute

* fixed geo_process_billboard floating point exception

* Allow water to face any direction

* Initialize focOffset so that BBH doesn't crash

* Removed superfluous RDP commands when switching microcodes which would override scissor

* Set OBJ_FLAG_DONT_CALC_COLL_DIST on bhvUkikiCage

* Fix rumble build

* Fixed UNLOCK_FPS strobing

* Update src/game/object_helpers.c

Co-authored-by: thecozies <79979276+thecozies@users.noreply.github.com>

* Update src/game/object_helpers.c

Co-authored-by: thecozies <79979276+thecozies@users.noreply.github.com>

* Fix LEGACY_SHADOW_IDS id conflict

* Use the vanilla default value for rotating fire bars if bparam2 is 0

* START_LEVEL safeguard

* Fix some drawing distance issues caused by AUTO_COLLISION_DISTANCE

* Fix rumble build

* Fixed spline poll code using the wrong values for keyframes

* Update readme with better credits

Better credits for individual contributors

* add arthur

* added falco and moose

* add fazana

* le funny typo

* added S2DEX engine to credits

* silhouette + axo + ratio

* remove specific callouts + add auto col distance

* Update data/behavior_data.c

Co-authored-by: thecozies <79979276+thecozies@users.noreply.github.com>

* Update data/behavior_data.c

Co-authored-by: thecozies <79979276+thecozies@users.noreply.github.com>

* Update data/behavior_data.c

Co-authored-by: thecozies <79979276+thecozies@users.noreply.github.com>

* Revert formatting changes to match vanilla decomp

* Re-implement Y buffer for find_ceil

* Re-implement POWER_STARS_HEAL for normal Power Stars

* Start level comment & exit course comment/collapse

* utilize reonucam technique for FAST_VERTICAL_CAMERA_MOVEMENT

* Fix "MAX_REFERENCED_WALLS" typo

* Allow stop_and_set_height_to_floor to work at any height if Mario is teleporting (#213)

* Revert stop_and_set_height_to_floor to vanilla

Fixes #208

* Fixed sAudioEnabled so that it disables audio CPU processing as well

* Fixed puppyprint debug RDP us calculations

* Renamed sAudioEnabled to gAudioEnabled

* Replaced mtxf_to_mtx_asm with an equivalent implementation that supports WORLD_SCALE

* Moved extended bounds and world scale configuration to a new config_world.h file

* Default all objects to non-rej (#227)

Fixes #221 (Default all objects to non-rej)

* Fix #221

* Fix VISUAL_DEBUG breaking/crashing when OBJECTS_REJ is disabled (#211)

* Fix VISUAL_DEBUG breaking/crashing when OBJECTS_REJ is disabled

* Change vtl decrement in visual_surface_display from 6 to 3

Fixes #207

* Make area in SL igloo wider to prevent a softlock (#233)

Fixes #210

* Fix coin formation coins being deleted if they spawn in the middle of a floor, also fix TTM slide coin position (#232)

Fixes #201

* Make UNLOCK_ALL apply to more things

* Fix wrong ifdef/ifndef in bhv_invisible_objects_under_bridge_init

* Change chain chomp load/unload distances depending on number of segments (#237)

Fixes #192

* added WATER_PLUNGE_UPWARP define

* Add reonucam patch (#239)

* added reonucam patch
Fixes #218

* Fix how shadows handle water/transparency/height (#228)

* Fix how shadows handle water/transparency/height

* Change shadow check for flying carpets from a level specific check to a oPlatformOnTrackType check

Fixes #179

* added reonucam credit

* delete unnecesary patches

* Apply suggested changes

* murdered more patches

* UNLOCK_ALL unlocks the cap boxes

* UNLOCK_ALL unlocks cap boxes (slightly more epic edition)

* revert ceil buffer

* Renamed HD_INTRO_TEXTURES define, separated intro floombas

* prevent double definition of floombas

* actually prevent floomba redefinition

* Develop/refactor  default defines (#242)

* Changed default config options

* Added build dir to includePaths for pngs

* disable NO_SLEEP by default

* Disable puppyprint by default

Sorry fazana 😔

* fix typos

* add comment about BETTER_REVERB console perf

* disable blue coin switch retry by default

* Update config_audio.h

Co-authored-by: Reonu <danileon95@gmail.com>
Co-authored-by: Mr-Wiseguy <68165316+Mr-Wiseguy@users.noreply.github.com>

* revert air step line to vanilla to fix bitfs scaling platform issue (#247)

Fixes #200

* Fix stuttering on thin slopes (#248)

* Fix stuttering on thin slopes

* Revert vec3f_find_ceil calls to vanilla

* Rename vec3f_find_ceil to find_mario_ceil

* Update src/engine/surface_collision.h

Fixes #249

* Swap static and dynamic surface checks back to vanilla order (#253)

* Swap static and dynamic surface checks back to vanilla order

* re-enable DISABLE_ALL config

Fixes #251 #252

* Fixed save and quitting while in widescreen (#257)

* Fixed save and quitting while in widescreen

* use define for the level

* all my homies hate ifdefs

* skip wall offsets < 0 (#255)

Fixes #255

* #264: Document non-stop stars' issues (#267)

* #264: Document non-stop stars' issues

* Update include/config/config_game.h

* nonstop vanilla comment

* derive margin_radius from radius after capping at 200 (#266)

Fixes #259

* Config cleanup/refactor (#269)

* Moved puppyprint define to graphics / rearranged some debug defines for ease of access

* Moved compatibility safeguards to config_safeguards.h

* spacing and comment formatting

* #272 Move GFX_POOL_SIZE to config_graphics.h

* disable EASIER_DIALOG_TRIGGER by default

* prevent redefining warnings

* small ifdef typo

* changed ifndef to undefs

Fixes #262
Fixes #272

* Improved movement config documentation related to turning around (#271)

Fixes #270

* rename CUSTOM_DEBUG, add comments (#275)

* Update README.md (#277)

* v2.0.0

Co-authored-by: CrashOveride95 <crashoveride953@gmail.com>
Co-authored-by: Arceveti <73617174+Arceveti@users.noreply.github.com>
Co-authored-by: n64 <n64>
Co-authored-by: Fazana <52551480+FazanaJ@users.noreply.github.com>
Co-authored-by: Mr-Wiseguy <mrwiseguyromhacking@gmail.com>
Co-authored-by: aglab2 <aglab3@gmail.com>
Co-authored-by: gheskett <gheskett@gmail.com>
Co-authored-by: Reonu <danileon95@gmail.com>
Co-authored-by: Axollyon <20480418+Axollyon@users.noreply.github.com>
Co-authored-by: Mr-Wiseguy <68165316+Mr-Wiseguy@users.noreply.github.com>
2021-12-30 16:57:51 +00:00

725 lines
50 KiB
C

#ifndef SM64_H
#define SM64_H
// Global header for Super Mario 64
#include "types.h"
#include "config.h"
#include "object_fields.h"
#include "object_constants.h"
#include "sounds.h"
#include "model_ids.h"
#include "mario_animation_ids.h"
#include "mario_geo_switch_case_ids.h"
#include "surface_terrains.h"
#include "macros.h"
#include "segments.h"
// Crash handler enhancement
#ifdef CRASH_SCREEN_INCLUDED
#define DEBUG_ASSERT(exp) do { if (!(exp)) _n64_assert(__FILE__, __LINE__, #exp, 1); } while (0)
#else
#define DEBUG_ASSERT(exp)
#endif
// Pointer casting is technically UB, and avoiding it gets rid of endian issues as well as a nice side effect.
#define GET_HIGH_U16_OF_32(var) ((u16)((var) >> 16))
#define GET_HIGH_S16_OF_32(var) ((s16)((var) >> 16))
#define GET_LOW_U16_OF_32(var) ((u16)((var) & 0xFFFF))
#define GET_LOW_S16_OF_32(var) ((s16)((var) & 0xFFFF))
#define SET_HIGH_U16_OF_32(var, x) ((var) = ((var) & 0xFFFF) | ((x) << 16))
#define SET_HIGH_S16_OF_32(var, x) ((var) = ((var) & 0xFFFF) | ((x) << 16))
// Common cos values for degrees, often used for surface Y normals
// These are different than coss()
#define COS1 0.9998477f
#define COS5 0.9961947f
#define COS10 0.9848077f
#define COS15 0.9659258f
#define COS20 0.9396926f
#define COS25 0.9063078f // ledge grabs
#define COS30 0.8660254f
#define COS35 0.85264016f
#define COS36 0.8443279f
#define COS38 0.7880108f // mario_floor_is_slippery default
#define COS40 0.80901699f
#define COS45 0.76040596f
#define COS50 0.70710678f // SURFACE_FLAG_X_PROJECTION
#define COS55 0.64944805f
#define COS60 0.58778525f
#define COS65 0.52249856f
#define COS70 0.4539905f
#define COS73 0.29237169f // common_landing_cancels, check_common_idle_cancels, check_common_hold_idle_cancels
#define COS75 0.38268343f
#define COS78 0.20791169f
#define COS80 0.17364818f // braking action
#define COS85 0.23344536f
enum RenderLayers {
LAYER_FORCE,
LAYER_OPAQUE,
LAYER_OPAQUE_INTER,
LAYER_OPAQUE_DECAL,
LAYER_ALPHA,
#if SILHOUETTE
LAYER_ALPHA_DECAL,
LAYER_SILHOUETTE_OPAQUE,
LAYER_SILHOUETTE_ALPHA,
LAYER_OCCLUDE_SILHOUETTE_OPAQUE,
LAYER_OCCLUDE_SILHOUETTE_ALPHA,
#endif
LAYER_TRANSPARENT_DECAL,
LAYER_TRANSPARENT,
LAYER_TRANSPARENT_INTER,
LAYER_COUNT
};
#define LAYER_FIRST LAYER_FORCE
#define LAYER_LAST (LAYER_COUNT - 1)
#define LAYER_ZB_FIRST LAYER_OPAQUE
#if SILHOUETTE
#define LAYER_ZB_LAST LAYER_OCCLUDE_SILHOUETTE_ALPHA
#define LAYER_SILHOUETTE_FIRST LAYER_SILHOUETTE_OPAQUE
#define LAYER_LAST_BEFORE_SILHOUETTE (LAYER_SILHOUETTE_FIRST - 1)
#define LAYER_SILHOUETTE_LAST LAYER_SILHOUETTE_ALPHA
#define LAYER_OCCLUDE_SILHOUETTE_FIRST LAYER_OCCLUDE_SILHOUETTE_OPAQUE
#define LAYER_OCCLUDE_SILHOUETTE_LAST LAYER_OCCLUDE_SILHOUETTE_ALPHA
#define LAYER_OPAQUE_ORIG LAYER_OPAQUE
#define LAYER_ALPHA_ORIG LAYER_ALPHA
#else
#define LAYER_ZB_LAST LAYER_ALPHA
#define LAYER_ALPHA_DECAL LAYER_ALPHA
#define LAYER_SILHOUETTE_OPAQUE LAYER_OPAQUE // is zbuffered
#define LAYER_SILHOUETTE_ALPHA LAYER_ALPHA // is zbuffered
#define LAYER_OCCLUDE_SILHOUETTE_OPAQUE LAYER_OPAQUE // is zbuffered
#define LAYER_OCCLUDE_SILHOUETTE_ALPHA LAYER_ALPHA // is zbuffered
#endif
#define LAYER_NON_ZB_FIRST (LAYER_ZB_LAST + 1)
#define LAYER_NON_ZB_LAST LAYER_LAST
enum MarioInput {
INPUT_NONE = /* 0x0000 */ (0 << 0),
INPUT_NONZERO_ANALOG = /* 0x0001 */ (1 << 0),
INPUT_A_PRESSED = /* 0x0002 */ (1 << 1),
INPUT_OFF_FLOOR = /* 0x0004 */ (1 << 2),
INPUT_ABOVE_SLIDE = /* 0x0008 */ (1 << 3),
INPUT_FIRST_PERSON = /* 0x0010 */ (1 << 4),
INPUT_IDLE = /* 0x0020 */ (1 << 5),
INPUT_SQUISHED = /* 0x0040 */ (1 << 6),
INPUT_A_DOWN = /* 0x0080 */ (1 << 7),
INPUT_IN_POISON_GAS = /* 0x0100 */ (1 << 8),
INPUT_IN_WATER = /* 0x0200 */ (1 << 9),
INPUT_STOMPED = /* 0x0400 */ (1 << 10),
INPUT_INTERACT_OBJ_GRABBABLE = /* 0x0800 */ (1 << 11),
INPUT_B_DOWN = /* 0x1000 */ (1 << 12),
INPUT_B_PRESSED = /* 0x2000 */ (1 << 13),
INPUT_Z_DOWN = /* 0x4000 */ (1 << 14),
INPUT_Z_PRESSED = /* 0x8000 */ (1 << 15),
};
enum GroundStep {
GROUND_STEP_LEFT_GROUND,
GROUND_STEP_NONE,
GROUND_STEP_HIT_WALL,
GROUND_STEP_HIT_WALL_STOP_QSTEPS = GROUND_STEP_HIT_WALL,
GROUND_STEP_HIT_WALL_CONTINUE_QSTEPS
};
enum AirStepCheck {
AIR_STEP_CHECK_NONE,
AIR_STEP_CHECK_LEDGE_GRAB,
AIR_STEP_CHECK_HANG
};
enum AirStep {
AIR_STEP_NONE,
AIR_STEP_LANDED,
AIR_STEP_HIT_WALL,
AIR_STEP_GRABBED_LEDGE,
AIR_STEP_GRABBED_CEILING,
AIR_STEP_UNK,
AIR_STEP_HIT_LAVA_WALL,
AIR_STEP_HIT_CEILING
};
enum WaterStep {
WATER_STEP_NONE,
WATER_STEP_HIT_FLOOR,
WATER_STEP_HIT_CEILING,
WATER_STEP_CANCELLED,
WATER_STEP_HIT_WALL
};
enum MarioParticleFlags {
PARTICLE_NONE = /* 0x00000000 */ (0 << 0),
PARTICLE_DUST = /* 0x00000001 */ (1 << 0),
PARTICLE_VERTICAL_STAR = /* 0x00000002 */ (1 << 1),
PARTICLE_2 = /* 0x00000004 */ (1 << 2),
PARTICLE_SPARKLES = /* 0x00000008 */ (1 << 3),
PARTICLE_HORIZONTAL_STAR = /* 0x00000010 */ (1 << 4),
PARTICLE_BUBBLE = /* 0x00000020 */ (1 << 5),
PARTICLE_WATER_SPLASH = /* 0x00000040 */ (1 << 6),
PARTICLE_IDLE_WATER_WAVE = /* 0x00000080 */ (1 << 7),
PARTICLE_SHALLOW_WATER_WAVE = /* 0x00000100 */ (1 << 8),
PARTICLE_PLUNGE_BUBBLE = /* 0x00000200 */ (1 << 9),
PARTICLE_WAVE_TRAIL = /* 0x00000400 */ (1 << 10),
PARTICLE_FIRE = /* 0x00000800 */ (1 << 11),
PARTICLE_SHALLOW_WATER_SPLASH = /* 0x00001000 */ (1 << 12),
PARTICLE_LEAF = /* 0x00002000 */ (1 << 13),
PARTICLE_SNOW = /* 0x00004000 */ (1 << 14),
PARTICLE_DIRT = /* 0x00008000 */ (1 << 15),
PARTICLE_MIST_CIRCLE = /* 0x00010000 */ (1 << 16),
PARTICLE_BREATH = /* 0x00020000 */ (1 << 17),
PARTICLE_TRIANGLE = /* 0x00040000 */ (1 << 18),
PARTICLE_19 = /* 0x00080000 */ (1 << 19),
};
enum ModelStates {
MODEL_STATE_ALPHA = (1 << 8), // 0x100
MODEL_STATE_NOISE_ALPHA = ((1 << 7) | MODEL_STATE_ALPHA), // (0x080 | MODEL_STATE_ALPHA)
MODEL_STATE_METAL = (1 << 9), // 0x200
MODEL_STATE_MASK = 0xFF
};
enum MarioFlags {
MARIO_NONE = /* 0x00000000 */ (0 << 0),
MARIO_NORMAL_CAP = /* 0x00000001 */ (1 << 0),
MARIO_VANISH_CAP = /* 0x00000002 */ (1 << 1),
MARIO_METAL_CAP = /* 0x00000004 */ (1 << 2),
MARIO_WING_CAP = /* 0x00000008 */ (1 << 3),
MARIO_CAP_ON_HEAD = /* 0x00000010 */ (1 << 4),
MARIO_CAP_IN_HAND = /* 0x00000020 */ (1 << 5),
MARIO_METAL_SHOCK = /* 0x00000040 */ (1 << 6),
MARIO_TELEPORTING = /* 0x00000080 */ (1 << 7),
MARIO_JUMPING = /* 0x00000100 */ (1 << 8),
MARIO_UNUSED_9 = /* 0x00000200 */ (1 << 9),
MARIO_UNUSED_10 = /* 0x00000400 */ (1 << 10),
MARIO_UNUSED_11 = /* 0x00000800 */ (1 << 11),
MARIO_UNUSED_12 = /* 0x00001000 */ (1 << 12),
MARIO_NO_PURPLE_SWITCH = /* 0x00002000 */ (1 << 13),
MARIO_UNUSED_14 = /* 0x00004000 */ (1 << 14),
MARIO_UNUSED_15 = /* 0x00008000 */ (1 << 15),
MARIO_ACTION_SOUND_PLAYED = /* 0x00010000 */ (1 << 16),
MARIO_MARIO_SOUND_PLAYED = /* 0x00020000 */ (1 << 17),
MARIO_FALL_SOUND_PLAYED = /* 0x00040000 */ (1 << 18),
MARIO_UNUSED_19 = /* 0x00080000 */ (1 << 19),
MARIO_PUNCHING = /* 0x00100000 */ (1 << 20),
MARIO_KICKING = /* 0x00200000 */ (1 << 21),
MARIO_TRIPPING = /* 0x00400000 */ (1 << 22),
MARIO_UNUSED_23 = /* 0x00800000 */ (1 << 23),
MARIO_UNUSED_24 = /* 0x01000000 */ (1 << 24),
MARIO_LEDGE_CLIMB_CAMERA = /* 0x02000000 */ (1 << 25),
MARIO_UNUSED_26 = /* 0x04000000 */ (1 << 26),
MARIO_UNUSED_27 = /* 0x08000000 */ (1 << 27),
MARIO_UNUSED_28 = /* 0x10000000 */ (1 << 28),
MARIO_UNUSED_29 = /* 0x20000000 */ (1 << 29),
MARIO_AIR_HIT_WALL = /* 0x40000000 */ (1 << 30),
MARIO_PUSHING = /* 0x80000000 */ (1 << 31),
MARIO_SPECIAL_CAPS = (MARIO_VANISH_CAP | MARIO_METAL_CAP | MARIO_WING_CAP),
MARIO_CAPS = (MARIO_NORMAL_CAP | MARIO_SPECIAL_CAPS),
};
#define ACT_ID_MASK 0x000001FF
enum MarioActionGroups {
ACT_GROUP_STATIONARY = /* 0x00000000 */ (0 << 6),
ACT_GROUP_MOVING = /* 0x00000040 */ (1 << 6),
ACT_GROUP_AIRBORNE = /* 0x00000080 */ (2 << 6),
ACT_GROUP_SUBMERGED = /* 0x000000C0 */ (3 << 6),
ACT_GROUP_CUTSCENE = /* 0x00000100 */ (4 << 6),
ACT_GROUP_AUTOMATIC = /* 0x00000140 */ (5 << 6),
ACT_GROUP_OBJECT = /* 0x00000180 */ (6 << 6),
ACT_GROUP_CUSTOM = /* 0x000001C0 */ (7 << 6),
ACT_GROUP_MASK = 0x000001C0
};
enum MarioActionFlags {
ACT_FLAG_STATIONARY = /* 0x00000200 */ (1 << 9),
ACT_FLAG_MOVING = /* 0x00000400 */ (1 << 10),
ACT_FLAG_AIR = /* 0x00000800 */ (1 << 11),
ACT_FLAG_INTANGIBLE = /* 0x00001000 */ (1 << 12),
ACT_FLAG_SWIMMING = /* 0x00002000 */ (1 << 13),
ACT_FLAG_METAL_WATER = /* 0x00004000 */ (1 << 14),
ACT_FLAG_SHORT_HITBOX = /* 0x00008000 */ (1 << 15),
ACT_FLAG_RIDING_SHELL = /* 0x00010000 */ (1 << 16),
ACT_FLAG_INVULNERABLE = /* 0x00020000 */ (1 << 17),
ACT_FLAG_BUTT_OR_STOMACH_SLIDE = /* 0x00040000 */ (1 << 18),
ACT_FLAG_DIVING = /* 0x00080000 */ (1 << 19),
ACT_FLAG_ON_POLE = /* 0x00100000 */ (1 << 20),
ACT_FLAG_HANGING = /* 0x00200000 */ (1 << 21),
ACT_FLAG_IDLE = /* 0x00400000 */ (1 << 22),
ACT_FLAG_ATTACKING = /* 0x00800000 */ (1 << 23),
ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION = /* 0x01000000 */ (1 << 24),
ACT_FLAG_CONTROL_JUMP_HEIGHT = /* 0x02000000 */ (1 << 25),
ACT_FLAG_ALLOW_FIRST_PERSON = /* 0x04000000 */ (1 << 26),
ACT_FLAG_PAUSE_EXIT = /* 0x08000000 */ (1 << 27),
ACT_FLAG_SWIMMING_OR_FLYING = /* 0x10000000 */ (1 << 28),
ACT_FLAG_WATER_OR_TEXT = /* 0x20000000 */ (1 << 29),
ACT_FLAG_UNUSED = /* 0x40000000 */ (1 << 30),
ACT_FLAG_THROWING = /* 0x80000000 */ (1 << 31),
};
#define ACT_UNINITIALIZED 0x00000000 // (0x000)
// group 0x000: stationary actions
#define ACT_IDLE 0x0C400201 // (0x001 | ACT_FLAG_STATIONARY | ACT_FLAG_IDLE | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
#define ACT_START_SLEEPING 0x0C400202 // (0x002 | ACT_FLAG_STATIONARY | ACT_FLAG_IDLE | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
#define ACT_SLEEPING 0x0C000203 // (0x003 | ACT_FLAG_STATIONARY | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
#define ACT_WAKING_UP 0x0C000204 // (0x004 | ACT_FLAG_STATIONARY | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
#define ACT_PANTING 0x0C400205 // (0x005 | ACT_FLAG_STATIONARY | ACT_FLAG_IDLE | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
#define ACT_HOLD_PANTING_UNUSED 0x08000206 // (0x006 | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)
#define ACT_HOLD_IDLE 0x08000207 // (0x007 | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)
#define ACT_HOLD_HEAVY_IDLE 0x08000208 // (0x008 | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)
#define ACT_STANDING_AGAINST_WALL 0x0C400209 // (0x009 | ACT_FLAG_STATIONARY | ACT_FLAG_IDLE | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
#define ACT_COUGHING 0x0C40020A // (0x00A | ACT_FLAG_STATIONARY | ACT_FLAG_IDLE | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
#define ACT_SHIVERING 0x0C40020B // (0x00B | ACT_FLAG_STATIONARY | ACT_FLAG_IDLE | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
#define ACT_UNUSED_00C 0x0000000C // (0x00C)
#define ACT_IN_QUICKSAND 0x0002020D // (0x00D | ACT_FLAG_STATIONARY | ACT_FLAG_INVULNERABLE)
#define ACT_NO_STANDING_DEATH 0x0002020E // (0x00E | ACT_FLAG_STATIONARY | ACT_FLAG_INVULNERABLE)
#define ACT_UNUSED_00F 0x0000000F // (0x00F)
#define ACT_UNUSED_010 0x00000010 // (0x010)
#define ACT_UNUSED_01F 0x0000001F // (0x01F)
#define ACT_CROUCHING 0x0C008220 // (0x020 | ACT_FLAG_STATIONARY | ACT_FLAG_SHORT_HITBOX | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
#define ACT_START_CROUCHING 0x0C008221 // (0x021 | ACT_FLAG_STATIONARY | ACT_FLAG_SHORT_HITBOX | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
#define ACT_STOP_CROUCHING 0x0C008222 // (0x022 | ACT_FLAG_STATIONARY | ACT_FLAG_SHORT_HITBOX | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
#define ACT_START_CRAWLING 0x0C008223 // (0x023 | ACT_FLAG_STATIONARY | ACT_FLAG_SHORT_HITBOX | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
#define ACT_STOP_CRAWLING 0x0C008224 // (0x024 | ACT_FLAG_STATIONARY | ACT_FLAG_SHORT_HITBOX | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
#define ACT_SLIDE_KICK_SLIDE_STOP 0x08000225 // (0x025 | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)
#define ACT_SHOCKWAVE_BOUNCE 0x00020226 // (0x026 | ACT_FLAG_STATIONARY | ACT_FLAG_INVULNERABLE)
#define ACT_FIRST_PERSON 0x0C000227 // (0x027 | ACT_FLAG_STATIONARY | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
#define ACT_UNUSED_028 0x00000028 // (0x028)
#define ACT_UNUSED_02E 0x0000002E // (0x02E)
#define ACT_BACKFLIP_LAND_STOP 0x0800022F // (0x02F | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)
#define ACT_JUMP_LAND_STOP 0x0C000230 // (0x030 | ACT_FLAG_STATIONARY | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
#define ACT_DOUBLE_JUMP_LAND_STOP 0x0C000231 // (0x031 | ACT_FLAG_STATIONARY | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
#define ACT_FREEFALL_LAND_STOP 0x0C000232 // (0x032 | ACT_FLAG_STATIONARY | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
#define ACT_SIDE_FLIP_LAND_STOP 0x0C000233 // (0x033 | ACT_FLAG_STATIONARY | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
#define ACT_HOLD_JUMP_LAND_STOP 0x08000234 // (0x034 | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)
#define ACT_HOLD_FREEFALL_LAND_STOP 0x08000235 // (0x035 | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)
#define ACT_AIR_THROW_LAND 0x80000A36 // (0x036 | ACT_FLAG_STATIONARY | ACT_FLAG_AIR | ACT_FLAG_THROWING)
#define ACT_UNUSED_037 0x00000037 // (0x037)
#define ACT_TWIRL_LAND 0x18800238 // (0x038 | ACT_FLAG_STATIONARY | ACT_FLAG_ATTACKING | ACT_FLAG_PAUSE_EXIT | ACT_FLAG_SWIMMING_OR_FLYING)
#define ACT_LAVA_BOOST_LAND 0x08000239 // (0x039 | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)
#define ACT_TRIPLE_JUMP_LAND_STOP 0x0800023A // (0x03A | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)
#define ACT_LONG_JUMP_LAND_STOP 0x0800023B // (0x03B | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)
#define ACT_GROUND_POUND_LAND 0x0080023C // (0x03C | ACT_FLAG_STATIONARY | ACT_FLAG_ATTACKING)
#define ACT_BRAKING_STOP 0x0C00023D // (0x03D | ACT_FLAG_STATIONARY | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
#define ACT_BUTT_SLIDE_STOP 0x0C00023E // (0x03E | ACT_FLAG_STATIONARY | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
#define ACT_HOLD_BUTT_SLIDE_STOP 0x0800043F // (0x03F | ACT_FLAG_MOVING | ACT_FLAG_PAUSE_EXIT)
// group 0x040: moving (ground) actions
#define ACT_WALKING 0x04000440 // (0x040 | ACT_FLAG_MOVING | ACT_FLAG_ALLOW_FIRST_PERSON)
#define ACT_UNUSED_041 0x00000041 // (0x041)
#define ACT_HOLD_WALKING 0x00000442 // (0x042 | ACT_FLAG_MOVING)
#define ACT_TURNING_AROUND 0x00000443 // (0x043 | ACT_FLAG_MOVING)
#define ACT_FINISH_TURNING_AROUND 0x00000444 // (0x044 | ACT_FLAG_MOVING)
#define ACT_BRAKING 0x04000445 // (0x045 | ACT_FLAG_MOVING | ACT_FLAG_ALLOW_FIRST_PERSON)
#define ACT_RIDING_SHELL_GROUND 0x20810446 // (0x046 | ACT_FLAG_MOVING | ACT_FLAG_RIDING_SHELL | ACT_FLAG_ATTACKING | ACT_FLAG_WATER_OR_TEXT)
#define ACT_HOLD_HEAVY_WALKING 0x00000447 // (0x047 | ACT_FLAG_MOVING)
#define ACT_CRAWLING 0x04008448 // (0x048 | ACT_FLAG_MOVING | ACT_FLAG_SHORT_HITBOX | ACT_FLAG_ALLOW_FIRST_PERSON)
#define ACT_BURNING_GROUND 0x00020449 // (0x049 | ACT_FLAG_MOVING | ACT_FLAG_INVULNERABLE)
#define ACT_DECELERATING 0x0400044A // (0x04A | ACT_FLAG_MOVING | ACT_FLAG_ALLOW_FIRST_PERSON)
#define ACT_HOLD_DECELERATING 0x0000044B // (0x04B | ACT_FLAG_MOVING)
#define ACT_UNUSED_04C 0x0000004C // (0x04C)
#define ACT_UNUSED_04D 0x0000004D // (0x04D)
#define ACT_UNUSED_04E 0x0000004E // (0x04E)
#define ACT_UNUSED_04F 0x0000004F // (0x04F)
#define ACT_BEGIN_SLIDING 0x00000050 // (0x050)
#define ACT_HOLD_BEGIN_SLIDING 0x00000051 // (0x051)
#define ACT_BUTT_SLIDE 0x00840452 // (0x052 | ACT_FLAG_MOVING | ACT_FLAG_BUTT_OR_STOMACH_SLIDE | ACT_FLAG_ATTACKING)
#define ACT_STOMACH_SLIDE 0x008C0453 // (0x053 | ACT_FLAG_MOVING | ACT_FLAG_BUTT_OR_STOMACH_SLIDE | ACT_FLAG_DIVING | ACT_FLAG_ATTACKING)
#define ACT_HOLD_BUTT_SLIDE 0x00840454 // (0x054 | ACT_FLAG_MOVING | ACT_FLAG_BUTT_OR_STOMACH_SLIDE | ACT_FLAG_ATTACKING)
#define ACT_HOLD_STOMACH_SLIDE 0x008C0455 // (0x055 | ACT_FLAG_MOVING | ACT_FLAG_BUTT_OR_STOMACH_SLIDE | ACT_FLAG_DIVING | ACT_FLAG_ATTACKING)
#define ACT_DIVE_SLIDE 0x00880456 // (0x056 | ACT_FLAG_MOVING | ACT_FLAG_DIVING | ACT_FLAG_ATTACKING)
#define ACT_MOVE_PUNCHING 0x00800457 // (0x057 | ACT_FLAG_MOVING | ACT_FLAG_ATTACKING)
#define ACT_UNUSED_058 0x00000058 // (0x058)
#define ACT_CROUCH_SLIDE 0x04808459 // (0x059 | ACT_FLAG_MOVING | ACT_FLAG_SHORT_HITBOX | ACT_FLAG_ATTACKING | ACT_FLAG_ALLOW_FIRST_PERSON)
#define ACT_SLIDE_KICK_SLIDE 0x0080045A // (0x05A | ACT_FLAG_MOVING | ACT_FLAG_ATTACKING)
#define ACT_UNUSED_05B 0x0000005B // (0x05B)
#define ACT_UNUSED_05C 0x0000005C // (0x05C)
#define ACT_UNUSED_05D 0x0000005D // (0x05D)
#define ACT_UNUSED_05E 0x0000005E // (0x05E)
#define ACT_UNUSED_05F 0x0000005F // (0x05F)
#define ACT_HARD_BACKWARD_GROUND_KB 0x00020460 // (0x060 | ACT_FLAG_MOVING | ACT_FLAG_INVULNERABLE)
#define ACT_HARD_FORWARD_GROUND_KB 0x00020461 // (0x061 | ACT_FLAG_MOVING | ACT_FLAG_INVULNERABLE)
#define ACT_BACKWARD_GROUND_KB 0x00020462 // (0x062 | ACT_FLAG_MOVING | ACT_FLAG_INVULNERABLE)
#define ACT_FORWARD_GROUND_KB 0x00020463 // (0x063 | ACT_FLAG_MOVING | ACT_FLAG_INVULNERABLE)
#define ACT_SOFT_BACKWARD_GROUND_KB 0x00020464 // (0x064 | ACT_FLAG_MOVING | ACT_FLAG_INVULNERABLE)
#define ACT_SOFT_FORWARD_GROUND_KB 0x00020465 // (0x065 | ACT_FLAG_MOVING | ACT_FLAG_INVULNERABLE)
#define ACT_GROUND_BONK 0x00020466 // (0x066 | ACT_FLAG_MOVING | ACT_FLAG_INVULNERABLE)
#define ACT_DEATH_EXIT_LAND 0x00020467 // (0x067 | ACT_FLAG_MOVING | ACT_FLAG_INVULNERABLE)
#define ACT_UNUSED_068 0x00000068 // (0x068)
#define ACT_UNUSED_06C 0x0000006C // (0x06C)
#define ACT_UNUSED_06D 0x0000006D // (0x06D)
#define ACT_UNUSED_06E 0x0000006E // (0x06E)
#define ACT_UNUSED_06F 0x0000006F // (0x06F)
#define ACT_JUMP_LAND 0x04000470 // (0x070 | ACT_FLAG_MOVING | ACT_FLAG_ALLOW_FIRST_PERSON)
#define ACT_FREEFALL_LAND 0x04000471 // (0x071 | ACT_FLAG_MOVING | ACT_FLAG_ALLOW_FIRST_PERSON)
#define ACT_DOUBLE_JUMP_LAND 0x04000472 // (0x072 | ACT_FLAG_MOVING | ACT_FLAG_ALLOW_FIRST_PERSON)
#define ACT_SIDE_FLIP_LAND 0x04000473 // (0x073 | ACT_FLAG_MOVING | ACT_FLAG_ALLOW_FIRST_PERSON)
#define ACT_HOLD_JUMP_LAND 0x00000474 // (0x074 | ACT_FLAG_MOVING)
#define ACT_HOLD_FREEFALL_LAND 0x00000475 // (0x075 | ACT_FLAG_MOVING)
#define ACT_QUICKSAND_JUMP_LAND 0x00000476 // (0x076 | ACT_FLAG_MOVING)
#define ACT_HOLD_QUICKSAND_JUMP_LAND 0x00000477 // (0x077 | ACT_FLAG_MOVING)
#define ACT_TRIPLE_JUMP_LAND 0x04000478 // (0x078 | ACT_FLAG_MOVING | ACT_FLAG_ALLOW_FIRST_PERSON)
#define ACT_LONG_JUMP_LAND 0x00000479 // (0x079 | ACT_FLAG_MOVING)
#define ACT_BACKFLIP_LAND 0x0400047A // (0x07A | ACT_FLAG_MOVING | ACT_FLAG_ALLOW_FIRST_PERSON)
#define ACT_UNUSED_07B 0x0000007B // (0x07B)
#define ACT_UNUSED_07C 0x0000007C // (0x07C)
#define ACT_UNUSED_07D 0x0000007D // (0x07D)
#define ACT_UNUSED_07E 0x0000007E // (0x07E)
#define ACT_UNUSED_07F 0x0000007F // (0x07F)
// group 0x080: airborne actions
#define ACT_JUMP 0x03000880 // (0x080 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_CONTROL_JUMP_HEIGHT)
#define ACT_DOUBLE_JUMP 0x03000881 // (0x081 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_CONTROL_JUMP_HEIGHT)
#define ACT_TRIPLE_JUMP 0x01000882 // (0x082 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
#define ACT_BACKFLIP 0x01000883 // (0x083 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
#define ACT_UNUSED_084 0x00000084 // (0x084)
#define ACT_STEEP_JUMP 0x03000885 // (0x085 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_CONTROL_JUMP_HEIGHT)
#define ACT_WALL_KICK_AIR 0x03000886 // (0x086 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_CONTROL_JUMP_HEIGHT)
#define ACT_SIDE_FLIP 0x01000887 // (0x087 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
#define ACT_LONG_JUMP 0x03000888 // (0x088 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_CONTROL_JUMP_HEIGHT)
#define ACT_WATER_JUMP 0x01000889 // (0x089 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
#define ACT_DIVE 0x0188088A // (0x08A | ACT_FLAG_AIR | ACT_FLAG_DIVING | ACT_FLAG_ATTACKING | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
#define ACT_FREEFALL 0x0100088C // (0x08C | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
#define ACT_TOP_OF_POLE_JUMP 0x0300088D // (0x08D | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_CONTROL_JUMP_HEIGHT)
#define ACT_BUTT_SLIDE_AIR 0x0300088E // (0x08E | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_CONTROL_JUMP_HEIGHT)
#define ACT_UNUSED_08F 0x0000008F // (0x08F)
#define ACT_UNUSED_090 0x00000090 // (0x090)
#define ACT_UNUSED_091 0x00000091 // (0x091)
#define ACT_UNUSED_092 0x00000092 // (0x092)
#define ACT_UNUSED_093 0x00000093 // (0x093)
#define ACT_FLYING_TRIPLE_JUMP 0x03000894 // (0x094 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_CONTROL_JUMP_HEIGHT)
#define ACT_UNUSED_095 0x00000095 // (0x095)
#define ACT_UNUSED_096 0x00000096 // (0x096)
#define ACT_UNUSED_097 0x00000097 // (0x097)
#define ACT_SHOT_FROM_CANNON 0x00880898 // (0x098 | ACT_FLAG_AIR | ACT_FLAG_DIVING | ACT_FLAG_ATTACKING)
#define ACT_FLYING 0x10880899 // (0x099 | ACT_FLAG_AIR | ACT_FLAG_DIVING | ACT_FLAG_ATTACKING | ACT_FLAG_SWIMMING_OR_FLYING)
#define ACT_RIDING_SHELL_JUMP 0x0281089A // (0x09A | ACT_FLAG_AIR | ACT_FLAG_RIDING_SHELL | ACT_FLAG_ATTACKING | ACT_FLAG_CONTROL_JUMP_HEIGHT)
#define ACT_RIDING_SHELL_FALL 0x0081089B // (0x09B | ACT_FLAG_AIR | ACT_FLAG_RIDING_SHELL | ACT_FLAG_ATTACKING)
#define ACT_VERTICAL_WIND 0x1008089C // (0x09C | ACT_FLAG_AIR | ACT_FLAG_DIVING | ACT_FLAG_SWIMMING_OR_FLYING)
#define ACT_UNUSED_09D 0x0000009D // (0x09D)
#define ACT_UNUSED_09E 0x0000009E // (0x09E)
#define ACT_UNUSED_09F 0x0000009F // (0x09F)
#define ACT_HOLD_JUMP 0x030008A0 // (0x0A0 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_CONTROL_JUMP_HEIGHT)
#define ACT_HOLD_FREEFALL 0x010008A1 // (0x0A1 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
#define ACT_HOLD_BUTT_SLIDE_AIR 0x010008A2 // (0x0A2 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
#define ACT_HOLD_WATER_JUMP 0x010008A3 // (0x0A3 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
#define ACT_TWIRLING 0x108008A4 // (0x0A4 | ACT_FLAG_AIR | ACT_FLAG_ATTACKING | ACT_FLAG_SWIMMING_OR_FLYING)
#define ACT_FORWARD_ROLLOUT 0x010008A6 // (0x0A6 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
#define ACT_UNUSED_0A5 0x000000A5 // (0x0A5)
#define ACT_AIR_HIT_WALL 0x000008A7 // (0x0A7 | ACT_FLAG_AIR)
#define ACT_RIDING_HOOT 0x000004A8 // (0x0A8 | ACT_FLAG_MOVING)
#define ACT_GROUND_POUND 0x008008A9 // (0x0A9 | ACT_FLAG_AIR | ACT_FLAG_ATTACKING)
#define ACT_SLIDE_KICK 0x018008AA // (0x0AA | ACT_FLAG_AIR | ACT_FLAG_ATTACKING | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
#define ACT_AIR_THROW 0x830008AB // (0x0AB | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_CONTROL_JUMP_HEIGHT | ACT_FLAG_THROWING)
#define ACT_JUMP_KICK 0x018008AC // (0x0AC | ACT_FLAG_AIR | ACT_FLAG_ATTACKING | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
#define ACT_BACKWARD_ROLLOUT 0x010008AD // (0x0AD | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
#define ACT_CRAZY_BOX_BOUNCE 0x000008AE // (0x0AE | ACT_FLAG_AIR)
#define ACT_SPECIAL_TRIPLE_JUMP 0x030008AF // (0x0AF | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_CONTROL_JUMP_HEIGHT)
#define ACT_BACKWARD_AIR_KB 0x010208B0 // (0x0B0 | ACT_FLAG_AIR | ACT_FLAG_INVULNERABLE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
#define ACT_FORWARD_AIR_KB 0x010208B1 // (0x0B1 | ACT_FLAG_AIR | ACT_FLAG_INVULNERABLE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
#define ACT_HARD_FORWARD_AIR_KB 0x010208B2 // (0x0B2 | ACT_FLAG_AIR | ACT_FLAG_INVULNERABLE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
#define ACT_HARD_BACKWARD_AIR_KB 0x010208B3 // (0x0B3 | ACT_FLAG_AIR | ACT_FLAG_INVULNERABLE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
#define ACT_BURNING_JUMP 0x010208B4 // (0x0B4 | ACT_FLAG_AIR | ACT_FLAG_INVULNERABLE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
#define ACT_BURNING_FALL 0x010208B5 // (0x0B5 | ACT_FLAG_AIR | ACT_FLAG_INVULNERABLE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
#define ACT_SOFT_BONK 0x010208B6 // (0x0B6 | ACT_FLAG_AIR | ACT_FLAG_INVULNERABLE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
#define ACT_LAVA_BOOST 0x010208B7 // (0x0B7 | ACT_FLAG_AIR | ACT_FLAG_INVULNERABLE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
#define ACT_GETTING_BLOWN 0x010208B8 // (0x0B8 | ACT_FLAG_AIR | ACT_FLAG_INVULNERABLE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
#define ACT_UNUSED_0B9 0x000000B9 // (0x0B9)
#define ACT_UNUSED_0BC 0x000000BC // (0x0BC)
#define ACT_THROWN_FORWARD 0x010208BD // (0x0BD | ACT_FLAG_AIR | ACT_FLAG_INVULNERABLE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
#define ACT_THROWN_BACKWARD 0x010208BE // (0x0BE | ACT_FLAG_AIR | ACT_FLAG_INVULNERABLE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
#define ACT_UNUSED_0BF 0x000000BF // (0x0BF)
// group 0x0C0: submerged actions
#define ACT_WATER_IDLE 0x380022C0 // (0x0C0 | ACT_FLAG_STATIONARY | ACT_FLAG_SWIMMING | ACT_FLAG_PAUSE_EXIT | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
#define ACT_HOLD_WATER_IDLE 0x380022C1 // (0x0C1 | ACT_FLAG_STATIONARY | ACT_FLAG_SWIMMING | ACT_FLAG_PAUSE_EXIT | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
#define ACT_WATER_ACTION_END 0x300022C2 // (0x0C2 | ACT_FLAG_STATIONARY | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
#define ACT_HOLD_WATER_ACTION_END 0x300022C3 // (0x0C3 | ACT_FLAG_STATIONARY | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
#define ACT_DROWNING 0x300032C4 // (0x0C4 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
#define ACT_BACKWARD_WATER_KB 0x300222C5 // (0x0C5 | ACT_FLAG_STATIONARY | ACT_FLAG_SWIMMING | ACT_FLAG_INVULNERABLE | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
#define ACT_FORWARD_WATER_KB 0x300222C6 // (0x0C6 | ACT_FLAG_STATIONARY | ACT_FLAG_SWIMMING | ACT_FLAG_INVULNERABLE | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
#define ACT_WATER_DEATH 0x300032C7 // (0x0C7 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
#define ACT_WATER_SHOCKED 0x300222C8 // (0x0C8 | ACT_FLAG_STATIONARY | ACT_FLAG_SWIMMING | ACT_FLAG_INVULNERABLE | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
#define ACT_UNUSED_0C9 0x000000C9 // (0x0C9)
#define ACT_UNUSED_0CA 0x000000CA // (0x0CA)
#define ACT_UNUSED_0CB 0x000000CB // (0x0CB)
#define ACT_UNUSED_0CC 0x000000CC // (0x0CC)
#define ACT_UNUSED_0CD 0x000000CD // (0x0CD)
#define ACT_UNUSED_0CE 0x000000CE // (0x0CE)
#define ACT_UNUSED_0CF 0x000000CF // (0x0CF)
#define ACT_BREASTSTROKE 0x300024D0 // (0x0D0 | ACT_FLAG_MOVING | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
#define ACT_SWIMMING_END 0x300024D1 // (0x0D1 | ACT_FLAG_MOVING | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
#define ACT_FLUTTER_KICK 0x300024D2 // (0x0D2 | ACT_FLAG_MOVING | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
#define ACT_HOLD_BREASTSTROKE 0x300024D3 // (0x0D3 | ACT_FLAG_MOVING | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
#define ACT_HOLD_SWIMMING_END 0x300024D4 // (0x0D4 | ACT_FLAG_MOVING | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
#define ACT_HOLD_FLUTTER_KICK 0x300024D5 // (0x0D5 | ACT_FLAG_MOVING | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
#define ACT_WATER_SHELL_SWIMMING 0x300024D6 // (0x0D6 | ACT_FLAG_MOVING | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
#define ACT_UNUSED_0D7 0x000000D7 // (0x0D7)
#define ACT_UNUSED_0D8 0x000000D8 // (0x0D8)
#define ACT_UNUSED_0D9 0x000000D9 // (0x0D9)
#define ACT_UNUSED_0DA 0x000000DA // (0x0DA)
#define ACT_UNUSED_0DB 0x000000DB // (0x0DB)
#define ACT_UNUSED_0DC 0x000000DC // (0x0DC)
#define ACT_UNUSED_0DD 0x000000DD // (0x0DD)
#define ACT_UNUSED_0DE 0x000000DE // (0x0DE)
#define ACT_UNUSED_0DF 0x000000DF // (0x0DF)
#define ACT_WATER_THROW 0x300024E0 // (0x0E0 | ACT_FLAG_MOVING | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
#define ACT_WATER_PUNCH 0x300024E1 // (0x0E1 | ACT_FLAG_MOVING | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
#define ACT_WATER_PLUNGE 0x300022E2 // (0x0E2 | ACT_FLAG_STATIONARY | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
#define ACT_CAUGHT_IN_WHIRLPOOL 0x300222E3 // (0x0E3 | ACT_FLAG_STATIONARY | ACT_FLAG_SWIMMING | ACT_FLAG_INVULNERABLE | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
#define ACT_UNUSED_0E4 0x000000E4 // (0x0E4)
#define ACT_UNUSED_0E5 0x000000E5 // (0x0E5)
#define ACT_UNUSED_0E6 0x000000E6 // (0x0E6)
#define ACT_UNUSED_0E7 0x000000E7 // (0x0E7)
#define ACT_UNUSED_0E8 0x000000E8 // (0x0E8)
#define ACT_UNUSED_0E9 0x000000E9 // (0x0E9)
#define ACT_UNUSED_0EA 0x000000EA // (0x0EA)
#define ACT_UNUSED_0EB 0x000000EB // (0x0EB)
#define ACT_UNUSED_0EC 0x000000EC // (0x0EC)
#define ACT_UNUSED_0ED 0x000000ED // (0x0ED)
#define ACT_UNUSED_0EE 0x000000EE // (0x0EE)
#define ACT_UNUSED_0EF 0x000000EF // (0x0EF)
#define ACT_METAL_WATER_STANDING 0x080042F0 // (0x0F0 | ACT_FLAG_STATIONARY | ACT_FLAG_METAL_WATER | ACT_FLAG_PAUSE_EXIT)
#define ACT_HOLD_METAL_WATER_STANDING 0x080042F1 // (0x0F1 | ACT_FLAG_STATIONARY | ACT_FLAG_METAL_WATER | ACT_FLAG_PAUSE_EXIT)
#define ACT_METAL_WATER_WALKING 0x000044F2 // (0x0F2 | ACT_FLAG_MOVING | ACT_FLAG_METAL_WATER)
#define ACT_HOLD_METAL_WATER_WALKING 0x000044F3 // (0x0F3 | ACT_FLAG_MOVING | ACT_FLAG_METAL_WATER)
#define ACT_METAL_WATER_FALLING 0x000042F4 // (0x0F4 | ACT_FLAG_STATIONARY | ACT_FLAG_METAL_WATER)
#define ACT_HOLD_METAL_WATER_FALLING 0x000042F5 // (0x0F5 | ACT_FLAG_STATIONARY | ACT_FLAG_METAL_WATER)
#define ACT_METAL_WATER_FALL_LAND 0x000042F6 // (0x0F6 | ACT_FLAG_STATIONARY | ACT_FLAG_METAL_WATER)
#define ACT_HOLD_METAL_WATER_FALL_LAND 0x000042F7 // (0x0F7 | ACT_FLAG_STATIONARY | ACT_FLAG_METAL_WATER)
#define ACT_METAL_WATER_JUMP 0x000044F8 // (0x0F8 | ACT_FLAG_MOVING | ACT_FLAG_METAL_WATER)
#define ACT_HOLD_METAL_WATER_JUMP 0x000044F9 // (0x0F9 | ACT_FLAG_MOVING | ACT_FLAG_METAL_WATER)
#define ACT_METAL_WATER_JUMP_LAND 0x000044FA // (0x0FA | ACT_FLAG_MOVING | ACT_FLAG_METAL_WATER)
#define ACT_HOLD_METAL_WATER_JUMP_LAND 0x000044FB // (0x0FB | ACT_FLAG_MOVING | ACT_FLAG_METAL_WATER)
#define ACT_UNUSED_0FC 0x000000FC // (0x0FC)
#define ACT_UNUSED_0FD 0x000000FD // (0x0FD)
#define ACT_UNUSED_0FE 0x000000FE // (0x0FE)
#define ACT_UNUSED_0FF 0x000000FF // (0x0FF)
// group 0x100: cutscene actions
#define ACT_DISAPPEARED 0x00001300 // (0x100 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
#define ACT_INTRO_CUTSCENE 0x04001301 // (0x101 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_ALLOW_FIRST_PERSON)
#define ACT_STAR_DANCE_EXIT 0x00001302 // (0x102 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
#define ACT_STAR_DANCE_WATER 0x00001303 // (0x103 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
#define ACT_FALL_AFTER_STAR_GRAB 0x00001904 // (0x104 | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)
#define ACT_READING_AUTOMATIC_DIALOG 0x20001305 // (0x105 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_WATER_OR_TEXT)
#define ACT_READING_NPC_DIALOG 0x20001306 // (0x106 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_WATER_OR_TEXT)
#define ACT_STAR_DANCE_NO_EXIT 0x00001307 // (0x107 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
#define ACT_READING_SIGN 0x00001308 // (0x108 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
#define ACT_JUMBO_STAR_CUTSCENE 0x00001909 // (0x109 | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)
#define ACT_WAITING_FOR_DIALOG 0x0000130A // (0x10A | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
#define ACT_UNUSED_10B 0x0000010B // (0x10B)
#define ACT_UNUSED_10C 0x0000010C // (0x10C)
#define ACT_UNUSED_10D 0x0000010D // (0x10D)
#define ACT_UNUSED_10E 0x0000010E // (0x10E)
#define ACT_DEBUG_FREE_MOVE 0x0000130F // (0x10F | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
#define ACT_UNUSED_110 0x00000110 // (0x110)
#define ACT_STANDING_DEATH 0x00021311 // (0x111 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_INVULNERABLE)
#define ACT_QUICKSAND_DEATH 0x00021312 // (0x112 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_INVULNERABLE)
#define ACT_ELECTROCUTION 0x00021313 // (0x113 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_INVULNERABLE)
#define ACT_SUFFOCATION 0x00021314 // (0x114 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_INVULNERABLE)
#define ACT_DEATH_ON_STOMACH 0x00021315 // (0x115 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_INVULNERABLE)
#define ACT_DEATH_ON_BACK 0x00021316 // (0x116 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_INVULNERABLE)
#define ACT_EATEN_BY_BUBBA 0x00021317 // (0x117 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_INVULNERABLE)
#define ACT_END_PEACH_CUTSCENE 0x00001918 // (0x118 | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)
#define ACT_CREDITS_CUTSCENE 0x00001319 // (0x119 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
#define ACT_END_WAVING_CUTSCENE 0x0000131A // (0x11A | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
#define ACT_UNUSED_11B 0x0000011B // (0x11B)
#define ACT_UNUSED_11C 0x0000011C // (0x11C)
#define ACT_UNUSED_11D 0x0000011D // (0x11D)
#define ACT_UNUSED_11E 0x0000011E // (0x11E)
#define ACT_UNUSED_11F 0x0000011F // (0x11F)
#define ACT_PULLING_DOOR 0x00001320 // (0x120 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
#define ACT_PUSHING_DOOR 0x00001321 // (0x121 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
#define ACT_WARP_DOOR_SPAWN 0x00001322 // (0x122 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
#define ACT_EMERGE_FROM_PIPE 0x00001923 // (0x123 | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)
#define ACT_SPAWN_SPIN_AIRBORNE 0x00001924 // (0x124 | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)
#define ACT_SPAWN_SPIN_LANDING 0x00001325 // (0x125 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
#define ACT_EXIT_AIRBORNE 0x00001926 // (0x126 | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)
#define ACT_EXIT_LAND_SAVE_DIALOG 0x00001327 // (0x127 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
#define ACT_DEATH_EXIT 0x00001928 // (0x128 | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)
#define ACT_UNUSED_DEATH_EXIT 0x00001929 // (0x129 | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)
#define ACT_FALLING_DEATH_EXIT 0x0000192A // (0x12A | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)
#define ACT_SPECIAL_EXIT_AIRBORNE 0x0000192B // (0x12B | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)
#define ACT_SPECIAL_DEATH_EXIT 0x0000192C // (0x12C | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)
#define ACT_FALLING_EXIT_AIRBORNE 0x0000192D // (0x12D | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)
#define ACT_UNLOCKING_KEY_DOOR 0x0000132E // (0x12E | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
#define ACT_UNLOCKING_STAR_DOOR 0x0000132F // (0x12F | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
#define ACT_UNUSED_130 0x00000130 // (0x130)
#define ACT_ENTERING_STAR_DOOR 0x00001331 // (0x131 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
#define ACT_SPAWN_NO_SPIN_AIRBORNE 0x00001932 // (0x132 | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)
#define ACT_SPAWN_NO_SPIN_LANDING 0x00001333 // (0x133 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
#define ACT_BBH_ENTER_JUMP 0x00001934 // (0x134 | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)
#define ACT_BBH_ENTER_SPIN 0x00001535 // (0x135 | ACT_FLAG_MOVING | ACT_FLAG_INTANGIBLE)
#define ACT_TELEPORT_FADE_OUT 0x00001336 // (0x136 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
#define ACT_TELEPORT_FADE_IN 0x00001337 // (0x137 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
#define ACT_SHOCKED 0x00020338 // (0x138 | ACT_FLAG_STATIONARY | ACT_FLAG_INVULNERABLE)
#define ACT_SQUISHED 0x00020339 // (0x139 | ACT_FLAG_STATIONARY | ACT_FLAG_INVULNERABLE)
#define ACT_HEAD_STUCK_IN_GROUND 0x0002033A // (0x13A | ACT_FLAG_STATIONARY | ACT_FLAG_INVULNERABLE)
#define ACT_BUTT_STUCK_IN_GROUND 0x0002033B // (0x13B | ACT_FLAG_STATIONARY | ACT_FLAG_INVULNERABLE)
#define ACT_FEET_STUCK_IN_GROUND 0x0002033C // (0x13C | ACT_FLAG_STATIONARY | ACT_FLAG_INVULNERABLE)
#define ACT_PUTTING_ON_CAP 0x0000133D // (0x13D | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
#define ACT_UNUSED_13E 0x0000013E // (0x13E)
#define ACT_UNUSED_13F 0x0000013F // (0x13F)
// group 0x140: "automatic" actions
#define ACT_HOLDING_POLE 0x08100340 // (0x140 | ACT_FLAG_STATIONARY | ACT_FLAG_ON_POLE | ACT_FLAG_PAUSE_EXIT)
#define ACT_GRAB_POLE_SLOW 0x00100341 // (0x141 | ACT_FLAG_STATIONARY | ACT_FLAG_ON_POLE)
#define ACT_GRAB_POLE_FAST 0x00100342 // (0x142 | ACT_FLAG_STATIONARY | ACT_FLAG_ON_POLE)
#define ACT_CLIMBING_POLE 0x00100343 // (0x143 | ACT_FLAG_STATIONARY | ACT_FLAG_ON_POLE)
#define ACT_TOP_OF_POLE_TRANSITION 0x00100344 // (0x144 | ACT_FLAG_STATIONARY | ACT_FLAG_ON_POLE)
#define ACT_TOP_OF_POLE 0x00100345 // (0x145 | ACT_FLAG_STATIONARY | ACT_FLAG_ON_POLE)
#define ACT_UNUSED_146 0x00000146 // (0x146)
#define ACT_UNUSED_147 0x00000147 // (0x147)
#define ACT_START_HANGING 0x08200348 // (0x148 | ACT_FLAG_STATIONARY | ACT_FLAG_HANGING | ACT_FLAG_PAUSE_EXIT)
#define ACT_HANGING 0x00200349 // (0x149 | ACT_FLAG_STATIONARY | ACT_FLAG_HANGING)
#define ACT_HANG_MOVING 0x0020054A // (0x14A | ACT_FLAG_MOVING | ACT_FLAG_HANGING)
#define ACT_LEDGE_GRAB 0x0800034B // (0x14B | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)
#define ACT_LEDGE_CLIMB_SLOW_1 0x0000054C // (0x14C | ACT_FLAG_MOVING)
#define ACT_LEDGE_CLIMB_SLOW_2 0x0000054D // (0x14D | ACT_FLAG_MOVING)
#define ACT_LEDGE_CLIMB_DOWN 0x0000054E // (0x14E | ACT_FLAG_MOVING)
#define ACT_LEDGE_CLIMB_FAST 0x0000054F // (0x14F | ACT_FLAG_MOVING)
#define ACT_UNUSED_150 0x00000150 // (0x150)
#define ACT_UNUSED_151 0x00000151 // (0x151)
#define ACT_UNUSED_152 0x00000152 // (0x152)
#define ACT_UNUSED_153 0x00000153 // (0x153)
#define ACT_UNUSED_154 0x00000154 // (0x154)
#define ACT_UNUSED_155 0x00000155 // (0x155)
#define ACT_UNUSED_156 0x00000156 // (0x156)
#define ACT_UNUSED_157 0x00000157 // (0x157)
#define ACT_UNUSED_158 0x00000158 // (0x158)
#define ACT_UNUSED_159 0x00000159 // (0x159)
#define ACT_UNUSED_15A 0x0000015A // (0x15A)
#define ACT_UNUSED_15B 0x0000015B // (0x15B)
#define ACT_UNUSED_15C 0x0000015C // (0x15C)
#define ACT_UNUSED_15D 0x0000015D // (0x15D)
#define ACT_UNUSED_15E 0x0000015E // (0x15E)
#define ACT_UNUSED_15F 0x0000015F // (0x15F)
#define ACT_UNUSED_160 0x00000160 // (0x160)
#define ACT_UNUSED_161 0x00000161 // (0x161)
#define ACT_UNUSED_162 0x00000162 // (0x162)
#define ACT_UNUSED_163 0x00000163 // (0x163)
#define ACT_UNUSED_164 0x00000164 // (0x164)
#define ACT_UNUSED_165 0x00000165 // (0x165)
#define ACT_UNUSED_166 0x00000166 // (0x166)
#define ACT_UNUSED_167 0x00000167 // (0x167)
#define ACT_UNUSED_168 0x00000168 // (0x168)
#define ACT_UNUSED_169 0x00000169 // (0x169)
#define ACT_UNUSED_16A 0x0000016A // (0x16A)
#define ACT_UNUSED_16B 0x0000016B // (0x16B)
#define ACT_UNUSED_16C 0x0000016C // (0x16C)
#define ACT_UNUSED_16D 0x0000016D // (0x16D)
#define ACT_UNUSED_16E 0x0000016E // (0x16E)
#define ACT_UNUSED_16F 0x0000016F // (0x16F)
#define ACT_GRABBED 0x00020370 // (0x170 | ACT_FLAG_STATIONARY | ACT_FLAG_INVULNERABLE)
#define ACT_IN_CANNON 0x00001371 // (0x171 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
#define ACT_TORNADO_TWIRLING 0x10020372 // (0x172 | ACT_FLAG_STATIONARY | ACT_FLAG_INVULNERABLE | ACT_FLAG_SWIMMING_OR_FLYING)
#define ACT_UNUSED_173 0x00000173 // (0x173)
#define ACT_UNUSED_174 0x00000174 // (0x174)
#define ACT_UNUSED_175 0x00000175 // (0x175)
#define ACT_UNUSED_176 0x00000176 // (0x176)
#define ACT_UNUSED_177 0x00000177 // (0x177)
#define ACT_UNUSED_178 0x00000178 // (0x178)
#define ACT_UNUSED_179 0x00000179 // (0x179)
#define ACT_UNUSED_17A 0x0000017A // (0x17A)
#define ACT_UNUSED_17B 0x0000017B // (0x17B)
#define ACT_UNUSED_17C 0x0000017C // (0x17C)
#define ACT_UNUSED_17D 0x0000017D // (0x17D)
#define ACT_UNUSED_17E 0x0000017E // (0x17E)
#define ACT_UNUSED_17F 0x0000017F // (0x17F)
// group 0x180: object actions
#define ACT_PUNCHING 0x00800380 // (0x180 | ACT_FLAG_STATIONARY | ACT_FLAG_ATTACKING)
#define ACT_UNUSED_181 0x00000181 // (0x181)
#define ACT_UNUSED_182 0x00000182 // (0x182)
#define ACT_PICKING_UP 0x00000383 // (0x183 | ACT_FLAG_STATIONARY)
#define ACT_UNUSED_184 0x00000184 // (0x184)
#define ACT_DIVE_PICKING_UP 0x00000385 // (0x185 | ACT_FLAG_STATIONARY)
#define ACT_STOMACH_SLIDE_STOP 0x00000386 // (0x186 | ACT_FLAG_STATIONARY)
#define ACT_PLACING_DOWN 0x00000387 // (0x187 | ACT_FLAG_STATIONARY)
#define ACT_THROWING 0x80000588 // (0x188 | ACT_FLAG_MOVING | ACT_FLAG_THROWING)
#define ACT_HEAVY_THROW 0x80000589 // (0x189 | ACT_FLAG_MOVING | ACT_FLAG_THROWING)
#define ACT_UNUSED_18A 0x0000018A // (0x18A)
#define ACT_UNUSED_18B 0x0000018B // (0x18B)
#define ACT_UNUSED_18C 0x0000018C // (0x18C)
#define ACT_UNUSED_18D 0x0000018D // (0x18D)
#define ACT_UNUSED_18E 0x0000018E // (0x18E)
#define ACT_UNUSED_18F 0x0000018F // (0x18F)
#define ACT_PICKING_UP_BOWSER 0x00000390 // (0x190 | ACT_FLAG_STATIONARY)
#define ACT_HOLDING_BOWSER 0x00000391 // (0x191 | ACT_FLAG_STATIONARY)
#define ACT_RELEASING_BOWSER 0x00000392 // (0x192 | ACT_FLAG_STATIONARY)
#define ACT_UNUSED_193 0x00000193 // (0x193)
#define ACT_UNUSED_194 0x00000194 // (0x194)
#define ACT_UNUSED_195 0x00000195 // (0x195)
#define ACT_UNUSED_196 0x00000196 // (0x196)
#define ACT_UNUSED_197 0x00000197 // (0x197)
#define ACT_UNUSED_198 0x00000198 // (0x198)
#define ACT_UNUSED_199 0x00000199 // (0x199)
#define ACT_UNUSED_19A 0x0000019A // (0x19A)
#define ACT_UNUSED_19B 0x0000019B // (0x19B)
#define ACT_UNUSED_19C 0x0000019C // (0x19C)
#define ACT_UNUSED_19D 0x0000019D // (0x19D)
#define ACT_UNUSED_19E 0x0000019E // (0x19E)
#define ACT_UNUSED_19F 0x0000019F // (0x19F)
#define ACT_UNUSED_1A0 0x000001A0 // (0x1A0)
#define ACT_UNUSED_1A1 0x000001A1 // (0x1A1)
#define ACT_UNUSED_1A2 0x000001A2 // (0x1A2)
#define ACT_UNUSED_1A3 0x000001A3 // (0x1A3)
#define ACT_UNUSED_1A4 0x000001A4 // (0x1A4)
#define ACT_UNUSED_1A5 0x000001A5 // (0x1A5)
#define ACT_UNUSED_1A6 0x000001A6 // (0x1A6)
#define ACT_UNUSED_1A7 0x000001A7 // (0x1A7)
#define ACT_UNUSED_1A8 0x000001A8 // (0x1A8)
#define ACT_UNUSED_1A9 0x000001A9 // (0x1A9)
#define ACT_UNUSED_1AA 0x000001AA // (0x1AA)
#define ACT_UNUSED_1AB 0x000001AB // (0x1AB)
#define ACT_UNUSED_1AC 0x000001AC // (0x1AC)
#define ACT_UNUSED_1AD 0x000001AD // (0x1AD)
#define ACT_UNUSED_1AE 0x000001AE // (0x1AE)
#define ACT_UNUSED_1AF 0x000001AF // (0x1AF)
#define ACT_UNUSED_1B0 0x000001B0 // (0x1B0)
#define ACT_UNUSED_1B1 0x000001B1 // (0x1B1)
#define ACT_UNUSED_1B2 0x000001B2 // (0x1B2)
#define ACT_UNUSED_1B3 0x000001B3 // (0x1B3)
#define ACT_UNUSED_1B4 0x000001B4 // (0x1B4)
#define ACT_UNUSED_1B5 0x000001B5 // (0x1B5)
#define ACT_UNUSED_1B6 0x000001B6 // (0x1B6)
#define ACT_UNUSED_1B7 0x000001B7 // (0x1B7)
#define ACT_UNUSED_1B8 0x000001B8 // (0x1B8)
#define ACT_UNUSED_1B9 0x000001B9 // (0x1B9)
#define ACT_UNUSED_1BA 0x000001BA // (0x1BA)
#define ACT_UNUSED_1BB 0x000001BB // (0x1BB)
#define ACT_UNUSED_1BC 0x000001BC // (0x1BC)
#define ACT_UNUSED_1BD 0x000001BD // (0x1BD)
#define ACT_UNUSED_1BE 0x000001BE // (0x1BE)
#define ACT_UNUSED_1BF 0x000001BF // (0x1BF)
// group 0x1C0: custom actions
// 0x1C0 - 0x1FF
/*
this input mask is unused by the controller,
but END_DEMO is used internally to signal
the demo to end. This button cannot
be pressed normally by a controller.
*/
#define END_DEMO (1 << 7)
#define VALID_BUTTONS (A_BUTTON | B_BUTTON | Z_TRIG | START_BUTTON | \
U_JPAD | D_JPAD | L_JPAD | R_JPAD | \
L_TRIG | R_TRIG | \
U_CBUTTONS | D_CBUTTONS | L_CBUTTONS | R_CBUTTONS )
#define C_BUTTONS (U_CBUTTONS | D_CBUTTONS | L_CBUTTONS | R_CBUTTONS )
#define JPAD_BUTTONS (U_JPAD | D_JPAD | L_JPAD | R_JPAD )
#endif // SM64_H