diff --git a/autogen/lua_definitions/constants.lua b/autogen/lua_definitions/constants.lua
index e5a4cdcb1..aaa9c7445 100644
--- a/autogen/lua_definitions/constants.lua
+++ b/autogen/lua_definitions/constants.lua
@@ -3919,54 +3919,6 @@ LEVEL_UNKNOWN_38 = 38
--- @type LevelNum
LEVEL_COUNT = 39
---- @type integer
-MARIO_SPAWN_AIRBORNE = 0x12
-
---- @type integer
-MARIO_SPAWN_AIRBORNE_DEATH = 0x23
-
---- @type integer
-MARIO_SPAWN_AIRBORNE_STAR_COLLECT = 0x22
-
---- @type integer
-MARIO_SPAWN_DEATH = 0x15
-
---- @type integer
-MARIO_SPAWN_DOOR_WARP = 0x01
-
---- @type integer
-MARIO_SPAWN_FLYING = 0x17
-
---- @type integer
-MARIO_SPAWN_HARD_AIR_KNOCKBACK = 0x13
-
---- @type integer
-MARIO_SPAWN_INSTANT_ACTIVE = 0x10
-
---- @type integer
-MARIO_SPAWN_LAUNCH_DEATH = 0x25
-
---- @type integer
-MARIO_SPAWN_LAUNCH_STAR_COLLECT = 0x24
-
---- @type integer
-MARIO_SPAWN_PAINTING_DEATH = 0x21
-
---- @type integer
-MARIO_SPAWN_PAINTING_STAR_COLLECT = 0x20
-
---- @type integer
-MARIO_SPAWN_SPIN_AIRBORNE = 0x16
-
---- @type integer
-MARIO_SPAWN_SPIN_AIRBORNE_CIRCLE = 0x14
-
---- @type integer
-MARIO_SPAWN_SWIMMING = 0x11
-
---- @type integer
-MARIO_SPAWN_TELEPORT = 0x04
-
--- @type integer
MARIO_SPAWN_UNKNOWN_02 = 0x02
@@ -4143,6 +4095,71 @@ HUD_DISPLAY_NONE = 0x0000
--- @type HUDDisplayFlag
HUD_DISPLAY_DEFAULT = HUD_DISPLAY_FLAG_LIVES | HUD_DISPLAY_FLAG_COIN_COUNT | HUD_DISPLAY_FLAG_STAR_COUNT | HUD_DISPLAY_FLAG_CAMERA_AND_POWER | HUD_DISPLAY_FLAG_CAMERA | HUD_DISPLAY_FLAG_POWER | HUD_DISPLAY_FLAG_KEYS | HUD_DISPLAY_FLAG_UNKNOWN_0020
+--- @class MarioSpawnType
+
+--- @type MarioSpawnType
+MARIO_SPAWN_NONE = 0
+
+--- @type MarioSpawnType
+MARIO_SPAWN_DOOR_WARP = 1
+
+--- @type MarioSpawnType
+MARIO_SPAWN_IDLE = 2
+
+--- @type MarioSpawnType
+MARIO_SPAWN_PIPE = 3
+
+--- @type MarioSpawnType
+MARIO_SPAWN_TELEPORT = 4
+
+--- @type MarioSpawnType
+MARIO_SPAWN_INSTANT_ACTIVE = 0x10
+
+--- @type MarioSpawnType
+MARIO_SPAWN_SWIMMING = ((MARIO_SPAWN_INSTANT_ACTIVE ) + 1)
+
+--- @type MarioSpawnType
+MARIO_SPAWN_AIRBORNE = ((MARIO_SPAWN_INSTANT_ACTIVE ) + 2)
+
+--- @type MarioSpawnType
+MARIO_SPAWN_HARD_AIR_KNOCKBACK = ((MARIO_SPAWN_INSTANT_ACTIVE ) + 3)
+
+--- @type MarioSpawnType
+MARIO_SPAWN_SPIN_AIRBORNE_CIRCLE = ((MARIO_SPAWN_INSTANT_ACTIVE ) + 4)
+
+--- @type MarioSpawnType
+MARIO_SPAWN_DEATH = ((MARIO_SPAWN_INSTANT_ACTIVE ) + 5)
+
+--- @type MarioSpawnType
+MARIO_SPAWN_SPIN_AIRBORNE = ((MARIO_SPAWN_INSTANT_ACTIVE ) + 6)
+
+--- @type MarioSpawnType
+MARIO_SPAWN_FLYING = ((MARIO_SPAWN_INSTANT_ACTIVE ) + 7)
+
+--- @type MarioSpawnType
+MARIO_SPAWN_PAINTING_STAR_COLLECT = 0x20
+
+--- @type MarioSpawnType
+MARIO_SPAWN_PAINTING_DEATH = ((MARIO_SPAWN_PAINTING_STAR_COLLECT ) + 1)
+
+--- @type MarioSpawnType
+MARIO_SPAWN_AIRBORNE_STAR_COLLECT = ((MARIO_SPAWN_PAINTING_STAR_COLLECT ) + 2)
+
+--- @type MarioSpawnType
+MARIO_SPAWN_AIRBORNE_DEATH = ((MARIO_SPAWN_PAINTING_STAR_COLLECT ) + 3)
+
+--- @type MarioSpawnType
+MARIO_SPAWN_LAUNCH_STAR_COLLECT = ((MARIO_SPAWN_PAINTING_STAR_COLLECT ) + 4)
+
+--- @type MarioSpawnType
+MARIO_SPAWN_LAUNCH_DEATH = ((MARIO_SPAWN_PAINTING_STAR_COLLECT ) + 5)
+
+--- @type MarioSpawnType
+MARIO_SPAWN_UNUSED_38 = ((MARIO_SPAWN_PAINTING_STAR_COLLECT ) + 6)
+
+--- @type MarioSpawnType
+MARIO_SPAWN_FADE_FROM_BLACK = ((MARIO_SPAWN_PAINTING_STAR_COLLECT ) + 7)
+
--- @class CharacterAnimID
--- @type CharacterAnimID
diff --git a/autogen/lua_definitions/structs.lua b/autogen/lua_definitions/structs.lua
index 6bab72680..f0d30015d 100644
--- a/autogen/lua_definitions/structs.lua
+++ b/autogen/lua_definitions/structs.lua
@@ -1118,6 +1118,7 @@
--- @field public shadeR integer
--- @field public torsoAngle Vec3s
--- @field public torsoPos Vec3f
+--- @field public updateHeadPosTime integer
--- @field public updateTorsoTime integer
--- @field public wingFlutter integer
diff --git a/docs/lua/constants.md b/docs/lua/constants.md
index ca72a0d5d..ecfcc5943 100644
--- a/docs/lua/constants.md
+++ b/docs/lua/constants.md
@@ -35,6 +35,7 @@
- [enum LevelNum](#enum-LevelNum)
- [level_update.h](#level_updateh)
- [enum HUDDisplayFlag](#enum-HUDDisplayFlag)
+ - [enum MarioSpawnType](#enum-MarioSpawnType)
- [mario_animation_ids.h](#mario_animation_idsh)
- [enum CharacterAnimID](#enum-CharacterAnimID)
- [enum MarioAnimID](#enum-MarioAnimID)
@@ -1439,22 +1440,6 @@
## [level_update.h](#level_update.h)
-- MARIO_SPAWN_AIRBORNE
-- MARIO_SPAWN_AIRBORNE_DEATH
-- MARIO_SPAWN_AIRBORNE_STAR_COLLECT
-- MARIO_SPAWN_DEATH
-- MARIO_SPAWN_DOOR_WARP
-- MARIO_SPAWN_FLYING
-- MARIO_SPAWN_HARD_AIR_KNOCKBACK
-- MARIO_SPAWN_INSTANT_ACTIVE
-- MARIO_SPAWN_LAUNCH_DEATH
-- MARIO_SPAWN_LAUNCH_STAR_COLLECT
-- MARIO_SPAWN_PAINTING_DEATH
-- MARIO_SPAWN_PAINTING_STAR_COLLECT
-- MARIO_SPAWN_SPIN_AIRBORNE
-- MARIO_SPAWN_SPIN_AIRBORNE_CIRCLE
-- MARIO_SPAWN_SWIMMING
-- MARIO_SPAWN_TELEPORT
- MARIO_SPAWN_UNKNOWN_02
- MARIO_SPAWN_UNKNOWN_03
- MARIO_SPAWN_UNKNOWN_27
@@ -1518,6 +1503,31 @@
| HUD_DISPLAY_NONE | 0x0000 |
| HUD_DISPLAY_DEFAULT | HUD_DISPLAY_FLAG_LIVES | HUD_DISPLAY_FLAG_COIN_COUNT | HUD_DISPLAY_FLAG_STAR_COUNT | HUD_DISPLAY_FLAG_CAMERA_AND_POWER | HUD_DISPLAY_FLAG_CAMERA | HUD_DISPLAY_FLAG_POWER | HUD_DISPLAY_FLAG_KEYS | HUD_DISPLAY_FLAG_UNKNOWN_0020 |
+### [enum MarioSpawnType](#MarioSpawnType)
+| Identifier | Value |
+| :--------- | :---- |
+| MARIO_SPAWN_NONE | 0 |
+| MARIO_SPAWN_DOOR_WARP | 1 |
+| MARIO_SPAWN_IDLE | 2 |
+| MARIO_SPAWN_PIPE | 3 |
+| MARIO_SPAWN_TELEPORT | 4 |
+| MARIO_SPAWN_INSTANT_ACTIVE | 0x10 |
+| MARIO_SPAWN_SWIMMING | ((MARIO_SPAWN_INSTANT_ACTIVE ) + 1) |
+| MARIO_SPAWN_AIRBORNE | ((MARIO_SPAWN_INSTANT_ACTIVE ) + 2) |
+| MARIO_SPAWN_HARD_AIR_KNOCKBACK | ((MARIO_SPAWN_INSTANT_ACTIVE ) + 3) |
+| MARIO_SPAWN_SPIN_AIRBORNE_CIRCLE | ((MARIO_SPAWN_INSTANT_ACTIVE ) + 4) |
+| MARIO_SPAWN_DEATH | ((MARIO_SPAWN_INSTANT_ACTIVE ) + 5) |
+| MARIO_SPAWN_SPIN_AIRBORNE | ((MARIO_SPAWN_INSTANT_ACTIVE ) + 6) |
+| MARIO_SPAWN_FLYING | ((MARIO_SPAWN_INSTANT_ACTIVE ) + 7) |
+| MARIO_SPAWN_PAINTING_STAR_COLLECT | 0x20 |
+| MARIO_SPAWN_PAINTING_DEATH | ((MARIO_SPAWN_PAINTING_STAR_COLLECT ) + 1) |
+| MARIO_SPAWN_AIRBORNE_STAR_COLLECT | ((MARIO_SPAWN_PAINTING_STAR_COLLECT ) + 2) |
+| MARIO_SPAWN_AIRBORNE_DEATH | ((MARIO_SPAWN_PAINTING_STAR_COLLECT ) + 3) |
+| MARIO_SPAWN_LAUNCH_STAR_COLLECT | ((MARIO_SPAWN_PAINTING_STAR_COLLECT ) + 4) |
+| MARIO_SPAWN_LAUNCH_DEATH | ((MARIO_SPAWN_PAINTING_STAR_COLLECT ) + 5) |
+| MARIO_SPAWN_UNUSED_38 | ((MARIO_SPAWN_PAINTING_STAR_COLLECT ) + 6) |
+| MARIO_SPAWN_FADE_FROM_BLACK | ((MARIO_SPAWN_PAINTING_STAR_COLLECT ) + 7) |
+
[:arrow_up_small:](#)
diff --git a/docs/lua/structs.md b/docs/lua/structs.md
index d86c73768..7c186f093 100644
--- a/docs/lua/structs.md
+++ b/docs/lua/structs.md
@@ -1701,6 +1701,7 @@
| shadeR | `integer` | |
| torsoAngle | [Vec3s](structs.md#Vec3s) | read-only |
| torsoPos | [Vec3f](structs.md#Vec3f) | read-only |
+| updateHeadPosTime | `integer` | |
| updateTorsoTime | `integer` | read-only |
| wingFlutter | `integer` | |
diff --git a/src/pc/lua/smlua_cobject_autogen.c b/src/pc/lua/smlua_cobject_autogen.c
index 4ba2dd574..6bb7e3349 100644
--- a/src/pc/lua/smlua_cobject_autogen.c
+++ b/src/pc/lua/smlua_cobject_autogen.c
@@ -1391,7 +1391,7 @@ static struct LuaObjectField sMarioAnimationFields[LUA_MARIO_ANIMATION_FIELD_COU
{ "targetAnim", LVT_COBJECT_P, offsetof(struct MarioAnimation, targetAnim), false, LOT_ANIMATION },
};
-#define LUA_MARIO_BODY_STATE_FIELD_COUNT 24
+#define LUA_MARIO_BODY_STATE_FIELD_COUNT 25
static struct LuaObjectField sMarioBodyStateFields[LUA_MARIO_BODY_STATE_FIELD_COUNT] = {
{ "action", LVT_U32, offsetof(struct MarioBodyState, action), false, LOT_NONE },
{ "allowPartRotation", LVT_U8, offsetof(struct MarioBodyState, allowPartRotation), false, LOT_NONE },
@@ -1416,6 +1416,7 @@ static struct LuaObjectField sMarioBodyStateFields[LUA_MARIO_BODY_STATE_FIELD_CO
{ "shadeR", LVT_U16, offsetof(struct MarioBodyState, shadeR), false, LOT_NONE },
{ "torsoAngle", LVT_COBJECT, offsetof(struct MarioBodyState, torsoAngle), true, LOT_VEC3S },
{ "torsoPos", LVT_COBJECT, offsetof(struct MarioBodyState, torsoPos), true, LOT_VEC3F },
+ { "updateHeadPosTime", LVT_U32, offsetof(struct MarioBodyState, updateHeadPosTime), false, LOT_NONE },
{ "updateTorsoTime", LVT_U32, offsetof(struct MarioBodyState, updateTorsoTime), true, LOT_NONE },
{ "wingFlutter", LVT_S8, offsetof(struct MarioBodyState, wingFlutter), false, LOT_NONE },
};
diff --git a/src/pc/lua/smlua_constants_autogen.c b/src/pc/lua/smlua_constants_autogen.c
index 32f94e76d..2bc7754b9 100644
--- a/src/pc/lua/smlua_constants_autogen.c
+++ b/src/pc/lua/smlua_constants_autogen.c
@@ -1498,24 +1498,29 @@ char gSmluaConstants[] = ""
"SPECIAL_WARP_GODDARD_GAMEOVER = -3\n"
"SPECIAL_WARP_TITLE = -8\n"
"SPECIAL_WARP_LEVEL_SELECT = -9\n"
-"MARIO_SPAWN_DOOR_WARP = 0x01\n"
+"MARIO_SPAWN_NONE = 0\n"
+"MARIO_SPAWN_DOOR_WARP = 1\n"
+"MARIO_SPAWN_IDLE = 2\n"
+"MARIO_SPAWN_PIPE = 3\n"
+"MARIO_SPAWN_TELEPORT = 4\n"
+"MARIO_SPAWN_INSTANT_ACTIVE = 0x10\n"
+"MARIO_SPAWN_SWIMMING = ((MARIO_SPAWN_INSTANT_ACTIVE ) + 1)\n"
+"MARIO_SPAWN_AIRBORNE = ((MARIO_SPAWN_INSTANT_ACTIVE ) + 2)\n"
+"MARIO_SPAWN_HARD_AIR_KNOCKBACK = ((MARIO_SPAWN_INSTANT_ACTIVE ) + 3)\n"
+"MARIO_SPAWN_SPIN_AIRBORNE_CIRCLE = ((MARIO_SPAWN_INSTANT_ACTIVE ) + 4)\n"
+"MARIO_SPAWN_DEATH = ((MARIO_SPAWN_INSTANT_ACTIVE ) + 5)\n"
+"MARIO_SPAWN_SPIN_AIRBORNE = ((MARIO_SPAWN_INSTANT_ACTIVE ) + 6)\n"
+"MARIO_SPAWN_FLYING = ((MARIO_SPAWN_INSTANT_ACTIVE ) + 7)\n"
+"MARIO_SPAWN_PAINTING_STAR_COLLECT = 0x20\n"
+"MARIO_SPAWN_PAINTING_DEATH = ((MARIO_SPAWN_PAINTING_STAR_COLLECT ) + 1)\n"
+"MARIO_SPAWN_AIRBORNE_STAR_COLLECT = ((MARIO_SPAWN_PAINTING_STAR_COLLECT ) + 2)\n"
+"MARIO_SPAWN_AIRBORNE_DEATH = ((MARIO_SPAWN_PAINTING_STAR_COLLECT ) + 3)\n"
+"MARIO_SPAWN_LAUNCH_STAR_COLLECT = ((MARIO_SPAWN_PAINTING_STAR_COLLECT ) + 4)\n"
+"MARIO_SPAWN_LAUNCH_DEATH = ((MARIO_SPAWN_PAINTING_STAR_COLLECT ) + 5)\n"
+"MARIO_SPAWN_UNUSED_38 = ((MARIO_SPAWN_PAINTING_STAR_COLLECT ) + 6)\n"
+"MARIO_SPAWN_FADE_FROM_BLACK = ((MARIO_SPAWN_PAINTING_STAR_COLLECT ) + 7)\n"
"MARIO_SPAWN_UNKNOWN_02 = 0x02\n"
"MARIO_SPAWN_UNKNOWN_03 = 0x03\n"
-"MARIO_SPAWN_TELEPORT = 0x04\n"
-"MARIO_SPAWN_INSTANT_ACTIVE = 0x10\n"
-"MARIO_SPAWN_SWIMMING = 0x11\n"
-"MARIO_SPAWN_AIRBORNE = 0x12\n"
-"MARIO_SPAWN_HARD_AIR_KNOCKBACK = 0x13\n"
-"MARIO_SPAWN_SPIN_AIRBORNE_CIRCLE = 0x14\n"
-"MARIO_SPAWN_DEATH = 0x15\n"
-"MARIO_SPAWN_SPIN_AIRBORNE = 0x16\n"
-"MARIO_SPAWN_FLYING = 0x17\n"
-"MARIO_SPAWN_PAINTING_STAR_COLLECT = 0x20\n"
-"MARIO_SPAWN_PAINTING_DEATH = 0x21\n"
-"MARIO_SPAWN_AIRBORNE_STAR_COLLECT = 0x22\n"
-"MARIO_SPAWN_AIRBORNE_DEATH = 0x23\n"
-"MARIO_SPAWN_LAUNCH_STAR_COLLECT = 0x24\n"
-"MARIO_SPAWN_LAUNCH_DEATH = 0x25\n"
"MARIO_SPAWN_UNKNOWN_27 = 0x27\n"
"WARP_NODE_F0 = 0xF0\n"
"WARP_NODE_DEATH = 0xF1\n"