diff --git a/autogen/convert_functions.py b/autogen/convert_functions.py
index 1b5081fd7..a4af7a6a9 100644
--- a/autogen/convert_functions.py
+++ b/autogen/convert_functions.py
@@ -93,7 +93,7 @@ override_allowed_functions = {
"src/game/object_list_processor.h": [ "set_object_respawn_info_bits" ],
"src/game/platform_displacement.h": [ "apply_platform_displacement" ],
"src/game/mario_misc.h": [ "bhv_toad.*", "bhv_unlock_door.*", "geo_get_.*_state" ],
- "src/game/level_update.h": [ "level_trigger_warp", "get_painting_warp_node", "initiate_painting_warp", "warp_special", "lvl_set_current_level", "level_control_timer_running", "fade_into_special_warp", "get_instant_warp" ],
+ "src/game/level_update.h": [ "level_trigger_warp", "get_painting_warp_node", "initiate_painting_warp", "warp_special", "lvl_set_current_level", "level_control_timer_running", "pressed_pause", "fade_into_special_warp", "get_instant_warp", "game_pause", "game_unpause" ],
"src/game/area.h": [ "get_mario_spawn_type", "area_get_warp_node", "area_get_any_warp_node", "play_transition" ],
"src/engine/level_script.h": [ "area_create_warp_node" ],
"src/game/ingame_menu.h": [ "set_min_dialog_width", "set_dialog_override_pos", "reset_dialog_override_pos", "set_dialog_override_color", "reset_dialog_override_color", "set_menu_mode", "create_dialog_box", "create_dialog_box_with_var", "create_dialog_inverted_box", "create_dialog_box_with_response", "reset_dialog_render_state", "set_dialog_box_state", "handle_special_dialog_text" ],
diff --git a/autogen/lua_definitions/functions.lua b/autogen/lua_definitions/functions.lua
index 004259b73..a348a9140 100644
--- a/autogen/lua_definitions/functions.lua
+++ b/autogen/lua_definitions/functions.lua
@@ -4993,6 +4993,12 @@ function level_control_timer_running()
-- ...
end
+--- @return integer
+--- Checks if the start button has been pressed as well as some other conditions for opening the pause menu depending on if pause anywhere is enabled
+function pressed_pause()
+ -- ...
+end
+
--- @param arg integer
--- @param color integer
--- Fades into a special warp with `arg` and using `color`
@@ -5041,6 +5047,16 @@ function lvl_set_current_level(param, levelNum)
-- ...
end
+--- Pauses the game
+function game_pause()
+ -- ...
+end
+
+--- Unpauses the game
+function game_unpause()
+ -- ...
+end
+
--- @return boolean
--- Gets whether the lighting engine has been enabled or not. It becomes enabled once a light is added or the ambient color is set
function le_is_enabled()
diff --git a/docs/lua/functions-3.md b/docs/lua/functions-3.md
index c09511ba8..f3fd0a7cc 100644
--- a/docs/lua/functions-3.md
+++ b/docs/lua/functions-3.md
@@ -6607,6 +6607,27 @@ Returns if the level timer is running
+## [pressed_pause](#pressed_pause)
+
+### Description
+Checks if the start button has been pressed as well as some other conditions for opening the pause menu depending on if pause anywhere is enabled
+
+### Lua Example
+`local integerValue = pressed_pause()`
+
+### Parameters
+- None
+
+### Returns
+- `integer`
+
+### C Prototype
+`u32 pressed_pause(void);`
+
+[:arrow_up_small:](#)
+
+
+
## [fade_into_special_warp](#fade_into_special_warp)
### Description
@@ -6769,556 +6790,43 @@ Sets the level number and handles the act select screen. `param` is used for ove
----
-# functions from lighting_engine.h
-
-
-
-
-## [le_is_enabled](#le_is_enabled)
+## [game_pause](#game_pause)
### Description
-Gets whether the lighting engine has been enabled or not. It becomes enabled once a light is added or the ambient color is set
+Pauses the game
### Lua Example
-`local booleanValue = le_is_enabled()`
+`game_pause()`
### Parameters
- None
-### Returns
-- `boolean`
-
-### C Prototype
-`bool le_is_enabled(void);`
-
-[:arrow_up_small:](#)
-
-
-
-## [le_set_mode](#le_set_mode)
-
-### Description
-Sets the lighting engine mode to `mode`
-
-### Lua Example
-`le_set_mode(mode)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| mode | [enum LEMode](constants.md#enum-LEMode) |
-
### Returns
- None
### C Prototype
-`void le_set_mode(enum LEMode mode);`
+`void game_pause(void);`
[:arrow_up_small:](#)
-## [le_get_mode](#le_get_mode)
+## [game_unpause](#game_unpause)
### Description
-Gets the lighting engine mode
+Unpauses the game
### Lua Example
-`local enumValue = le_get_mode()`
+`game_unpause()`
### Parameters
- None
-### Returns
-[enum LEMode](constants.md#enum-LEMode)
-
-### C Prototype
-`enum LEMode le_get_mode(void);`
-
-[:arrow_up_small:](#)
-
-
-
-## [le_set_tone_mapping](#le_set_tone_mapping)
-
-### Description
-Sets the lighting engine's tone mapping mode to `toneMapping`
-
-### Lua Example
-`le_set_tone_mapping(toneMapping)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| toneMapping | [enum LEToneMapping](constants.md#enum-LEToneMapping) |
-
### Returns
- None
### C Prototype
-`void le_set_tone_mapping(enum LEToneMapping toneMapping);`
-
-[:arrow_up_small:](#)
-
-
-
-## [le_get_ambient_color](#le_get_ambient_color)
-
-### Description
-Outputs the lighting engine's ambient color to `out`
-
-### Lua Example
-`le_get_ambient_color(out)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| out | [Color](structs.md#Color) |
-
-### Returns
-- None
-
-### C Prototype
-`void le_get_ambient_color(OUT Color out);`
-
-[:arrow_up_small:](#)
-
-
-
-## [le_set_ambient_color](#le_set_ambient_color)
-
-### Description
-Sets the lighting engine ambient color
-
-### Lua Example
-`le_set_ambient_color(r, g, b)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| r | `integer` |
-| g | `integer` |
-| b | `integer` |
-
-### Returns
-- None
-
-### C Prototype
-`void le_set_ambient_color(u8 r, u8 g, u8 b);`
-
-[:arrow_up_small:](#)
-
-
-
-## [le_calculate_lighting_color](#le_calculate_lighting_color)
-
-### Description
-Calculates the lighting with `lightIntensityScalar` at a position and outputs the color in `out`
-
-### Lua Example
-`le_calculate_lighting_color(pos, out, lightIntensityScalar)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| pos | [Vec3f](structs.md#Vec3f) |
-| out | [Color](structs.md#Color) |
-| lightIntensityScalar | `number` |
-
-### Returns
-- None
-
-### C Prototype
-`void le_calculate_lighting_color(Vec3f pos, OUT Color out, f32 lightIntensityScalar);`
-
-[:arrow_up_small:](#)
-
-
-
-## [le_calculate_lighting_color_with_normal](#le_calculate_lighting_color_with_normal)
-
-### Description
-Calculates the lighting with `lightIntensityScalar` at a position and with a normal and outputs the color in `out`
-
-### Lua Example
-`le_calculate_lighting_color_with_normal(pos, normal, out, lightIntensityScalar)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| pos | [Vec3f](structs.md#Vec3f) |
-| normal | [Vec3f](structs.md#Vec3f) |
-| out | [Color](structs.md#Color) |
-| lightIntensityScalar | `number` |
-
-### Returns
-- None
-
-### C Prototype
-`void le_calculate_lighting_color_with_normal(Vec3f pos, Vec3f normal, OUT Color out, f32 lightIntensityScalar);`
-
-[:arrow_up_small:](#)
-
-
-
-## [le_calculate_lighting_dir](#le_calculate_lighting_dir)
-
-### Description
-Calculates the lighting direction from a position and outputs the result in `out`
-
-### Lua Example
-`le_calculate_lighting_dir(pos, out)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| pos | [Vec3f](structs.md#Vec3f) |
-| out | [Vec3f](structs.md#Vec3f) |
-
-### Returns
-- None
-
-### C Prototype
-`void le_calculate_lighting_dir(Vec3f pos, OUT Vec3f out);`
-
-[:arrow_up_small:](#)
-
-
-
-## [le_add_light](#le_add_light)
-
-### Description
-Adds a lighting engine point light at `x`, `y`, `z` with color `r`, `g`, `b` and `radius` with `intensity`
-
-### Lua Example
-`local integerValue = le_add_light(x, y, z, r, g, b, radius, intensity)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| x | `number` |
-| y | `number` |
-| z | `number` |
-| r | `integer` |
-| g | `integer` |
-| b | `integer` |
-| radius | `number` |
-| intensity | `number` |
-
-### Returns
-- `integer`
-
-### C Prototype
-`s16 le_add_light(f32 x, f32 y, f32 z, u8 r, u8 g, u8 b, f32 radius, f32 intensity);`
-
-[:arrow_up_small:](#)
-
-
-
-## [le_remove_light](#le_remove_light)
-
-### Description
-Removes a lighting engine point light corresponding to `id`
-
-### Lua Example
-`le_remove_light(id)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| id | `integer` |
-
-### Returns
-- None
-
-### C Prototype
-`void le_remove_light(s16 id);`
-
-[:arrow_up_small:](#)
-
-
-
-## [le_get_light_count](#le_get_light_count)
-
-### Description
-Gets the total number of lights currently loaded in the lighting engine
-
-### Lua Example
-`local integerValue = le_get_light_count()`
-
-### Parameters
-- None
-
-### Returns
-- `integer`
-
-### C Prototype
-`s16 le_get_light_count(void);`
-
-[:arrow_up_small:](#)
-
-
-
-## [le_light_exists](#le_light_exists)
-
-### Description
-Checks if a lighting engine point light corresponding to `id` exists
-
-### Lua Example
-`local booleanValue = le_light_exists(id)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| id | `integer` |
-
-### Returns
-- `boolean`
-
-### C Prototype
-`bool le_light_exists(s16 id);`
-
-[:arrow_up_small:](#)
-
-
-
-## [le_get_light_pos](#le_get_light_pos)
-
-### Description
-Outputs a lighting engine point light's position to `out`
-
-### Lua Example
-`le_get_light_pos(id, out)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| id | `integer` |
-| out | [Vec3f](structs.md#Vec3f) |
-
-### Returns
-- None
-
-### C Prototype
-`void le_get_light_pos(s16 id, OUT Vec3f out);`
-
-[:arrow_up_small:](#)
-
-
-
-## [le_set_light_pos](#le_set_light_pos)
-
-### Description
-Sets a lighting engine point light's position to `x`, `y`, `z`
-
-### Lua Example
-`le_set_light_pos(id, x, y, z)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| id | `integer` |
-| x | `number` |
-| y | `number` |
-| z | `number` |
-
-### Returns
-- None
-
-### C Prototype
-`void le_set_light_pos(s16 id, f32 x, f32 y, f32 z);`
-
-[:arrow_up_small:](#)
-
-
-
-## [le_get_light_color](#le_get_light_color)
-
-### Description
-Outputs a lighting engine point light's color to `out`
-
-### Lua Example
-`le_get_light_color(id, out)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| id | `integer` |
-| out | [Color](structs.md#Color) |
-
-### Returns
-- None
-
-### C Prototype
-`void le_get_light_color(s16 id, OUT Color out);`
-
-[:arrow_up_small:](#)
-
-
-
-## [le_set_light_color](#le_set_light_color)
-
-### Description
-Sets a lighting engine point light's color to `r`, `g`, `b`
-
-### Lua Example
-`le_set_light_color(id, r, g, b)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| id | `integer` |
-| r | `integer` |
-| g | `integer` |
-| b | `integer` |
-
-### Returns
-- None
-
-### C Prototype
-`void le_set_light_color(s16 id, u8 r, u8 g, u8 b);`
-
-[:arrow_up_small:](#)
-
-
-
-## [le_get_light_radius](#le_get_light_radius)
-
-### Description
-Gets a lighting engine point light's `radius`
-
-### Lua Example
-`local numberValue = le_get_light_radius(id)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| id | `integer` |
-
-### Returns
-- `number`
-
-### C Prototype
-`f32 le_get_light_radius(s16 id);`
-
-[:arrow_up_small:](#)
-
-
-
-## [le_set_light_radius](#le_set_light_radius)
-
-### Description
-Sets a lighting engine point light's `radius`
-
-### Lua Example
-`le_set_light_radius(id, radius)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| id | `integer` |
-| radius | `number` |
-
-### Returns
-- None
-
-### C Prototype
-`void le_set_light_radius(s16 id, f32 radius);`
-
-[:arrow_up_small:](#)
-
-
-
-## [le_get_light_intensity](#le_get_light_intensity)
-
-### Description
-Gets a lighting engine point light's `intensity`
-
-### Lua Example
-`local numberValue = le_get_light_intensity(id)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| id | `integer` |
-
-### Returns
-- `number`
-
-### C Prototype
-`f32 le_get_light_intensity(s16 id);`
-
-[:arrow_up_small:](#)
-
-
-
-## [le_set_light_intensity](#le_set_light_intensity)
-
-### Description
-Sets a lighting engine point light's `intensity`
-
-### Lua Example
-`le_set_light_intensity(id, intensity)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| id | `integer` |
-| intensity | `number` |
-
-### Returns
-- None
-
-### C Prototype
-`void le_set_light_intensity(s16 id, f32 intensity);`
-
-[:arrow_up_small:](#)
-
-
-
-## [le_get_light_use_surface_normals](#le_get_light_use_surface_normals)
-
-### Description
-Gets whether a lighting engine point light will use a surface's normals to determine its brightness with `useSurfaceNormals`
-
-### Lua Example
-`local booleanValue = le_get_light_use_surface_normals(id)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| id | `integer` |
-
-### Returns
-- `boolean`
-
-### C Prototype
-`bool le_get_light_use_surface_normals(s16 id);`
-
-[:arrow_up_small:](#)
-
-
-
-## [le_set_light_use_surface_normals](#le_set_light_use_surface_normals)
-
-### Description
-Sets whether a lighting engine point light will use a surface's normals to determine its brightness with `useSurfaceNormals`
-
-### Lua Example
-`le_set_light_use_surface_normals(id, useSurfaceNormals)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| id | `integer` |
-| useSurfaceNormals | `boolean` |
-
-### Returns
-- None
-
-### C Prototype
-`void le_set_light_use_surface_normals(s16 id, bool useSurfaceNormals);`
+`void game_unpause(void);`
[:arrow_up_small:](#)
diff --git a/docs/lua/functions-4.md b/docs/lua/functions-4.md
index ecdb479e4..d439877c6 100644
--- a/docs/lua/functions-4.md
+++ b/docs/lua/functions-4.md
@@ -5,6 +5,561 @@
[< prev](functions-3.md) | [1](functions.md) | [2](functions-2.md) | [3](functions-3.md) | 4 | [5](functions-5.md) | [6](functions-6.md) | [7](functions-7.md) | [next >](functions-5.md)]
+---
+# functions from lighting_engine.h
+
+
+
+
+## [le_is_enabled](#le_is_enabled)
+
+### Description
+Gets whether the lighting engine has been enabled or not. It becomes enabled once a light is added or the ambient color is set
+
+### Lua Example
+`local booleanValue = le_is_enabled()`
+
+### Parameters
+- None
+
+### Returns
+- `boolean`
+
+### C Prototype
+`bool le_is_enabled(void);`
+
+[:arrow_up_small:](#)
+
+
+
+## [le_set_mode](#le_set_mode)
+
+### Description
+Sets the lighting engine mode to `mode`
+
+### Lua Example
+`le_set_mode(mode)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| mode | [enum LEMode](constants.md#enum-LEMode) |
+
+### Returns
+- None
+
+### C Prototype
+`void le_set_mode(enum LEMode mode);`
+
+[:arrow_up_small:](#)
+
+
+
+## [le_get_mode](#le_get_mode)
+
+### Description
+Gets the lighting engine mode
+
+### Lua Example
+`local enumValue = le_get_mode()`
+
+### Parameters
+- None
+
+### Returns
+[enum LEMode](constants.md#enum-LEMode)
+
+### C Prototype
+`enum LEMode le_get_mode(void);`
+
+[:arrow_up_small:](#)
+
+
+
+## [le_set_tone_mapping](#le_set_tone_mapping)
+
+### Description
+Sets the lighting engine's tone mapping mode to `toneMapping`
+
+### Lua Example
+`le_set_tone_mapping(toneMapping)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| toneMapping | [enum LEToneMapping](constants.md#enum-LEToneMapping) |
+
+### Returns
+- None
+
+### C Prototype
+`void le_set_tone_mapping(enum LEToneMapping toneMapping);`
+
+[:arrow_up_small:](#)
+
+
+
+## [le_get_ambient_color](#le_get_ambient_color)
+
+### Description
+Outputs the lighting engine's ambient color to `out`
+
+### Lua Example
+`le_get_ambient_color(out)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| out | [Color](structs.md#Color) |
+
+### Returns
+- None
+
+### C Prototype
+`void le_get_ambient_color(OUT Color out);`
+
+[:arrow_up_small:](#)
+
+
+
+## [le_set_ambient_color](#le_set_ambient_color)
+
+### Description
+Sets the lighting engine ambient color
+
+### Lua Example
+`le_set_ambient_color(r, g, b)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| r | `integer` |
+| g | `integer` |
+| b | `integer` |
+
+### Returns
+- None
+
+### C Prototype
+`void le_set_ambient_color(u8 r, u8 g, u8 b);`
+
+[:arrow_up_small:](#)
+
+
+
+## [le_calculate_lighting_color](#le_calculate_lighting_color)
+
+### Description
+Calculates the lighting with `lightIntensityScalar` at a position and outputs the color in `out`
+
+### Lua Example
+`le_calculate_lighting_color(pos, out, lightIntensityScalar)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| pos | [Vec3f](structs.md#Vec3f) |
+| out | [Color](structs.md#Color) |
+| lightIntensityScalar | `number` |
+
+### Returns
+- None
+
+### C Prototype
+`void le_calculate_lighting_color(Vec3f pos, OUT Color out, f32 lightIntensityScalar);`
+
+[:arrow_up_small:](#)
+
+
+
+## [le_calculate_lighting_color_with_normal](#le_calculate_lighting_color_with_normal)
+
+### Description
+Calculates the lighting with `lightIntensityScalar` at a position and with a normal and outputs the color in `out`
+
+### Lua Example
+`le_calculate_lighting_color_with_normal(pos, normal, out, lightIntensityScalar)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| pos | [Vec3f](structs.md#Vec3f) |
+| normal | [Vec3f](structs.md#Vec3f) |
+| out | [Color](structs.md#Color) |
+| lightIntensityScalar | `number` |
+
+### Returns
+- None
+
+### C Prototype
+`void le_calculate_lighting_color_with_normal(Vec3f pos, Vec3f normal, OUT Color out, f32 lightIntensityScalar);`
+
+[:arrow_up_small:](#)
+
+
+
+## [le_calculate_lighting_dir](#le_calculate_lighting_dir)
+
+### Description
+Calculates the lighting direction from a position and outputs the result in `out`
+
+### Lua Example
+`le_calculate_lighting_dir(pos, out)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| pos | [Vec3f](structs.md#Vec3f) |
+| out | [Vec3f](structs.md#Vec3f) |
+
+### Returns
+- None
+
+### C Prototype
+`void le_calculate_lighting_dir(Vec3f pos, OUT Vec3f out);`
+
+[:arrow_up_small:](#)
+
+
+
+## [le_add_light](#le_add_light)
+
+### Description
+Adds a lighting engine point light at `x`, `y`, `z` with color `r`, `g`, `b` and `radius` with `intensity`
+
+### Lua Example
+`local integerValue = le_add_light(x, y, z, r, g, b, radius, intensity)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| x | `number` |
+| y | `number` |
+| z | `number` |
+| r | `integer` |
+| g | `integer` |
+| b | `integer` |
+| radius | `number` |
+| intensity | `number` |
+
+### Returns
+- `integer`
+
+### C Prototype
+`s16 le_add_light(f32 x, f32 y, f32 z, u8 r, u8 g, u8 b, f32 radius, f32 intensity);`
+
+[:arrow_up_small:](#)
+
+
+
+## [le_remove_light](#le_remove_light)
+
+### Description
+Removes a lighting engine point light corresponding to `id`
+
+### Lua Example
+`le_remove_light(id)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| id | `integer` |
+
+### Returns
+- None
+
+### C Prototype
+`void le_remove_light(s16 id);`
+
+[:arrow_up_small:](#)
+
+
+
+## [le_get_light_count](#le_get_light_count)
+
+### Description
+Gets the total number of lights currently loaded in the lighting engine
+
+### Lua Example
+`local integerValue = le_get_light_count()`
+
+### Parameters
+- None
+
+### Returns
+- `integer`
+
+### C Prototype
+`s16 le_get_light_count(void);`
+
+[:arrow_up_small:](#)
+
+
+
+## [le_light_exists](#le_light_exists)
+
+### Description
+Checks if a lighting engine point light corresponding to `id` exists
+
+### Lua Example
+`local booleanValue = le_light_exists(id)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| id | `integer` |
+
+### Returns
+- `boolean`
+
+### C Prototype
+`bool le_light_exists(s16 id);`
+
+[:arrow_up_small:](#)
+
+
+
+## [le_get_light_pos](#le_get_light_pos)
+
+### Description
+Outputs a lighting engine point light's position to `out`
+
+### Lua Example
+`le_get_light_pos(id, out)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| id | `integer` |
+| out | [Vec3f](structs.md#Vec3f) |
+
+### Returns
+- None
+
+### C Prototype
+`void le_get_light_pos(s16 id, OUT Vec3f out);`
+
+[:arrow_up_small:](#)
+
+
+
+## [le_set_light_pos](#le_set_light_pos)
+
+### Description
+Sets a lighting engine point light's position to `x`, `y`, `z`
+
+### Lua Example
+`le_set_light_pos(id, x, y, z)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| id | `integer` |
+| x | `number` |
+| y | `number` |
+| z | `number` |
+
+### Returns
+- None
+
+### C Prototype
+`void le_set_light_pos(s16 id, f32 x, f32 y, f32 z);`
+
+[:arrow_up_small:](#)
+
+
+
+## [le_get_light_color](#le_get_light_color)
+
+### Description
+Outputs a lighting engine point light's color to `out`
+
+### Lua Example
+`le_get_light_color(id, out)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| id | `integer` |
+| out | [Color](structs.md#Color) |
+
+### Returns
+- None
+
+### C Prototype
+`void le_get_light_color(s16 id, OUT Color out);`
+
+[:arrow_up_small:](#)
+
+
+
+## [le_set_light_color](#le_set_light_color)
+
+### Description
+Sets a lighting engine point light's color to `r`, `g`, `b`
+
+### Lua Example
+`le_set_light_color(id, r, g, b)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| id | `integer` |
+| r | `integer` |
+| g | `integer` |
+| b | `integer` |
+
+### Returns
+- None
+
+### C Prototype
+`void le_set_light_color(s16 id, u8 r, u8 g, u8 b);`
+
+[:arrow_up_small:](#)
+
+
+
+## [le_get_light_radius](#le_get_light_radius)
+
+### Description
+Gets a lighting engine point light's `radius`
+
+### Lua Example
+`local numberValue = le_get_light_radius(id)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| id | `integer` |
+
+### Returns
+- `number`
+
+### C Prototype
+`f32 le_get_light_radius(s16 id);`
+
+[:arrow_up_small:](#)
+
+
+
+## [le_set_light_radius](#le_set_light_radius)
+
+### Description
+Sets a lighting engine point light's `radius`
+
+### Lua Example
+`le_set_light_radius(id, radius)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| id | `integer` |
+| radius | `number` |
+
+### Returns
+- None
+
+### C Prototype
+`void le_set_light_radius(s16 id, f32 radius);`
+
+[:arrow_up_small:](#)
+
+
+
+## [le_get_light_intensity](#le_get_light_intensity)
+
+### Description
+Gets a lighting engine point light's `intensity`
+
+### Lua Example
+`local numberValue = le_get_light_intensity(id)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| id | `integer` |
+
+### Returns
+- `number`
+
+### C Prototype
+`f32 le_get_light_intensity(s16 id);`
+
+[:arrow_up_small:](#)
+
+
+
+## [le_set_light_intensity](#le_set_light_intensity)
+
+### Description
+Sets a lighting engine point light's `intensity`
+
+### Lua Example
+`le_set_light_intensity(id, intensity)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| id | `integer` |
+| intensity | `number` |
+
+### Returns
+- None
+
+### C Prototype
+`void le_set_light_intensity(s16 id, f32 intensity);`
+
+[:arrow_up_small:](#)
+
+
+
+## [le_get_light_use_surface_normals](#le_get_light_use_surface_normals)
+
+### Description
+Gets whether a lighting engine point light will use a surface's normals to determine its brightness with `useSurfaceNormals`
+
+### Lua Example
+`local booleanValue = le_get_light_use_surface_normals(id)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| id | `integer` |
+
+### Returns
+- `boolean`
+
+### C Prototype
+`bool le_get_light_use_surface_normals(s16 id);`
+
+[:arrow_up_small:](#)
+
+
+
+## [le_set_light_use_surface_normals](#le_set_light_use_surface_normals)
+
+### Description
+Sets whether a lighting engine point light will use a surface's normals to determine its brightness with `useSurfaceNormals`
+
+### Lua Example
+`le_set_light_use_surface_normals(id, useSurfaceNormals)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| id | `integer` |
+| useSurfaceNormals | `boolean` |
+
+### Returns
+- None
+
+### C Prototype
+`void le_set_light_use_surface_normals(s16 id, bool useSurfaceNormals);`
+
+[:arrow_up_small:](#)
+
+
+
---
# functions from mario.h
@@ -6191,545 +6746,6 @@ Converts a 3D integer vector `a` into a 3D short integer vector and stores the r
[:arrow_up_small:](#)
-
-
----
-# functions from math_util_vec3s.inl
-
-
-
-
-## [vec3s_zero](#vec3s_zero)
-
-### Description
-Sets the components of the 3D short integer vector `v` to 0
-
-### Lua Example
-`local Vec3sValue = vec3s_zero(v)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| v | [Vec3s](structs.md#Vec3s) |
-
-### Returns
-[Vec3s](structs.md#Vec3s)
-
-### C Prototype
-`Vec3sp vec3s_zero(OUT Vec3s v);`
-
-[:arrow_up_small:](#)
-
-
-
-## [vec3s_copy](#vec3s_copy)
-
-### Description
-Copies the contents of a 3D short integer vector (`src`) into another 3D short integer vector (`dest`)
-
-### Lua Example
-`local Vec3sValue = vec3s_copy(dest, src)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| dest | [Vec3s](structs.md#Vec3s) |
-| src | [Vec3s](structs.md#Vec3s) |
-
-### Returns
-[Vec3s](structs.md#Vec3s)
-
-### C Prototype
-`Vec3sp vec3s_copy(OUT Vec3s dest, Vec3s src);`
-
-[:arrow_up_small:](#)
-
-
-
-## [vec3s_set](#vec3s_set)
-
-### Description
-Sets the values of the 3D short integer vector `dest` to the given x, y, and z values
-
-### Lua Example
-`local Vec3sValue = vec3s_set(dest, x, y, z)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| dest | [Vec3s](structs.md#Vec3s) |
-| x | `integer` |
-| y | `integer` |
-| z | `integer` |
-
-### Returns
-[Vec3s](structs.md#Vec3s)
-
-### C Prototype
-`Vec3sp vec3s_set(OUT Vec3s dest, s16 x, s16 y, s16 z);`
-
-[:arrow_up_small:](#)
-
-
-
-## [vec3s_add](#vec3s_add)
-
-### Description
-Adds the components of the 3D short integer vector `a` to `dest`
-
-### Lua Example
-`local Vec3sValue = vec3s_add(dest, a)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| dest | [Vec3s](structs.md#Vec3s) |
-| a | [Vec3s](structs.md#Vec3s) |
-
-### Returns
-[Vec3s](structs.md#Vec3s)
-
-### C Prototype
-`Vec3sp vec3s_add(OUT Vec3s dest, Vec3s a);`
-
-[:arrow_up_small:](#)
-
-
-
-## [vec3s_sum](#vec3s_sum)
-
-### Description
-Adds the components of two 3D short integer vectors `a` and `b` and stores the result in `dest`
-
-### Lua Example
-`local Vec3sValue = vec3s_sum(dest, a, b)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| dest | [Vec3s](structs.md#Vec3s) |
-| a | [Vec3s](structs.md#Vec3s) |
-| b | [Vec3s](structs.md#Vec3s) |
-
-### Returns
-[Vec3s](structs.md#Vec3s)
-
-### C Prototype
-`Vec3sp vec3s_sum(OUT Vec3s dest, Vec3s a, Vec3s b);`
-
-[:arrow_up_small:](#)
-
-
-
-## [vec3s_sub](#vec3s_sub)
-
-### Description
-Subtracts the components of the 3D short integer vector `a` from `dest`
-
-### Lua Example
-`local Vec3sValue = vec3s_sub(dest, a)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| dest | [Vec3s](structs.md#Vec3s) |
-| a | [Vec3s](structs.md#Vec3s) |
-
-### Returns
-[Vec3s](structs.md#Vec3s)
-
-### C Prototype
-`Vec3sp vec3s_sub(OUT Vec3s dest, Vec3s a);`
-
-[:arrow_up_small:](#)
-
-
-
-## [vec3s_dif](#vec3s_dif)
-
-### Description
-Subtracts the components of the 3D short integer vector `b` from the components of `a` and stores the result in `dest`
-
-### Lua Example
-`local Vec3sValue = vec3s_dif(dest, a, b)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| dest | [Vec3s](structs.md#Vec3s) |
-| a | [Vec3s](structs.md#Vec3s) |
-| b | [Vec3s](structs.md#Vec3s) |
-
-### Returns
-[Vec3s](structs.md#Vec3s)
-
-### C Prototype
-`Vec3sp vec3s_dif(OUT Vec3s dest, Vec3s a, Vec3s b);`
-
-[:arrow_up_small:](#)
-
-
-
-## [vec3s_mul](#vec3s_mul)
-
-### Description
-Multiplies each component of the 3D short integer vector `dest` by the scalar value `a`
-
-### Lua Example
-`local Vec3sValue = vec3s_mul(dest, a)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| dest | [Vec3s](structs.md#Vec3s) |
-| a | `number` |
-
-### Returns
-[Vec3s](structs.md#Vec3s)
-
-### C Prototype
-`Vec3sp vec3s_mul(OUT Vec3s dest, f32 a);`
-
-[:arrow_up_small:](#)
-
-
-
-## [vec3s_mult](#vec3s_mult)
-
-### Description
-Multiplies the components of the 3D short integer vector `dest` with the components of `a`
-
-### Lua Example
-`local Vec3sValue = vec3s_mult(dest, a)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| dest | [Vec3s](structs.md#Vec3s) |
-| a | [Vec3s](structs.md#Vec3s) |
-
-### Returns
-[Vec3s](structs.md#Vec3s)
-
-### C Prototype
-`Vec3sp vec3s_mult(OUT Vec3s dest, Vec3s a);`
-
-[:arrow_up_small:](#)
-
-
-
-## [vec3s_prod](#vec3s_prod)
-
-### Description
-Multiplies the components of two 3D short integer vectors `a` and `b` and stores the result in `dest`
-
-### Lua Example
-`local Vec3sValue = vec3s_prod(dest, a, b)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| dest | [Vec3s](structs.md#Vec3s) |
-| a | [Vec3s](structs.md#Vec3s) |
-| b | [Vec3s](structs.md#Vec3s) |
-
-### Returns
-[Vec3s](structs.md#Vec3s)
-
-### C Prototype
-`Vec3sp vec3s_prod(OUT Vec3s dest, Vec3s a, Vec3s b);`
-
-[:arrow_up_small:](#)
-
-
-
-## [vec3s_div](#vec3s_div)
-
-### Description
-Divides each component of the 3D short integer vector `dest` by the scalar value `a`
-
-### Lua Example
-`local Vec3sValue = vec3s_div(dest, a)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| dest | [Vec3s](structs.md#Vec3s) |
-| a | `number` |
-
-### Returns
-[Vec3s](structs.md#Vec3s)
-
-### C Prototype
-`Vec3sp vec3s_div(OUT Vec3s dest, f32 a);`
-
-[:arrow_up_small:](#)
-
-
-
-## [vec3s_length](#vec3s_length)
-
-### Description
-Calculates the length (magnitude) of the 3D short integer vector `a`
-
-### Lua Example
-`local numberValue = vec3s_length(a)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| a | [Vec3s](structs.md#Vec3s) |
-
-### Returns
-- `number`
-
-### C Prototype
-`f32 vec3s_length(Vec3s a);`
-
-[:arrow_up_small:](#)
-
-
-
-## [vec3s_normalize](#vec3s_normalize)
-
-### Description
-Normalizes the 3D short integer vector `v` so that its length (magnitude) becomes 1, while retaining its direction
-
-### Lua Example
-`local Vec3sValue = vec3s_normalize(v)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| v | [Vec3s](structs.md#Vec3s) |
-
-### Returns
-[Vec3s](structs.md#Vec3s)
-
-### C Prototype
-`Vec3sp vec3s_normalize(OUT Vec3s v);`
-
-[:arrow_up_small:](#)
-
-
-
-## [vec3s_set_magnitude](#vec3s_set_magnitude)
-
-### Description
-Sets the length (magnitude) of 3D short integer vector `v`, while retaining its direction
-
-### Lua Example
-`local Vec3sValue = vec3s_set_magnitude(v, mag)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| v | [Vec3s](structs.md#Vec3s) |
-| mag | `number` |
-
-### Returns
-[Vec3s](structs.md#Vec3s)
-
-### C Prototype
-`Vec3sp vec3s_set_magnitude(OUT Vec3s v, f32 mag);`
-
-[:arrow_up_small:](#)
-
-
-
-## [vec3s_dot](#vec3s_dot)
-
-### Description
-Computes the dot product of the two 3D short integer vectors `a` and `b`
-
-### Lua Example
-`local numberValue = vec3s_dot(a, b)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| a | [Vec3s](structs.md#Vec3s) |
-| b | [Vec3s](structs.md#Vec3s) |
-
-### Returns
-- `number`
-
-### C Prototype
-`f32 vec3s_dot(Vec3s a, Vec3s b);`
-
-[:arrow_up_small:](#)
-
-
-
-## [vec3s_cross](#vec3s_cross)
-
-### Description
-Computes the cross product of two 3D short integer vectors `a` and `b` and stores the result in `dest`
-
-### Lua Example
-`local Vec3sValue = vec3s_cross(dest, a, b)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| dest | [Vec3s](structs.md#Vec3s) |
-| a | [Vec3s](structs.md#Vec3s) |
-| b | [Vec3s](structs.md#Vec3s) |
-
-### Returns
-[Vec3s](structs.md#Vec3s)
-
-### C Prototype
-`Vec3sp vec3s_cross(OUT Vec3s dest, Vec3s a, Vec3s b);`
-
-[:arrow_up_small:](#)
-
-
-
-## [vec3s_combine](#vec3s_combine)
-
-### Description
-Takes two 3D short integer vectors `vecA` and `vecB`, multiplies them by `sclA` and `sclB` respectively, adds the scaled vectors together and stores the result in `dest`
-
-### Lua Example
-`local Vec3sValue = vec3s_combine(dest, vecA, vecB, sclA, sclB)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| dest | [Vec3s](structs.md#Vec3s) |
-| vecA | [Vec3s](structs.md#Vec3s) |
-| vecB | [Vec3s](structs.md#Vec3s) |
-| sclA | `number` |
-| sclB | `number` |
-
-### Returns
-[Vec3s](structs.md#Vec3s)
-
-### C Prototype
-`Vec3sp vec3s_combine(OUT Vec3s dest, Vec3s vecA, Vec3s vecB, f32 sclA, f32 sclB);`
-
-[:arrow_up_small:](#)
-
-
-
-## [vec3s_dist](#vec3s_dist)
-
-### Description
-Calculates the distance between two 3D short integer vectors `v1` and `v2`
-
-### Lua Example
-`local numberValue = vec3s_dist(v1, v2)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| v1 | [Vec3s](structs.md#Vec3s) |
-| v2 | [Vec3s](structs.md#Vec3s) |
-
-### Returns
-- `number`
-
-### C Prototype
-`f32 vec3s_dist(Vec3s v1, Vec3s v2);`
-
-[:arrow_up_small:](#)
-
-
-
-## [vec3s_hdist](#vec3s_hdist)
-
-### Description
-Calculates the horizontal distance between two 3D short integer vectors `v1` and `v2`, as if their y component was 0
-
-### Lua Example
-`local numberValue = vec3s_hdist(v1, v2)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| v1 | [Vec3s](structs.md#Vec3s) |
-| v2 | [Vec3s](structs.md#Vec3s) |
-
-### Returns
-- `number`
-
-### C Prototype
-`f32 vec3s_hdist(Vec3s v1, Vec3s v2);`
-
-[:arrow_up_small:](#)
-
-
-
-## [vec3s_is_zero](#vec3s_is_zero)
-
-### Description
-Returns `true` if all components of the 3D short integer vector `v` are zero
-
-### Lua Example
-`local booleanValue = vec3s_is_zero(v)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| v | [Vec3s](structs.md#Vec3s) |
-
-### Returns
-- `boolean`
-
-### C Prototype
-`bool vec3s_is_zero(Vec3s v);`
-
-[:arrow_up_small:](#)
-
-
-
-## [vec3s_to_vec3f](#vec3s_to_vec3f)
-
-### Description
-Converts a 3D short integer vector `a` into a 3D floating-point vector and stores the result in `dest`
-
-### Lua Example
-`local Vec3fValue = vec3s_to_vec3f(dest, a)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| dest | [Vec3f](structs.md#Vec3f) |
-| a | [Vec3s](structs.md#Vec3s) |
-
-### Returns
-[Vec3f](structs.md#Vec3f)
-
-### C Prototype
-`Vec3fp vec3s_to_vec3f(OUT Vec3f dest, Vec3s a);`
-
-[:arrow_up_small:](#)
-
-
-
-## [vec3s_to_vec3i](#vec3s_to_vec3i)
-
-### Description
-Converts a 3D short integer vector `a` into a 3D integer vector and stores the result in `dest`
-
-### Lua Example
-`local Vec3iValue = vec3s_to_vec3i(dest, a)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| dest | [Vec3i](structs.md#Vec3i) |
-| a | [Vec3s](structs.md#Vec3s) |
-
-### Returns
-[Vec3i](structs.md#Vec3i)
-
-### C Prototype
-`Vec3ip vec3s_to_vec3i(OUT Vec3i dest, Vec3s a);`
-
-[:arrow_up_small:](#)
-
---
diff --git a/docs/lua/functions-5.md b/docs/lua/functions-5.md
index a3ff14601..21ef90e6f 100644
--- a/docs/lua/functions-5.md
+++ b/docs/lua/functions-5.md
@@ -5,6 +5,545 @@
[< prev](functions-4.md) | [1](functions.md) | [2](functions-2.md) | [3](functions-3.md) | [4](functions-4.md) | 5 | [6](functions-6.md) | [7](functions-7.md) | [next >](functions-6.md)]
+---
+# functions from math_util_vec3s.inl
+
+
+
+
+## [vec3s_zero](#vec3s_zero)
+
+### Description
+Sets the components of the 3D short integer vector `v` to 0
+
+### Lua Example
+`local Vec3sValue = vec3s_zero(v)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| v | [Vec3s](structs.md#Vec3s) |
+
+### Returns
+[Vec3s](structs.md#Vec3s)
+
+### C Prototype
+`Vec3sp vec3s_zero(OUT Vec3s v);`
+
+[:arrow_up_small:](#)
+
+
+
+## [vec3s_copy](#vec3s_copy)
+
+### Description
+Copies the contents of a 3D short integer vector (`src`) into another 3D short integer vector (`dest`)
+
+### Lua Example
+`local Vec3sValue = vec3s_copy(dest, src)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| dest | [Vec3s](structs.md#Vec3s) |
+| src | [Vec3s](structs.md#Vec3s) |
+
+### Returns
+[Vec3s](structs.md#Vec3s)
+
+### C Prototype
+`Vec3sp vec3s_copy(OUT Vec3s dest, Vec3s src);`
+
+[:arrow_up_small:](#)
+
+
+
+## [vec3s_set](#vec3s_set)
+
+### Description
+Sets the values of the 3D short integer vector `dest` to the given x, y, and z values
+
+### Lua Example
+`local Vec3sValue = vec3s_set(dest, x, y, z)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| dest | [Vec3s](structs.md#Vec3s) |
+| x | `integer` |
+| y | `integer` |
+| z | `integer` |
+
+### Returns
+[Vec3s](structs.md#Vec3s)
+
+### C Prototype
+`Vec3sp vec3s_set(OUT Vec3s dest, s16 x, s16 y, s16 z);`
+
+[:arrow_up_small:](#)
+
+
+
+## [vec3s_add](#vec3s_add)
+
+### Description
+Adds the components of the 3D short integer vector `a` to `dest`
+
+### Lua Example
+`local Vec3sValue = vec3s_add(dest, a)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| dest | [Vec3s](structs.md#Vec3s) |
+| a | [Vec3s](structs.md#Vec3s) |
+
+### Returns
+[Vec3s](structs.md#Vec3s)
+
+### C Prototype
+`Vec3sp vec3s_add(OUT Vec3s dest, Vec3s a);`
+
+[:arrow_up_small:](#)
+
+
+
+## [vec3s_sum](#vec3s_sum)
+
+### Description
+Adds the components of two 3D short integer vectors `a` and `b` and stores the result in `dest`
+
+### Lua Example
+`local Vec3sValue = vec3s_sum(dest, a, b)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| dest | [Vec3s](structs.md#Vec3s) |
+| a | [Vec3s](structs.md#Vec3s) |
+| b | [Vec3s](structs.md#Vec3s) |
+
+### Returns
+[Vec3s](structs.md#Vec3s)
+
+### C Prototype
+`Vec3sp vec3s_sum(OUT Vec3s dest, Vec3s a, Vec3s b);`
+
+[:arrow_up_small:](#)
+
+
+
+## [vec3s_sub](#vec3s_sub)
+
+### Description
+Subtracts the components of the 3D short integer vector `a` from `dest`
+
+### Lua Example
+`local Vec3sValue = vec3s_sub(dest, a)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| dest | [Vec3s](structs.md#Vec3s) |
+| a | [Vec3s](structs.md#Vec3s) |
+
+### Returns
+[Vec3s](structs.md#Vec3s)
+
+### C Prototype
+`Vec3sp vec3s_sub(OUT Vec3s dest, Vec3s a);`
+
+[:arrow_up_small:](#)
+
+
+
+## [vec3s_dif](#vec3s_dif)
+
+### Description
+Subtracts the components of the 3D short integer vector `b` from the components of `a` and stores the result in `dest`
+
+### Lua Example
+`local Vec3sValue = vec3s_dif(dest, a, b)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| dest | [Vec3s](structs.md#Vec3s) |
+| a | [Vec3s](structs.md#Vec3s) |
+| b | [Vec3s](structs.md#Vec3s) |
+
+### Returns
+[Vec3s](structs.md#Vec3s)
+
+### C Prototype
+`Vec3sp vec3s_dif(OUT Vec3s dest, Vec3s a, Vec3s b);`
+
+[:arrow_up_small:](#)
+
+
+
+## [vec3s_mul](#vec3s_mul)
+
+### Description
+Multiplies each component of the 3D short integer vector `dest` by the scalar value `a`
+
+### Lua Example
+`local Vec3sValue = vec3s_mul(dest, a)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| dest | [Vec3s](structs.md#Vec3s) |
+| a | `number` |
+
+### Returns
+[Vec3s](structs.md#Vec3s)
+
+### C Prototype
+`Vec3sp vec3s_mul(OUT Vec3s dest, f32 a);`
+
+[:arrow_up_small:](#)
+
+
+
+## [vec3s_mult](#vec3s_mult)
+
+### Description
+Multiplies the components of the 3D short integer vector `dest` with the components of `a`
+
+### Lua Example
+`local Vec3sValue = vec3s_mult(dest, a)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| dest | [Vec3s](structs.md#Vec3s) |
+| a | [Vec3s](structs.md#Vec3s) |
+
+### Returns
+[Vec3s](structs.md#Vec3s)
+
+### C Prototype
+`Vec3sp vec3s_mult(OUT Vec3s dest, Vec3s a);`
+
+[:arrow_up_small:](#)
+
+
+
+## [vec3s_prod](#vec3s_prod)
+
+### Description
+Multiplies the components of two 3D short integer vectors `a` and `b` and stores the result in `dest`
+
+### Lua Example
+`local Vec3sValue = vec3s_prod(dest, a, b)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| dest | [Vec3s](structs.md#Vec3s) |
+| a | [Vec3s](structs.md#Vec3s) |
+| b | [Vec3s](structs.md#Vec3s) |
+
+### Returns
+[Vec3s](structs.md#Vec3s)
+
+### C Prototype
+`Vec3sp vec3s_prod(OUT Vec3s dest, Vec3s a, Vec3s b);`
+
+[:arrow_up_small:](#)
+
+
+
+## [vec3s_div](#vec3s_div)
+
+### Description
+Divides each component of the 3D short integer vector `dest` by the scalar value `a`
+
+### Lua Example
+`local Vec3sValue = vec3s_div(dest, a)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| dest | [Vec3s](structs.md#Vec3s) |
+| a | `number` |
+
+### Returns
+[Vec3s](structs.md#Vec3s)
+
+### C Prototype
+`Vec3sp vec3s_div(OUT Vec3s dest, f32 a);`
+
+[:arrow_up_small:](#)
+
+
+
+## [vec3s_length](#vec3s_length)
+
+### Description
+Calculates the length (magnitude) of the 3D short integer vector `a`
+
+### Lua Example
+`local numberValue = vec3s_length(a)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| a | [Vec3s](structs.md#Vec3s) |
+
+### Returns
+- `number`
+
+### C Prototype
+`f32 vec3s_length(Vec3s a);`
+
+[:arrow_up_small:](#)
+
+
+
+## [vec3s_normalize](#vec3s_normalize)
+
+### Description
+Normalizes the 3D short integer vector `v` so that its length (magnitude) becomes 1, while retaining its direction
+
+### Lua Example
+`local Vec3sValue = vec3s_normalize(v)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| v | [Vec3s](structs.md#Vec3s) |
+
+### Returns
+[Vec3s](structs.md#Vec3s)
+
+### C Prototype
+`Vec3sp vec3s_normalize(OUT Vec3s v);`
+
+[:arrow_up_small:](#)
+
+
+
+## [vec3s_set_magnitude](#vec3s_set_magnitude)
+
+### Description
+Sets the length (magnitude) of 3D short integer vector `v`, while retaining its direction
+
+### Lua Example
+`local Vec3sValue = vec3s_set_magnitude(v, mag)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| v | [Vec3s](structs.md#Vec3s) |
+| mag | `number` |
+
+### Returns
+[Vec3s](structs.md#Vec3s)
+
+### C Prototype
+`Vec3sp vec3s_set_magnitude(OUT Vec3s v, f32 mag);`
+
+[:arrow_up_small:](#)
+
+
+
+## [vec3s_dot](#vec3s_dot)
+
+### Description
+Computes the dot product of the two 3D short integer vectors `a` and `b`
+
+### Lua Example
+`local numberValue = vec3s_dot(a, b)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| a | [Vec3s](structs.md#Vec3s) |
+| b | [Vec3s](structs.md#Vec3s) |
+
+### Returns
+- `number`
+
+### C Prototype
+`f32 vec3s_dot(Vec3s a, Vec3s b);`
+
+[:arrow_up_small:](#)
+
+
+
+## [vec3s_cross](#vec3s_cross)
+
+### Description
+Computes the cross product of two 3D short integer vectors `a` and `b` and stores the result in `dest`
+
+### Lua Example
+`local Vec3sValue = vec3s_cross(dest, a, b)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| dest | [Vec3s](structs.md#Vec3s) |
+| a | [Vec3s](structs.md#Vec3s) |
+| b | [Vec3s](structs.md#Vec3s) |
+
+### Returns
+[Vec3s](structs.md#Vec3s)
+
+### C Prototype
+`Vec3sp vec3s_cross(OUT Vec3s dest, Vec3s a, Vec3s b);`
+
+[:arrow_up_small:](#)
+
+
+
+## [vec3s_combine](#vec3s_combine)
+
+### Description
+Takes two 3D short integer vectors `vecA` and `vecB`, multiplies them by `sclA` and `sclB` respectively, adds the scaled vectors together and stores the result in `dest`
+
+### Lua Example
+`local Vec3sValue = vec3s_combine(dest, vecA, vecB, sclA, sclB)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| dest | [Vec3s](structs.md#Vec3s) |
+| vecA | [Vec3s](structs.md#Vec3s) |
+| vecB | [Vec3s](structs.md#Vec3s) |
+| sclA | `number` |
+| sclB | `number` |
+
+### Returns
+[Vec3s](structs.md#Vec3s)
+
+### C Prototype
+`Vec3sp vec3s_combine(OUT Vec3s dest, Vec3s vecA, Vec3s vecB, f32 sclA, f32 sclB);`
+
+[:arrow_up_small:](#)
+
+
+
+## [vec3s_dist](#vec3s_dist)
+
+### Description
+Calculates the distance between two 3D short integer vectors `v1` and `v2`
+
+### Lua Example
+`local numberValue = vec3s_dist(v1, v2)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| v1 | [Vec3s](structs.md#Vec3s) |
+| v2 | [Vec3s](structs.md#Vec3s) |
+
+### Returns
+- `number`
+
+### C Prototype
+`f32 vec3s_dist(Vec3s v1, Vec3s v2);`
+
+[:arrow_up_small:](#)
+
+
+
+## [vec3s_hdist](#vec3s_hdist)
+
+### Description
+Calculates the horizontal distance between two 3D short integer vectors `v1` and `v2`, as if their y component was 0
+
+### Lua Example
+`local numberValue = vec3s_hdist(v1, v2)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| v1 | [Vec3s](structs.md#Vec3s) |
+| v2 | [Vec3s](structs.md#Vec3s) |
+
+### Returns
+- `number`
+
+### C Prototype
+`f32 vec3s_hdist(Vec3s v1, Vec3s v2);`
+
+[:arrow_up_small:](#)
+
+
+
+## [vec3s_is_zero](#vec3s_is_zero)
+
+### Description
+Returns `true` if all components of the 3D short integer vector `v` are zero
+
+### Lua Example
+`local booleanValue = vec3s_is_zero(v)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| v | [Vec3s](structs.md#Vec3s) |
+
+### Returns
+- `boolean`
+
+### C Prototype
+`bool vec3s_is_zero(Vec3s v);`
+
+[:arrow_up_small:](#)
+
+
+
+## [vec3s_to_vec3f](#vec3s_to_vec3f)
+
+### Description
+Converts a 3D short integer vector `a` into a 3D floating-point vector and stores the result in `dest`
+
+### Lua Example
+`local Vec3fValue = vec3s_to_vec3f(dest, a)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| dest | [Vec3f](structs.md#Vec3f) |
+| a | [Vec3s](structs.md#Vec3s) |
+
+### Returns
+[Vec3f](structs.md#Vec3f)
+
+### C Prototype
+`Vec3fp vec3s_to_vec3f(OUT Vec3f dest, Vec3s a);`
+
+[:arrow_up_small:](#)
+
+
+
+## [vec3s_to_vec3i](#vec3s_to_vec3i)
+
+### Description
+Converts a 3D short integer vector `a` into a 3D integer vector and stores the result in `dest`
+
+### Lua Example
+`local Vec3iValue = vec3s_to_vec3i(dest, a)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| dest | [Vec3i](structs.md#Vec3i) |
+| a | [Vec3s](structs.md#Vec3s) |
+
+### Returns
+[Vec3i](structs.md#Vec3i)
+
+### C Prototype
+`Vec3ip vec3s_to_vec3i(OUT Vec3i dest, Vec3s a);`
+
+[:arrow_up_small:](#)
+
+
+
---
# functions from misc.h
diff --git a/docs/lua/functions.md b/docs/lua/functions.md
index c5666a892..e29b43383 100644
--- a/docs/lua/functions.md
+++ b/docs/lua/functions.md
@@ -957,6 +957,7 @@
- level_update.h
- [level_control_timer_running](functions-3.md#level_control_timer_running)
+ - [pressed_pause](functions-3.md#pressed_pause)
- [fade_into_special_warp](functions-3.md#fade_into_special_warp)
- [get_instant_warp](functions-3.md#get_instant_warp)
- [get_painting_warp_node](functions-3.md#get_painting_warp_node)
@@ -964,33 +965,35 @@
- [level_trigger_warp](functions-3.md#level_trigger_warp)
- [warp_special](functions-3.md#warp_special)
- [lvl_set_current_level](functions-3.md#lvl_set_current_level)
+ - [game_pause](functions-3.md#game_pause)
+ - [game_unpause](functions-3.md#game_unpause)
- lighting_engine.h
- - [le_is_enabled](functions-3.md#le_is_enabled)
- - [le_set_mode](functions-3.md#le_set_mode)
- - [le_get_mode](functions-3.md#le_get_mode)
- - [le_set_tone_mapping](functions-3.md#le_set_tone_mapping)
- - [le_get_ambient_color](functions-3.md#le_get_ambient_color)
- - [le_set_ambient_color](functions-3.md#le_set_ambient_color)
- - [le_calculate_lighting_color](functions-3.md#le_calculate_lighting_color)
- - [le_calculate_lighting_color_with_normal](functions-3.md#le_calculate_lighting_color_with_normal)
- - [le_calculate_lighting_dir](functions-3.md#le_calculate_lighting_dir)
- - [le_add_light](functions-3.md#le_add_light)
- - [le_remove_light](functions-3.md#le_remove_light)
- - [le_get_light_count](functions-3.md#le_get_light_count)
- - [le_light_exists](functions-3.md#le_light_exists)
- - [le_get_light_pos](functions-3.md#le_get_light_pos)
- - [le_set_light_pos](functions-3.md#le_set_light_pos)
- - [le_get_light_color](functions-3.md#le_get_light_color)
- - [le_set_light_color](functions-3.md#le_set_light_color)
- - [le_get_light_radius](functions-3.md#le_get_light_radius)
- - [le_set_light_radius](functions-3.md#le_set_light_radius)
- - [le_get_light_intensity](functions-3.md#le_get_light_intensity)
- - [le_set_light_intensity](functions-3.md#le_set_light_intensity)
- - [le_get_light_use_surface_normals](functions-3.md#le_get_light_use_surface_normals)
- - [le_set_light_use_surface_normals](functions-3.md#le_set_light_use_surface_normals)
+ - [le_is_enabled](functions-4.md#le_is_enabled)
+ - [le_set_mode](functions-4.md#le_set_mode)
+ - [le_get_mode](functions-4.md#le_get_mode)
+ - [le_set_tone_mapping](functions-4.md#le_set_tone_mapping)
+ - [le_get_ambient_color](functions-4.md#le_get_ambient_color)
+ - [le_set_ambient_color](functions-4.md#le_set_ambient_color)
+ - [le_calculate_lighting_color](functions-4.md#le_calculate_lighting_color)
+ - [le_calculate_lighting_color_with_normal](functions-4.md#le_calculate_lighting_color_with_normal)
+ - [le_calculate_lighting_dir](functions-4.md#le_calculate_lighting_dir)
+ - [le_add_light](functions-4.md#le_add_light)
+ - [le_remove_light](functions-4.md#le_remove_light)
+ - [le_get_light_count](functions-4.md#le_get_light_count)
+ - [le_light_exists](functions-4.md#le_light_exists)
+ - [le_get_light_pos](functions-4.md#le_get_light_pos)
+ - [le_set_light_pos](functions-4.md#le_set_light_pos)
+ - [le_get_light_color](functions-4.md#le_get_light_color)
+ - [le_set_light_color](functions-4.md#le_set_light_color)
+ - [le_get_light_radius](functions-4.md#le_get_light_radius)
+ - [le_set_light_radius](functions-4.md#le_set_light_radius)
+ - [le_get_light_intensity](functions-4.md#le_get_light_intensity)
+ - [le_set_light_intensity](functions-4.md#le_set_light_intensity)
+ - [le_get_light_use_surface_normals](functions-4.md#le_get_light_use_surface_normals)
+ - [le_set_light_use_surface_normals](functions-4.md#le_set_light_use_surface_normals)
@@ -1310,28 +1313,28 @@
- math_util_vec3s.inl
- - [vec3s_zero](functions-4.md#vec3s_zero)
- - [vec3s_copy](functions-4.md#vec3s_copy)
- - [vec3s_set](functions-4.md#vec3s_set)
- - [vec3s_add](functions-4.md#vec3s_add)
- - [vec3s_sum](functions-4.md#vec3s_sum)
- - [vec3s_sub](functions-4.md#vec3s_sub)
- - [vec3s_dif](functions-4.md#vec3s_dif)
- - [vec3s_mul](functions-4.md#vec3s_mul)
- - [vec3s_mult](functions-4.md#vec3s_mult)
- - [vec3s_prod](functions-4.md#vec3s_prod)
- - [vec3s_div](functions-4.md#vec3s_div)
- - [vec3s_length](functions-4.md#vec3s_length)
- - [vec3s_normalize](functions-4.md#vec3s_normalize)
- - [vec3s_set_magnitude](functions-4.md#vec3s_set_magnitude)
- - [vec3s_dot](functions-4.md#vec3s_dot)
- - [vec3s_cross](functions-4.md#vec3s_cross)
- - [vec3s_combine](functions-4.md#vec3s_combine)
- - [vec3s_dist](functions-4.md#vec3s_dist)
- - [vec3s_hdist](functions-4.md#vec3s_hdist)
- - [vec3s_is_zero](functions-4.md#vec3s_is_zero)
- - [vec3s_to_vec3f](functions-4.md#vec3s_to_vec3f)
- - [vec3s_to_vec3i](functions-4.md#vec3s_to_vec3i)
+ - [vec3s_zero](functions-5.md#vec3s_zero)
+ - [vec3s_copy](functions-5.md#vec3s_copy)
+ - [vec3s_set](functions-5.md#vec3s_set)
+ - [vec3s_add](functions-5.md#vec3s_add)
+ - [vec3s_sum](functions-5.md#vec3s_sum)
+ - [vec3s_sub](functions-5.md#vec3s_sub)
+ - [vec3s_dif](functions-5.md#vec3s_dif)
+ - [vec3s_mul](functions-5.md#vec3s_mul)
+ - [vec3s_mult](functions-5.md#vec3s_mult)
+ - [vec3s_prod](functions-5.md#vec3s_prod)
+ - [vec3s_div](functions-5.md#vec3s_div)
+ - [vec3s_length](functions-5.md#vec3s_length)
+ - [vec3s_normalize](functions-5.md#vec3s_normalize)
+ - [vec3s_set_magnitude](functions-5.md#vec3s_set_magnitude)
+ - [vec3s_dot](functions-5.md#vec3s_dot)
+ - [vec3s_cross](functions-5.md#vec3s_cross)
+ - [vec3s_combine](functions-5.md#vec3s_combine)
+ - [vec3s_dist](functions-5.md#vec3s_dist)
+ - [vec3s_hdist](functions-5.md#vec3s_hdist)
+ - [vec3s_is_zero](functions-5.md#vec3s_is_zero)
+ - [vec3s_to_vec3f](functions-5.md#vec3s_to_vec3f)
+ - [vec3s_to_vec3i](functions-5.md#vec3s_to_vec3i)
diff --git a/src/game/ingame_menu.c b/src/game/ingame_menu.c
index ebd148d4a..a2bcde01b 100644
--- a/src/game/ingame_menu.c
+++ b/src/game/ingame_menu.c
@@ -141,6 +141,8 @@ u8 gMenuHoldKeyIndex = 0;
u8 gMenuHoldKeyTimer = 0;
s32 gDialogResponse = 0;
+static bool sPauseMenuHidden = false;
+
#if defined(VERSION_JP) || defined(VERSION_SH) || defined(VERSION_EU)
#ifdef VERSION_EU
#define CHCACHE_BUFLEN (8 * 8) // EU only converts 8x8
@@ -2029,6 +2031,14 @@ void set_menu_mode(s16 mode) {
}
}
+bool get_pause_menu_hidden(void) {
+ return sPauseMenuHidden;
+}
+
+void set_pause_menu_hidden(bool hidden) {
+ sPauseMenuHidden = hidden;
+}
+
void reset_cutscene_msg_fade(void) {
gCutsceneMsgFade = 0;
}
@@ -2975,7 +2985,7 @@ s16 render_pause_courses_and_castle(void) {
}
break;
case DIALOG_STATE_VERTICAL:
- if (!gDjuiPanelPauseCreated) {
+ if (!gDjuiPanelPauseCreated && !sPauseMenuHidden) {
shade_screen();
render_pause_my_score_coins();
render_pause_red_coins();
@@ -3016,7 +3026,7 @@ s16 render_pause_courses_and_castle(void) {
}
break;
case DIALOG_STATE_HORIZONTAL:
- if (!gDjuiPanelPauseCreated) {
+ if (!gDjuiPanelPauseCreated && !sPauseMenuHidden) {
shade_screen();
print_hud_pause_colorful_str();
diff --git a/src/game/ingame_menu.h b/src/game/ingame_menu.h
index 2b54bd609..a04df1914 100644
--- a/src/game/ingame_menu.h
+++ b/src/game/ingame_menu.h
@@ -111,6 +111,7 @@ enum DialogSpecialChars {
DIALOG_CHAR_TERMINATOR = 0xFF
};
+extern s8 gDialogBoxState;
extern s32 gDialogResponse;
extern u16 gDialogColorFadeTimer;
extern s8 gLastDialogLineNum;
@@ -133,6 +134,8 @@ extern u8 gDialogTextColorG;
extern u8 gDialogTextColorB;
extern u8 gDialogTextColorA;
+extern s16 gMenuMode;
+
void create_dl_identity_matrix(void);
void create_dl_translation_matrix(s8 pushOp, f32 x, f32 y, f32 z);
void create_dl_rotation_matrix(s8 pushOp, f32 a, f32 x, f32 y, f32 z);
@@ -173,6 +176,10 @@ void reset_dialog_render_state(void);
Sets the in-game menu state. 0-1 is the courses box with the castle secret stars and 2-3 is the course completion screen.
|descriptionEnd| */
void set_menu_mode(s16 mode);
+/* |description|Gets if the pause menu elements are hidden, useful for creating custom pause menus|descriptionEnd| */
+bool get_pause_menu_hidden(void);
+/* |description|Sets if the pause menu elements are hidden, useful for creating custom pause menus|descriptionEnd| */
+void set_pause_menu_hidden(bool hidden);
void reset_cutscene_msg_fade(void);
void dl_rgba16_begin_cutscene_msg_fade(void);
void dl_rgba16_stop_cutscene_msg_fade(void);
diff --git a/src/game/level_update.c b/src/game/level_update.c
index 722dd7a47..aaa02a9f0 100644
--- a/src/game/level_update.c
+++ b/src/game/level_update.c
@@ -2033,3 +2033,21 @@ void lvl_skip_credits(void) {
gMarioStates[0].health = 0x880;
play_transition(0x09, 0x14, 0x00, 0x00, 0x00);
}
+
+void game_pause(void) {
+ if (gMenuMode != -1) { return; }
+
+ lower_background_noise(1);
+ cancel_rumble();
+ gCameraMovementFlags |= CAM_MOVE_PAUSE_SCREEN;
+ set_play_mode(PLAY_MODE_PAUSED);
+}
+
+void game_unpause(void) {
+ if (gMenuMode == -1) { return; }
+
+ level_set_transition(0, NULL);
+ gMenuMode = -1;
+ gDialogBoxState = 0;
+ gPauseScreenMode = 1;
+}
diff --git a/src/game/level_update.h b/src/game/level_update.h
index 164b2be68..081d74084 100644
--- a/src/game/level_update.h
+++ b/src/game/level_update.h
@@ -178,6 +178,8 @@ enum HUDDisplayFlag {
/* |description|Returns if the level timer is running|descriptionEnd| */
u8 level_control_timer_running(void);
u16 level_control_timer(s32 timerOp);
+/* |description|Checks if the start button has been pressed as well as some other conditions for opening the pause menu depending on if pause anywhere is enabled|descriptionEnd|*/
+u32 pressed_pause(void);
/* |description|Fades into a special warp with `arg` and using `color`|descriptionEnd| */
void fade_into_special_warp(u32 arg, u32 color);
void load_level_init_text(u32 arg);
@@ -215,4 +217,9 @@ void lvl_skip_credits(void);
void update_menu_level(void);
void stop_demo(UNUSED struct DjuiBase* caller);
+/* |description|Pauses the game|descriptionEnd| */
+void game_pause(void);
+/* |description|Unpauses the game|descriptionEnd| */
+void game_unpause(void);
+
#endif // LEVEL_UPDATE_H
diff --git a/src/pc/lua/smlua_functions_autogen.c b/src/pc/lua/smlua_functions_autogen.c
index 6d0ac5da6..548049611 100644
--- a/src/pc/lua/smlua_functions_autogen.c
+++ b/src/pc/lua/smlua_functions_autogen.c
@@ -15468,6 +15468,21 @@ int smlua_func_level_control_timer_running(UNUSED lua_State* L) {
return 1;
}
+int smlua_func_pressed_pause(UNUSED lua_State* L) {
+ if (L == NULL) { return 0; }
+
+ int top = lua_gettop(L);
+ if (top != 0) {
+ LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "pressed_pause", 0, top);
+ return 0;
+ }
+
+
+ lua_pushinteger(L, pressed_pause());
+
+ return 1;
+}
+
int smlua_func_fade_into_special_warp(lua_State* L) {
if (L == NULL) { return 0; }
@@ -15591,6 +15606,36 @@ int smlua_func_lvl_set_current_level(lua_State* L) {
return 1;
}
+int smlua_func_game_pause(UNUSED lua_State* L) {
+ if (L == NULL) { return 0; }
+
+ int top = lua_gettop(L);
+ if (top != 0) {
+ LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "game_pause", 0, top);
+ return 0;
+ }
+
+
+ game_pause();
+
+ return 1;
+}
+
+int smlua_func_game_unpause(UNUSED lua_State* L) {
+ if (L == NULL) { return 0; }
+
+ int top = lua_gettop(L);
+ if (top != 0) {
+ LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "game_unpause", 0, top);
+ return 0;
+ }
+
+
+ game_unpause();
+
+ return 1;
+}
+
///////////////////////
// lighting_engine.h //
///////////////////////
@@ -37684,6 +37729,7 @@ void smlua_bind_functions_autogen(void) {
// level_update.h
smlua_bind_function(L, "level_control_timer_running", smlua_func_level_control_timer_running);
+ smlua_bind_function(L, "pressed_pause", smlua_func_pressed_pause);
smlua_bind_function(L, "fade_into_special_warp", smlua_func_fade_into_special_warp);
smlua_bind_function(L, "get_instant_warp", smlua_func_get_instant_warp);
smlua_bind_function(L, "get_painting_warp_node", smlua_func_get_painting_warp_node);
@@ -37691,6 +37737,8 @@ void smlua_bind_functions_autogen(void) {
smlua_bind_function(L, "level_trigger_warp", smlua_func_level_trigger_warp);
smlua_bind_function(L, "warp_special", smlua_func_warp_special);
smlua_bind_function(L, "lvl_set_current_level", smlua_func_lvl_set_current_level);
+ smlua_bind_function(L, "game_pause", smlua_func_game_pause);
+ smlua_bind_function(L, "game_unpause", smlua_func_game_unpause);
// lighting_engine.h
smlua_bind_function(L, "le_is_enabled", smlua_func_le_is_enabled);