Super Mario 64s source code (from a leak on 4chan so be careful)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

526 lines
39 KiB

5 years ago
  1. #ifndef _SM64_H_
  2. #define _SM64_H_
  3. // Global header for Super Mario 64
  4. #define static
  5. #include "types.h"
  6. #include "config.h"
  7. #include "object_fields.h"
  8. #include "object_constants.h"
  9. #include "audio_defines.h"
  10. #include "model_ids.h"
  11. #include "mario_animation_ids.h"
  12. #include "mario_geo_switch_case_ids.h"
  13. #include "unused.h"
  14. // Reduces big ifdefs that use different values
  15. #ifdef VERSION_JP
  16. #define JP_US_DEF(jp , us) jp
  17. #else
  18. #define JP_US_DEF(jp , us) us
  19. #endif
  20. // Use these macros in places where aliasing is used to split a variable into
  21. // smaller parts
  22. #if ENDIAN_IND
  23. #define GET_HIGH_U16_OF_32(var) ((u16)((var) >> 16))
  24. #define GET_HIGH_S16_OF_32(var) ((s16)((var) >> 16))
  25. #define GET_LOW_U16_OF_32(var) ((u16)((var) & 0xFFFF))
  26. #define GET_LOW_S16_OF_32(var) ((s16)((var) & 0xFFFF))
  27. #define SET_HIGH_U16_OF_32(var, val) ((var) = ((var) & 0xFFFF) | ((val) << 16))
  28. #define SET_HIGH_S16_OF_32(var, val) ((var) = ((var) & 0xFFFF) | ((val) << 16))
  29. #else
  30. #define GET_HIGH_U16_OF_32(var) (((u16 *)&(var))[0])
  31. #define GET_HIGH_S16_OF_32(var) (((s16 *)&(var))[0])
  32. #define GET_LOW_U16_OF_32(var) (((u16 *)&(var))[1])
  33. #define GET_LOW_S16_OF_32(var) (((s16 *)&(var))[1])
  34. #define SET_HIGH_U16_OF_32(var, val) ((((u16 *)&(var))[0]) = (val))
  35. #define SET_HIGH_S16_OF_32(var, val) ((((s16 *)&(var))[0]) = (val))
  36. #endif
  37. #define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0]))
  38. #define SURFACE_DEFAULT 0x0000
  39. #define SURFACE_LAVA 0x0001
  40. #define SURFACE_0004 0x0004 //Unused?
  41. #define SURFACE_HANGABLE 0x0005
  42. #define SURFACE_SLOW 0x0009 //Unused?
  43. #define SURFACE_DEATH_PLANE 0x000A
  44. #define SURFACE_000B 0x000B //Camera
  45. #define SURFACE_FLOWING_WATER 0x000E
  46. #define SURFACE_0012 0x0012 //Intangible, separates rooms in BBH
  47. #define SURFACE_SLIDE 0x0013
  48. #define SURFACE_SLIPPERY 0x0014
  49. #define SURFACE_NOT_SLIPPERY 0x0015
  50. #define SURFACE_001A 0x001A // Noise/Merry-Go-Round
  51. #define SURFACE_INSTANT_WARP_0 0x001B
  52. #define SURFACE_001C 0x001C
  53. #define SURFACE_0020 0x0020 //Unused completely, does this need to be here?
  54. #define SURFACE_SHALLOW_QUICKSAND 0x0021
  55. #define SURFACE_DEEP_QUICKSAND 0x0022
  56. #define SURFACE_INSTANT_QUICKSAND 0x0023
  57. #define SURFACE_DEEP_MOVING_QUICKSAND 0x0024
  58. #define SURFACE_SHALLOW_MOVING_QUICKSAND 0x0025
  59. #define SURFACE_QUICKSAND 0x0026
  60. #define SURFACE_MOVING_QUICKSAND 0x0027
  61. #define SURFACE_0028 0x0028 //Camera
  62. #define SURFACE_0029 0x0029 //Default with noise
  63. #define SURFACE_002A 0x002A //Slippery with noise
  64. #define SURFACE_HORIZONTAL_WIND 0x002C
  65. #define SURFACE_INSTANT_MOVING_QUICKSAND 0x002D
  66. #define SURFACE_ICE 0x002E
  67. #define SURFACE_TOTWC_ENTRANCE 0x002F
  68. #define SURFACE_HARD 0x0030
  69. #define SURFACE_WARP 0x0032
  70. #define SURFACE_TIMER_START 0x0033
  71. #define SURFACE_TIMER_END 0x0034
  72. #define SURFACE_HARD_SLIPPERY 0x0035
  73. #define SURFACE_HARD_SLIDE 0x0036
  74. #define SURFACE_HARD_NOT_SLIPPERY 0x0037
  75. #define SURFACE_VERTICAL_WIND 0x0038
  76. #define SURFACE_BOSS_FIGHT_CAMERA 0x0065 //Camera
  77. #define SURFACE_0066 0x0066 //Camera
  78. #define SURFACE_0069 0x0069 //Camera
  79. #define SURFACE_006E 0x006E //Camera
  80. #define SURFACE_006F 0x006F //Camera
  81. #define SURFACE_0070 0x0070 //Camera
  82. #define SURFACE_CAMERA_BOUNDARY 0x0072
  83. #define SURFACE_0073 0x0073 //Slide with noise, unused
  84. #define SURFACE_0074 0x0074 //Slide with noise, unused
  85. #define SURFACE_0075 0x0075 //Slide with noise
  86. #define SURFACE_0076 0x0076 //Flag?
  87. #define SURFACE_0077 0x0077 //Unused?
  88. #define SURFACE_0078 0x0078 //Slide Surface?
  89. #define SURFACE_0079 0x0079 //Camera
  90. #define SURFACE_SWITCH 0x007A
  91. #define SURFACE_VANISH_CAP_PASSABLE 0x007B
  92. #define SURFACE_PAINTING_WARP_0 0x00D3
  93. #define SURFACE_TTC_PAINTING_1 0x00F4
  94. #define SURFACE_TTC_PAINTING_2 0x00F5
  95. #define SURFACE_TTC_PAINTING_3 0x00F6
  96. #define SURFACE_UNDER_TRAP_DOOR 0x00FF
  97. #define SURFACE_IS_QUICKSAND(cmd) (cmd >= 0x21 && cmd < 0x28) //Doesn't include SURFACE_INSTANT_MOVING_QUICKSAND
  98. #define SURFACE_IS_NOT_HARD(cmd) (cmd != SURFACE_HARD && \
  99. !(cmd >= 0x35 && cmd <= 0x37))
  100. #define SURFACE_IS_PAINTING_WARP(cmd) (cmd >= 0xD3 && cmd < 0xFD)
  101. #define SURFACE_CLASS_SLIDE 0x0013
  102. #define SURFACE_CLASS_SLIPPERY 0x0014
  103. #define SURFACE_CLASS_NOT_SLIPPERY 0x0015
  104. #define SURFACE_CLASS_DEFAULT 0x0000
  105. #define SURFACE_FLAG_DYNAMIC (1 << 0)
  106. #define SURFACE_FLAG_1 (1 << 1)
  107. #define SURFACE_FLAG_X_PROJECTION (1 << 3)
  108. //These are effectively special "surface" types like those defined higher
  109. #define TERRAIN_LOAD_VERTICES 0x0040 //Begins vertices list for collision triangles
  110. #define TERRAIN_LOAD_CONTINUE 0x0041
  111. #define TERRAIN_LOAD_END 0x0042
  112. #define TERRAIN_LOAD_OBJECTS 0x0043 //Loads in certain objects for level start
  113. #define TERRAIN_LOAD_WATER 0x0044 //Loads water/HMC gas
  114. #define TERRAIN_LOAD_IS_SURFACE_TYPE_LOW(cmd) (cmd < 0x40)
  115. #define TERRAIN_LOAD_IS_SURFACE_TYPE_HIGH(cmd) (cmd >= 0x65)
  116. #define TERRAIN_GRASS 0x0000
  117. #define TERRAIN_DEFAULT 0x0001
  118. #define TERRAIN_SNOW 0x0002
  119. #define TERRAIN_SAND 0x0003
  120. #define TERRAIN_SPOOKY 0x0004
  121. #define TERRAIN_WATER 0x0005
  122. #define TERRAIN_SLIDE 0x0006
  123. #define TERRAIN_METAL 0x0007
  124. #define INPUT_NONZERO_ANALOG 0x0001
  125. #define INPUT_A_PRESSED 0x0002
  126. #define INPUT_OFF_FLOOR 0x0004
  127. #define INPUT_ABOVE_SLIDE 0x0008
  128. #define INPUT_FIRST_PERSON 0x0010
  129. #define INPUT_UNKNOWN_5 0x0020
  130. #define INPUT_SQUISHED 0x0040
  131. #define INPUT_A_DOWN 0x0080
  132. #define INPUT_UNKNOWN_8 0x0100
  133. #define INPUT_IN_WATER 0x0200
  134. #define INPUT_UNKNOWN_10 0x0400
  135. #define INPUT_INTERACT_OBJ_GRABBABLE 0x0800
  136. #define INPUT_UNKNOWN_12 0x1000
  137. #define INPUT_B_PRESSED 0x2000
  138. #define INPUT_Z_DOWN 0x4000
  139. #define INPUT_Z_PRESSED 0x8000
  140. #define GROUND_STEP_LEFT_GROUND 0
  141. #define GROUND_STEP_NONE 1
  142. #define GROUND_STEP_HIT_WALL 2
  143. #define GROUND_STEP_HIT_WALL_STOP_QSTEPS 2
  144. #define GROUND_STEP_HIT_WALL_CONTINUE_QSTEPS 3
  145. #define AIR_STEP_CHECK_LEDGE_GRAB 0x00000001
  146. #define AIR_STEP_CHECK_HANG 0x00000002
  147. #define AIR_STEP_NONE 0
  148. #define AIR_STEP_LANDED 1
  149. #define AIR_STEP_HIT_WALL 2
  150. #define AIR_STEP_GRABBED_LEDGE 3
  151. #define AIR_STEP_GRABBED_CEILING 4
  152. #define AIR_STEP_HIT_LAVA_WALL 6
  153. #define WATER_STEP_NONE 0
  154. #define WATER_STEP_HIT_FLOOR 1
  155. #define WATER_STEP_HIT_CEILING 2
  156. #define WATER_STEP_CANCELLED 3
  157. #define WATER_STEP_HIT_WALL 4
  158. #define PARTICLE_DUST /* 0x00000001 */ (1 << 0)
  159. #define PARTICLE_1 /* 0x00000002 */ (1 << 1)
  160. #define PARTICLE_2 /* 0x00000004 */ (1 << 2)
  161. #define PARTICLE_SPARKLES /* 0x00000008 */ (1 << 3)
  162. #define PARTICLE_4 /* 0x00000010 */ (1 << 4)
  163. #define PARTICLE_5 /* 0x00000020 */ (1 << 5)
  164. #define PARTICLE_6 /* 0x00000040 */ (1 << 6)
  165. #define PARTICLE_7 /* 0x00000080 */ (1 << 7)
  166. #define PARTICLE_8 /* 0x00000100 */ (1 << 8)
  167. #define PARTICLE_9 /* 0x00000200 */ (1 << 9)
  168. #define PARTICLE_10 /* 0x00000400 */ (1 << 10)
  169. #define PARTICLE_11 /* 0x00000800 */ (1 << 11)
  170. #define PARTICLE_12 /* 0x00001000 */ (1 << 12)
  171. #define PARTICLE_LEAVES /* 0x00002000 */ (1 << 13)
  172. #define PARTICLE_14 /* 0x00004000 */ (1 << 14)
  173. #define PARTICLE_15 /* 0x00008000 */ (1 << 15)
  174. #define PARTICLE_16 /* 0x00010000 */ (1 << 16)
  175. #define PARTICLE_17 /* 0x00020000 */ (1 << 17)
  176. #define PARTICLE_18 /* 0x00040000 */ (1 << 18)
  177. #define PARTICLE_19 /* 0x00080000 */ (1 << 19)
  178. #define MARIO_UNKNOWN_00 0x00000001
  179. #define MARIO_VANISH_CAP 0x00000002
  180. #define MARIO_METAL_CAP 0x00000004
  181. #define MARIO_WING_CAP 0x00000008
  182. #define MARIO_CAP_ON_HEAD 0x00000010
  183. #define MARIO_CAP_IN_HAND 0x00000020
  184. #define MARIO_UNKNOWN_06 0x00000040
  185. #define MARIO_TELEPORTING 0x00000080
  186. #define MARIO_UNKNOWN_08 0x00000100
  187. #define MARIO_UNKNOWN_16 0x00010000
  188. #define MARIO_UNKNOWN_17 0x00020000
  189. #define MARIO_UNKNOWN_18 0x00040000
  190. #define MARIO_PUNCHING 0x00100000
  191. #define MARIO_KICKING 0x00200000
  192. #define MARIO_TRIPPING 0x00400000
  193. #define MARIO_UNKNOWN_25 0x02000000
  194. #define MARIO_UNKNOWN_30 0x40000000
  195. #define MARIO_UNKNOWN_31 0x80000000
  196. #define MARIO_CAP_FLAGS 0x0000001F
  197. #define ACT_ID_MASK 0x000001FF
  198. #define ACT_GROUP_MASK 0x000001C0
  199. #define ACT_GROUP_STATIONARY /* 0x00000000 */ (0 << 6)
  200. #define ACT_GROUP_MOVING /* 0x00000040 */ (1 << 6)
  201. #define ACT_GROUP_AIRBORNE /* 0x00000080 */ (2 << 6)
  202. #define ACT_GROUP_SUBMERGED /* 0x000000C0 */ (3 << 6)
  203. #define ACT_GROUP_CUTSCENE /* 0x00000100 */ (4 << 6)
  204. #define ACT_GROUP_AUTOMATIC /* 0x00000140 */ (5 << 6)
  205. #define ACT_GROUP_OBJECT /* 0x00000180 */ (6 << 6)
  206. #define ACT_FLAG_STATIONARY /* 0x00000200 */ (1 << 9)
  207. #define ACT_FLAG_MOVING /* 0x00000400 */ (1 << 10)
  208. #define ACT_FLAG_AIR /* 0x00000800 */ (1 << 11)
  209. #define ACT_FLAG_INTANGIBLE /* 0x00001000 */ (1 << 12)
  210. #define ACT_FLAG_SWIMMING /* 0x00002000 */ (1 << 13)
  211. #define ACT_FLAG_METAL_WATER /* 0x00004000 */ (1 << 14)
  212. #define ACT_FLAG_SHORT_HITBOX /* 0x00008000 */ (1 << 15)
  213. #define ACT_FLAG_RIDING_SHELL /* 0x00010000 */ (1 << 16)
  214. #define ACT_FLAG_INVULNERABLE /* 0x00020000 */ (1 << 17)
  215. #define ACT_FLAG_BUTT_OR_STOMACH_SLIDE /* 0x00040000 */ (1 << 18)
  216. #define ACT_FLAG_DIVING /* 0x00080000 */ (1 << 19)
  217. #define ACT_FLAG_ON_POLE /* 0x00100000 */ (1 << 20)
  218. #define ACT_FLAG_HANGING /* 0x00200000 */ (1 << 21)
  219. #define ACT_FLAG_IDLE /* 0x00400000 */ (1 << 22)
  220. #define ACT_FLAG_ATTACKING /* 0x00800000 */ (1 << 23)
  221. #define ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION /* 0x01000000 */ (1 << 24)
  222. #define ACT_FLAG_CONTROL_JUMP_HEIGHT /* 0x02000000 */ (1 << 25)
  223. #define ACT_FLAG_ALLOW_FIRST_PERSON /* 0x04000000 */ (1 << 26)
  224. #define ACT_FLAG_PAUSE_EXIT /* 0x08000000 */ (1 << 27)
  225. #define ACT_FLAG_SWIMMING_OR_FLYING /* 0x10000000 */ (1 << 28) // not checked by game
  226. #define ACT_FLAG_WATER_OR_TEXT /* 0x20000000 */ (1 << 29) // not checked by game
  227. #define ACT_FLAG_THROWING /* 0x80000000 */ (1 << 31)
  228. #define ACT_UNINITIALIZED 0x00000000 // (0x000)
  229. // group 0x000: stationary actions
  230. #define ACT_IDLE 0x0C400201 // (0x001 | ACT_FLAG_STATIONARY | ACT_FLAG_IDLE | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
  231. #define ACT_START_SLEEPING 0x0C400202 // (0x002 | ACT_FLAG_STATIONARY | ACT_FLAG_IDLE | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
  232. #define ACT_SLEEPING 0x0C000203 // (0x003 | ACT_FLAG_STATIONARY | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
  233. #define ACT_WAKING_UP 0x0C000204 // (0x004 | ACT_FLAG_STATIONARY | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
  234. #define ACT_PANTING 0x0C400205 // (0x005 | ACT_FLAG_STATIONARY | ACT_FLAG_IDLE | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
  235. #define ACT_UNKNOWN_006 0x08000206 // (0x006 | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)
  236. #define ACT_UNKNOWN_007 0x08000207 // (0x007 | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)
  237. #define ACT_UNKNOWN_008 0x08000208 // (0x008 | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)
  238. #define ACT_STANDING_AGAINST_WALL 0x0C400209 // (0x009 | ACT_FLAG_STATIONARY | ACT_FLAG_IDLE | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
  239. #define ACT_COUGHING 0x0C40020A // (0x00A | ACT_FLAG_STATIONARY | ACT_FLAG_IDLE | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
  240. #define ACT_SHIVERING 0x0C40020B // (0x00B | ACT_FLAG_STATIONARY | ACT_FLAG_IDLE | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
  241. #define ACT_IN_QUICKSAND 0x0002020D // (0x00D | ACT_FLAG_STATIONARY | ACT_FLAG_INVULNERABLE)
  242. #define ACT_CROUCHING 0x0C008220 // (0x020 | ACT_FLAG_STATIONARY | ACT_FLAG_SHORT_HITBOX | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
  243. #define ACT_START_CROUCHING 0x0C008221 // (0x021 | ACT_FLAG_STATIONARY | ACT_FLAG_SHORT_HITBOX | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
  244. #define ACT_UNKNOWN_022 0x0C008222 // (0x022 | ACT_FLAG_STATIONARY | ACT_FLAG_SHORT_HITBOX | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
  245. #define ACT_START_CRAWLING 0x0C008223 // (0x023 | ACT_FLAG_STATIONARY | ACT_FLAG_SHORT_HITBOX | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
  246. #define ACT_UNKNOWN_024 0x0C008224 // (0x024 | ACT_FLAG_STATIONARY | ACT_FLAG_SHORT_HITBOX | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
  247. #define ACT_SLIDE_KICK_SLIDE_STOP 0x08000225 // (0x025 | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)
  248. #define ACT_UNKNOWN_026 0x00020226 // (0x026 | ACT_FLAG_STATIONARY | ACT_FLAG_INVULNERABLE)
  249. #define ACT_FIRST_PERSON 0x0C000227 // (0x027 | ACT_FLAG_STATIONARY | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
  250. #define ACT_BACKFLIP_LAND_STOP 0x0800022F // (0x02F | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)
  251. #define ACT_JUMP_LAND_STOP 0x0C000230 // (0x030 | ACT_FLAG_STATIONARY | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
  252. #define ACT_DOUBLE_JUMP_LAND_STOP 0x0C000231 // (0x031 | ACT_FLAG_STATIONARY | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
  253. #define ACT_FREEFALL_LAND_STOP 0x0C000232 // (0x032 | ACT_FLAG_STATIONARY | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
  254. #define ACT_SIDE_FLIP_LAND_STOP 0x0C000233 // (0x033 | ACT_FLAG_STATIONARY | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
  255. #define ACT_UNKNOWN_034 0x08000234 // (0x034 | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)
  256. #define ACT_UNKNOWN_035 0x08000235 // (0x035 | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)
  257. #define ACT_AIR_THROW_LAND 0x80000A36 // (0x036 | ACT_FLAG_STATIONARY | ACT_FLAG_AIR | ACT_FLAG_THROWING)
  258. #define ACT_TWIRL_LAND 0x18800238 // (0x038 | ACT_FLAG_STATIONARY | ACT_FLAG_ATTACKING | ACT_FLAG_PAUSE_EXIT | ACT_FLAG_SWIMMING_OR_FLYING)
  259. #define ACT_LAVA_BOOST_LAND 0x08000239 // (0x039 | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)
  260. #define ACT_TRIPLE_JUMP_LAND_STOP 0x0800023A // (0x03A | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)
  261. #define ACT_LONG_JUMP_LAND_STOP 0x0800023B // (0x03B | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)
  262. #define ACT_GROUND_POUND_LAND 0x0080023C // (0x03C | ACT_FLAG_STATIONARY | ACT_FLAG_ATTACKING)
  263. #define ACT_BRAKING_STOP 0x0C00023D // (0x03D | ACT_FLAG_STATIONARY | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
  264. #define ACT_BUTT_SLIDE_STOP 0x0C00023E // (0x03E | ACT_FLAG_STATIONARY | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
  265. #define ACT_UNKNOWN_03F 0x0800043F // (0x03F | ACT_FLAG_MOVING | ACT_FLAG_PAUSE_EXIT)
  266. // group 0x040: moving (ground) actions
  267. #define ACT_WALKING 0x04000440 // (0x040 | ACT_FLAG_MOVING | ACT_FLAG_ALLOW_FIRST_PERSON)
  268. #define ACT_HOLD_WALKING 0x00000442 // (0x042 | ACT_FLAG_MOVING)
  269. #define ACT_TURNING_AROUND 0x00000443 // (0x043 | ACT_FLAG_MOVING)
  270. #define ACT_FINISH_TURNING_AROUND 0x00000444 // (0x044 | ACT_FLAG_MOVING)
  271. #define ACT_BRAKING 0x04000445 // (0x045 | ACT_FLAG_MOVING | ACT_FLAG_ALLOW_FIRST_PERSON)
  272. #define ACT_RIDING_SHELL_GROUND 0x20810446 // (0x046 | ACT_FLAG_MOVING | ACT_FLAG_RIDING_SHELL | ACT_FLAG_ATTACKING | ACT_FLAG_WATER_OR_TEXT)
  273. #define ACT_HOLD_HEAVY_WALKING 0x00000447 // (0x047 | ACT_FLAG_MOVING)
  274. #define ACT_CRAWLING 0x04008448 // (0x048 | ACT_FLAG_MOVING | ACT_FLAG_SHORT_HITBOX | ACT_FLAG_ALLOW_FIRST_PERSON)
  275. #define ACT_BURNING_GROUND 0x00020449 // (0x049 | ACT_FLAG_MOVING | ACT_FLAG_INVULNERABLE)
  276. #define ACT_DECELERATING 0x0400044A // (0x04A | ACT_FLAG_MOVING | ACT_FLAG_ALLOW_FIRST_PERSON)
  277. #define ACT_HOLD_DECELERATING 0x0000044B // (0x04B | ACT_FLAG_MOVING)
  278. #define ACT_BEGIN_SLIDING 0x00000050 // (0x050)
  279. #define ACT_HOLD_BEGIN_SLIDING 0x00000051 // (0x051)
  280. #define ACT_BUTT_SLIDE 0x00840452 // (0x052 | ACT_FLAG_MOVING | ACT_FLAG_BUTT_OR_STOMACH_SLIDE | ACT_FLAG_ATTACKING)
  281. #define ACT_STOMACH_SLIDE 0x008C0453 // (0x053 | ACT_FLAG_MOVING | ACT_FLAG_BUTT_OR_STOMACH_SLIDE | ACT_FLAG_DIVING | ACT_FLAG_ATTACKING)
  282. #define ACT_HOLD_BUTT_SLIDE 0x00840454 // (0x054 | ACT_FLAG_MOVING | ACT_FLAG_BUTT_OR_STOMACH_SLIDE | ACT_FLAG_ATTACKING)
  283. #define ACT_HOLD_STOMACH_SLIDE 0x008C0455 // (0x055 | ACT_FLAG_MOVING | ACT_FLAG_BUTT_OR_STOMACH_SLIDE | ACT_FLAG_DIVING | ACT_FLAG_ATTACKING)
  284. #define ACT_DIVE_SLIDE 0x00880456 // (0x056 | ACT_FLAG_MOVING | ACT_FLAG_DIVING | ACT_FLAG_ATTACKING)
  285. #define ACT_MOVE_PUNCHING 0x00800457 // (0x057 | ACT_FLAG_MOVING | ACT_FLAG_ATTACKING)
  286. #define ACT_CROUCH_SLIDE 0x04808459 // (0x059 | ACT_FLAG_MOVING | ACT_FLAG_SHORT_HITBOX | ACT_FLAG_ATTACKING | ACT_FLAG_ALLOW_FIRST_PERSON)
  287. #define ACT_SLIDE_KICK_SLIDE 0x0080045A // (0x05A | ACT_FLAG_MOVING | ACT_FLAG_ATTACKING)
  288. #define ACT_HARD_BACKWARD_GROUND_KB 0x00020460 // (0x060 | ACT_FLAG_MOVING | ACT_FLAG_INVULNERABLE)
  289. #define ACT_HARD_FORWARD_GROUND_KB 0x00020461 // (0x061 | ACT_FLAG_MOVING | ACT_FLAG_INVULNERABLE)
  290. #define ACT_BACKWARD_GROUND_KB 0x00020462 // (0x062 | ACT_FLAG_MOVING | ACT_FLAG_INVULNERABLE)
  291. #define ACT_FORWARD_GROUND_KB 0x00020463 // (0x063 | ACT_FLAG_MOVING | ACT_FLAG_INVULNERABLE)
  292. #define ACT_SOFT_BACKWARD_GROUND_KB 0x00020464 // (0x064 | ACT_FLAG_MOVING | ACT_FLAG_INVULNERABLE)
  293. #define ACT_SOFT_FORWARD_GROUND_KB 0x00020465 // (0x065 | ACT_FLAG_MOVING | ACT_FLAG_INVULNERABLE)
  294. #define ACT_GROUND_BONK 0x00020466 // (0x066 | ACT_FLAG_MOVING | ACT_FLAG_INVULNERABLE)
  295. #define ACT_DEATH_EXIT_LAND 0x00020467 // (0x067 | ACT_FLAG_MOVING | ACT_FLAG_INVULNERABLE)
  296. #define ACT_JUMP_LAND 0x04000470 // (0x070 | ACT_FLAG_MOVING | ACT_FLAG_ALLOW_FIRST_PERSON)
  297. #define ACT_FREEFALL_LAND 0x04000471 // (0x071 | ACT_FLAG_MOVING | ACT_FLAG_ALLOW_FIRST_PERSON)
  298. #define ACT_DOUBLE_JUMP_LAND 0x04000472 // (0x072 | ACT_FLAG_MOVING | ACT_FLAG_ALLOW_FIRST_PERSON)
  299. #define ACT_SIDE_FLIP_LAND 0x04000473 // (0x073 | ACT_FLAG_MOVING | ACT_FLAG_ALLOW_FIRST_PERSON)
  300. #define ACT_HOLD_JUMP_LAND 0x00000474 // (0x074 | ACT_FLAG_MOVING)
  301. #define ACT_HOLD_FREEFALL_LAND 0x00000475 // (0x075 | ACT_FLAG_MOVING)
  302. #define ACT_QUICKSAND_JUMP_LAND 0x00000476 // (0x076 | ACT_FLAG_MOVING)
  303. #define ACT_HOLD_QUICKSAND_JUMP_LAND 0x00000477 // (0x077 | ACT_FLAG_MOVING)
  304. #define ACT_TRIPLE_JUMP_LAND 0x04000478 // (0x078 | ACT_FLAG_MOVING | ACT_FLAG_ALLOW_FIRST_PERSON)
  305. #define ACT_LONG_JUMP_LAND 0x00000479 // (0x079 | ACT_FLAG_MOVING)
  306. #define ACT_BACKFLIP_LAND 0x0400047A // (0x07A | ACT_FLAG_MOVING | ACT_FLAG_ALLOW_FIRST_PERSON)
  307. // group 0x080: airborne actions
  308. #define ACT_JUMP 0x03000880 // (0x080 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_CONTROL_JUMP_HEIGHT)
  309. #define ACT_DOUBLE_JUMP 0x03000881 // (0x081 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_CONTROL_JUMP_HEIGHT)
  310. #define ACT_TRIPLE_JUMP 0x01000882 // (0x082 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
  311. #define ACT_BACKFLIP 0x01000883 // (0x083 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
  312. #define ACT_STEEP_JUMP 0x03000885 // (0x085 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_CONTROL_JUMP_HEIGHT)
  313. #define ACT_WALL_KICK_AIR 0x03000886 // (0x086 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_CONTROL_JUMP_HEIGHT)
  314. #define ACT_SIDE_FLIP 0x01000887 // (0x087 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
  315. #define ACT_LONG_JUMP 0x03000888 // (0x088 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_CONTROL_JUMP_HEIGHT)
  316. #define ACT_WATER_JUMP 0x01000889 // (0x089 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
  317. #define ACT_DIVE 0x0188088A // (0x08A | ACT_FLAG_AIR | ACT_FLAG_DIVING | ACT_FLAG_ATTACKING | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
  318. #define ACT_FREEFALL 0x0100088C // (0x08C | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
  319. #define ACT_TOP_OF_POLE_JUMP 0x0300088D // (0x08D | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_CONTROL_JUMP_HEIGHT)
  320. #define ACT_BUTT_SLIDE_AIR 0x0300088E // (0x08E | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_CONTROL_JUMP_HEIGHT)
  321. #define ACT_FLYING_TRIPLE_JUMP 0x03000894 // (0x094 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_CONTROL_JUMP_HEIGHT)
  322. #define ACT_SHOT_FROM_CANNON 0x00880898 // (0x098 | ACT_FLAG_AIR | ACT_FLAG_DIVING | ACT_FLAG_ATTACKING)
  323. #define ACT_FLYING 0x10880899 // (0x099 | ACT_FLAG_AIR | ACT_FLAG_DIVING | ACT_FLAG_ATTACKING | ACT_FLAG_SWIMMING_OR_FLYING)
  324. #define ACT_RIDING_SHELL_JUMP 0x0281089A // (0x09A | ACT_FLAG_AIR | ACT_FLAG_RIDING_SHELL | ACT_FLAG_ATTACKING | ACT_FLAG_CONTROL_JUMP_HEIGHT)
  325. #define ACT_RIDING_SHELL_FALL 0x0081089B // (0x09B | ACT_FLAG_AIR | ACT_FLAG_RIDING_SHELL | ACT_FLAG_ATTACKING)
  326. #define ACT_VERTICAL_WIND 0x1008089C // (0x09C | ACT_FLAG_AIR | ACT_FLAG_DIVING | ACT_FLAG_SWIMMING_OR_FLYING)
  327. #define ACT_HOLD_JUMP 0x030008A0 // (0x0A0 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_CONTROL_JUMP_HEIGHT)
  328. #define ACT_HOLD_FREEFALL 0x010008A1 // (0x0A1 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
  329. #define ACT_HOLD_BUTT_SLIDE_AIR 0x010008A2 // (0x0A2 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
  330. #define ACT_HOLD_WATER_JUMP 0x010008A3 // (0x0A3 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
  331. #define ACT_TWIRLING 0x108008A4 // (0x0A4 | ACT_FLAG_AIR | ACT_FLAG_ATTACKING | ACT_FLAG_SWIMMING_OR_FLYING)
  332. #define ACT_FORWARD_ROLLOUT 0x010008A6 // (0x0A6 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
  333. #define ACT_AIR_HIT_WALL 0x000008A7 // (0x0A7 | ACT_FLAG_AIR)
  334. #define ACT_RIDING_HOOT 0x000004A8 // (0x0A8 | ACT_FLAG_MOVING)
  335. #define ACT_GROUND_POUND 0x008008A9 // (0x0A9 | ACT_FLAG_AIR | ACT_FLAG_ATTACKING)
  336. #define ACT_SLIDE_KICK 0x018008AA // (0x0AA | ACT_FLAG_AIR | ACT_FLAG_ATTACKING | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
  337. #define ACT_AIR_THROW 0x830008AB // (0x0AB | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_CONTROL_JUMP_HEIGHT | ACT_FLAG_THROWING)
  338. #define ACT_JUMP_KICK 0x018008AC // (0x0AC | ACT_FLAG_AIR | ACT_FLAG_ATTACKING | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
  339. #define ACT_BACKWARD_ROLLOUT 0x010008AD // (0x0AD | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
  340. #define ACT_CRAZY_BOX_BOUNCE 0x000008AE // (0x0AE | ACT_FLAG_AIR)
  341. #define ACT_SPECIAL_TRIPLE_JUMP 0x030008AF // (0x0AF | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_CONTROL_JUMP_HEIGHT)
  342. #define ACT_BACKWARD_AIR_KB 0x010208B0 // (0x0B0 | ACT_FLAG_AIR | ACT_FLAG_INVULNERABLE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
  343. #define ACT_FORWARD_AIR_KB 0x010208B1 // (0x0B1 | ACT_FLAG_AIR | ACT_FLAG_INVULNERABLE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
  344. #define ACT_HARD_FORWARD_AIR_KB 0x010208B2 // (0x0B2 | ACT_FLAG_AIR | ACT_FLAG_INVULNERABLE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
  345. #define ACT_HARD_BACKWARD_AIR_KB 0x010208B3 // (0x0B3 | ACT_FLAG_AIR | ACT_FLAG_INVULNERABLE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
  346. #define ACT_BURNING_JUMP 0x010208B4 // (0x0B4 | ACT_FLAG_AIR | ACT_FLAG_INVULNERABLE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
  347. #define ACT_BURNING_FALL 0x010208B5 // (0x0B5 | ACT_FLAG_AIR | ACT_FLAG_INVULNERABLE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
  348. #define ACT_SOFT_BONK 0x010208B6 // (0x0B6 | ACT_FLAG_AIR | ACT_FLAG_INVULNERABLE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
  349. #define ACT_LAVA_BOOST 0x010208B7 // (0x0B7 | ACT_FLAG_AIR | ACT_FLAG_INVULNERABLE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
  350. #define ACT_GETTING_BLOWN 0x010208B8 // (0x0B8 | ACT_FLAG_AIR | ACT_FLAG_INVULNERABLE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
  351. #define ACT_THROWN_FORWARD 0x010208BD // (0x0BD | ACT_FLAG_AIR | ACT_FLAG_INVULNERABLE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
  352. #define ACT_THROWN_BACKWARD 0x010208BE // (0x0BE | ACT_FLAG_AIR | ACT_FLAG_INVULNERABLE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
  353. // group 0x0C0: submerged actions
  354. #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)
  355. #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)
  356. #define ACT_WATER_ACTION_END 0x300022C2 // (0x0C2 | ACT_FLAG_STATIONARY | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
  357. #define ACT_HOLD_WATER_ACTION_END 0x300022C3 // (0x0C3 | ACT_FLAG_STATIONARY | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
  358. #define ACT_DROWNING 0x300032C4 // (0x0C4 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
  359. #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)
  360. #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)
  361. #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)
  362. #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)
  363. #define ACT_BREASTSTROKE 0x300024D0 // (0x0D0 | ACT_FLAG_MOVING | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
  364. #define ACT_SWIMMING_END 0x300024D1 // (0x0D1 | ACT_FLAG_MOVING | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
  365. #define ACT_FLUTTER_KICK 0x300024D2 // (0x0D2 | ACT_FLAG_MOVING | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
  366. #define ACT_HOLD_BREASTSTROKE 0x300024D3 // (0x0D3 | ACT_FLAG_MOVING | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
  367. #define ACT_HOLD_SWIMMING_END 0x300024D4 // (0x0D4 | ACT_FLAG_MOVING | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
  368. #define ACT_HOLD_FLUTTER_KICK 0x300024D5 // (0x0D5 | ACT_FLAG_MOVING | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
  369. #define ACT_WATER_SHELL_SWIMMING 0x300024D6 // (0x0D6 | ACT_FLAG_MOVING | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
  370. #define ACT_WATER_THROW 0x300024E0 // (0x0E0 | ACT_FLAG_MOVING | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
  371. #define ACT_WATER_PUNCH 0x300024E1 // (0x0E1 | ACT_FLAG_MOVING | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
  372. #define ACT_WATER_PLUNGE 0x300022E2 // (0x0E2 | ACT_FLAG_STATIONARY | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
  373. #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)
  374. #define ACT_METAL_WATER_STANDING 0x080042F0 // (0x0F0 | ACT_FLAG_STATIONARY | ACT_FLAG_METAL_WATER | ACT_FLAG_PAUSE_EXIT)
  375. #define ACT_HOLD_METAL_WATER_STANDING 0x080042F1 // (0x0F1 | ACT_FLAG_STATIONARY | ACT_FLAG_METAL_WATER | ACT_FLAG_PAUSE_EXIT)
  376. #define ACT_METAL_WATER_WALKING 0x000044F2 // (0x0F2 | ACT_FLAG_MOVING | ACT_FLAG_METAL_WATER)
  377. #define ACT_HOLD_METAL_WATER_WALKING 0x000044F3 // (0x0F3 | ACT_FLAG_MOVING | ACT_FLAG_METAL_WATER)
  378. #define ACT_METAL_WATER_FALLING 0x000042F4 // (0x0F4 | ACT_FLAG_STATIONARY | ACT_FLAG_METAL_WATER)
  379. #define ACT_HOLD_METAL_WATER_FALLING 0x000042F5 // (0x0F5 | ACT_FLAG_STATIONARY | ACT_FLAG_METAL_WATER)
  380. #define ACT_METAL_WATER_FALL_LAND 0x000042F6 // (0x0F6 | ACT_FLAG_STATIONARY | ACT_FLAG_METAL_WATER)
  381. #define ACT_HOLD_METAL_WATER_FALL_LAND 0x000042F7 // (0x0F7 | ACT_FLAG_STATIONARY | ACT_FLAG_METAL_WATER)
  382. #define ACT_METAL_WATER_JUMP 0x000044F8 // (0x0F8 | ACT_FLAG_MOVING | ACT_FLAG_METAL_WATER)
  383. #define ACT_HOLD_METAL_WATER_JUMP 0x000044F9 // (0x0F9 | ACT_FLAG_MOVING | ACT_FLAG_METAL_WATER)
  384. #define ACT_METAL_WATER_JUMP_LAND 0x000044FA // (0x0FA | ACT_FLAG_MOVING | ACT_FLAG_METAL_WATER)
  385. #define ACT_HOLD_METAL_WATER_JUMP_LAND 0x000044FB // (0x0FB | ACT_FLAG_MOVING | ACT_FLAG_METAL_WATER)
  386. // group 0x100: cutscene actions
  387. #define ACT_DISAPPEARED 0x00001300 // (0x100 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
  388. #define ACT_INTRO_CUTSCENE 0x04001301 // (0x101 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_ALLOW_FIRST_PERSON)
  389. #define ACT_STAR_DANCE_EXIT 0x00001302 // (0x102 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
  390. #define ACT_STAR_DANCE_WATER 0x00001303 // (0x103 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
  391. #define ACT_FALL_AFTER_STAR_GRAB 0x00001904 // (0x104 | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)
  392. #define ACT_READING_AUTOMATIC_DIALOGUE 0x20001305 // (0x105 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_WATER_OR_TEXT)
  393. #define ACT_READING_NPC_DIALOGUE 0x20001306 // (0x106 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_WATER_OR_TEXT)
  394. #define ACT_STAR_DANCE_NO_EXIT 0x00001307 // (0x107 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
  395. #define ACT_READING_SIGN 0x00001308 // (0x108 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
  396. #define ACT_JUMBO_STAR_CUTSCENE 0x00001909 // (0x109 | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)
  397. #define ACT_WAITING_FOR_DIALOGUE 0x0000130A // (0x10A | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
  398. #define ACT_DEBUG_FREE_MOVE 0x0000130F // (0x10F | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
  399. #define ACT_STANDING_DEATH 0x00021311 // (0x111 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_INVULNERABLE)
  400. #define ACT_QUICKSAND_DEATH 0x00021312 // (0x112 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_INVULNERABLE)
  401. #define ACT_ELECTROCUTION 0x00021313 // (0x113 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_INVULNERABLE)
  402. #define ACT_SUFFOCATION 0x00021314 // (0x114 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_INVULNERABLE)
  403. #define ACT_DEATH_ON_STOMACH 0x00021315 // (0x115 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_INVULNERABLE)
  404. #define ACT_DEATH_ON_BACK 0x00021316 // (0x116 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_INVULNERABLE)
  405. #define ACT_EATEN_BY_BUBBA 0x00021317 // (0x117 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_INVULNERABLE)
  406. #define ACT_END_PEACH_CUTSCENE 0x00001918 // (0x118 | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)
  407. #define ACT_CREDITS_CUTSCENE 0x00001319 // (0x119 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
  408. #define ACT_END_WAVING_CUTSCENE 0x0000131A // (0x11A | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
  409. #define ACT_PULLING_DOOR 0x00001320 // (0x120 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
  410. #define ACT_PUSHING_DOOR 0x00001321 // (0x121 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
  411. #define ACT_WARP_DOOR_SPAWN 0x00001322 // (0x122 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
  412. #define ACT_EMERGE_FROM_PIPE 0x00001923 // (0x123 | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)
  413. #define ACT_SPAWN_SPIN_AIRBORNE 0x00001924 // (0x124 | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)
  414. #define ACT_SPAWN_SPIN_LANDING 0x00001325 // (0x125 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
  415. #define ACT_EXIT_AIRBORNE 0x00001926 // (0x126 | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)
  416. #define ACT_EXIT_LAND_SAVE_DIALOGUE 0x00001327 // (0x127 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
  417. #define ACT_DEATH_EXIT 0x00001928 // (0x128 | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)
  418. #define ACT_UNUSED_DEATH_EXIT 0x00001929 // (0x129 | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)
  419. #define ACT_FALLING_DEATH_EXIT 0x0000192A // (0x12A | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)
  420. #define ACT_SPECIAL_EXIT_AIRBORNE 0x0000192B // (0x12B | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)
  421. #define ACT_SPECIAL_DEATH_EXIT 0x0000192C // (0x12C | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)
  422. #define ACT_FALLING_EXIT_AIRBORNE 0x0000192D // (0x12D | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)
  423. #define ACT_UNLOCKING_KEY_DOOR 0x0000132E // (0x12E | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
  424. #define ACT_UNLOCKING_STAR_DOOR 0x0000132F // (0x12F | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
  425. #define ACT_ENTERING_STAR_DOOR 0x00001331 // (0x131 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
  426. #define ACT_SPAWN_NO_SPIN_AIRBORNE 0x00001932 // (0x132 | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)
  427. #define ACT_SPAWN_NO_SPIN_LANDING 0x00001333 // (0x133 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
  428. #define ACT_BBH_ENTER_JUMP 0x00001934 // (0x134 | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)
  429. #define ACT_BBH_ENTER_SPIN 0x00001535 // (0x135 | ACT_FLAG_MOVING | ACT_FLAG_INTANGIBLE)
  430. #define ACT_TELEPORT_FADE_OUT 0x00001336 // (0x136 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
  431. #define ACT_TELEPORT_FADE_IN 0x00001337 // (0x137 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
  432. #define ACT_SHOCKED 0x00020338 // (0x138 | ACT_FLAG_STATIONARY | ACT_FLAG_INVULNERABLE)
  433. #define ACT_SQUISHED 0x00020339 // (0x139 | ACT_FLAG_STATIONARY | ACT_FLAG_INVULNERABLE)
  434. #define ACT_HEAD_STUCK_IN_GROUND 0x0002033A // (0x13A | ACT_FLAG_STATIONARY | ACT_FLAG_INVULNERABLE)
  435. #define ACT_BUTT_STUCK_IN_GROUND 0x0002033B // (0x13B | ACT_FLAG_STATIONARY | ACT_FLAG_INVULNERABLE)
  436. #define ACT_FEET_STUCK_IN_GROUND 0x0002033C // (0x13C | ACT_FLAG_STATIONARY | ACT_FLAG_INVULNERABLE)
  437. #define ACT_PUTTING_ON_CAP 0x0000133D // (0x13D | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
  438. // group 0x140: "automatic" actions
  439. #define ACT_HOLDING_POLE 0x08100340 // (0x140 | ACT_FLAG_STATIONARY | ACT_FLAG_ON_POLE | ACT_FLAG_PAUSE_EXIT)
  440. #define ACT_GRAB_POLE_SLOW 0x00100341 // (0x141 | ACT_FLAG_STATIONARY | ACT_FLAG_ON_POLE)
  441. #define ACT_GRAB_POLE_FAST 0x00100342 // (0x142 | ACT_FLAG_STATIONARY | ACT_FLAG_ON_POLE)
  442. #define ACT_CLIMBING_POLE 0x00100343 // (0x143 | ACT_FLAG_STATIONARY | ACT_FLAG_ON_POLE)
  443. #define ACT_TOP_OF_POLE_TRANSITION 0x00100344 // (0x144 | ACT_FLAG_STATIONARY | ACT_FLAG_ON_POLE)
  444. #define ACT_TOP_OF_POLE 0x00100345 // (0x145 | ACT_FLAG_STATIONARY | ACT_FLAG_ON_POLE)
  445. #define ACT_START_HANGING 0x08200348 // (0x148 | ACT_FLAG_STATIONARY | ACT_FLAG_HANGING | ACT_FLAG_PAUSE_EXIT)
  446. #define ACT_HANGING 0x00200349 // (0x149 | ACT_FLAG_STATIONARY | ACT_FLAG_HANGING)
  447. #define ACT_HANG_MOVING 0x0020054A // (0x14A | ACT_FLAG_MOVING | ACT_FLAG_HANGING)
  448. #define ACT_LEDGE_GRAB 0x0800034B // (0x14B | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)
  449. #define ACT_LEDGE_CLIMB_SLOW_1 0x0000054C // (0x14C | ACT_FLAG_MOVING)
  450. #define ACT_LEDGE_CLIMB_SLOW_2 0x0000054D // (0x14D | ACT_FLAG_MOVING)
  451. #define ACT_LEDGE_CLIMB_DOWN 0x0000054E // (0x14E | ACT_FLAG_MOVING)
  452. #define ACT_LEDGE_CLIMB_FAST 0x0000054F // (0x14F | ACT_FLAG_MOVING)
  453. #define ACT_GRABBED 0x00020370 // (0x170 | ACT_FLAG_STATIONARY | ACT_FLAG_INVULNERABLE)
  454. #define ACT_IN_CANNON 0x00001371 // (0x171 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)
  455. #define ACT_TORNADO_TWIRLING 0x10020372 // (0x172 | ACT_FLAG_STATIONARY | ACT_FLAG_INVULNERABLE | ACT_FLAG_SWIMMING_OR_FLYING)
  456. // group 0x180: object actions
  457. #define ACT_PUNCHING 0x00800380 // (0x180 | ACT_FLAG_STATIONARY | ACT_FLAG_ATTACKING)
  458. #define ACT_PICKING_UP 0x00000383 // (0x183 | ACT_FLAG_STATIONARY)
  459. #define ACT_DIVE_PICKING_UP 0x00000385 // (0x185 | ACT_FLAG_STATIONARY)
  460. #define ACT_STOMACH_SLIDE_STOP 0x00000386 // (0x186 | ACT_FLAG_STATIONARY)
  461. #define ACT_PLACING_DOWN 0x00000387 // (0x187 | ACT_FLAG_STATIONARY)
  462. #define ACT_THROWING 0x80000588 // (0x188 | ACT_FLAG_MOVING | ACT_FLAG_THROWING)
  463. #define ACT_HEAVY_THROW 0x80000589 // (0x189 | ACT_FLAG_MOVING | ACT_FLAG_THROWING)
  464. #define ACT_PICKING_UP_BOWSER 0x00000390 // (0x190 | ACT_FLAG_STATIONARY)
  465. #define ACT_HOLDING_BOWSER 0x00000391 // (0x191 | ACT_FLAG_STATIONARY)
  466. #define ACT_RELEASING_BOWSER 0x00000392 // (0x192 | ACT_FLAG_STATIONARY)
  467. // Ignore GLOBAL_ASM blocks when syntax-checking with GCC
  468. #ifdef __GNUC__
  469. #define GLOBAL_ASM(...)
  470. #endif
  471. // convert a virtual address to physical.
  472. #define VIRTUAL_TO_PHYSICAL(addr) ((u32)(addr) & 0x1FFFFFFF)
  473. // convert a physical address to virtual.
  474. #define PHYSICAL_TO_VIRTUAL(addr) ((u32)(addr) | 0x80000000)
  475. /*
  476. this input mask is unused by the controller,
  477. but END_DEMO is used internally to signal
  478. the demo to end. This button cannot
  479. be pressed normally by a controller.
  480. */
  481. #define END_DEMO (1 << 7)
  482. #define VALID_BUTTONS (A_BUTTON | B_BUTTON | Z_TRIG | START_BUTTON | \
  483. U_JPAD | D_JPAD | L_JPAD | R_JPAD | \
  484. L_TRIG | R_TRIG | \
  485. U_CBUTTONS | D_CBUTTONS | L_CBUTTONS | R_CBUTTONS )
  486. #define C_BUTTONS (U_CBUTTONS | D_CBUTTONS | L_CBUTTONS | R_CBUTTONS )
  487. #endif