diff --git a/autogen/convert_constants.py b/autogen/convert_constants.py
index 11b4aacb0..7f6681284 100644
--- a/autogen/convert_constants.py
+++ b/autogen/convert_constants.py
@@ -45,7 +45,8 @@ in_files = [
"src/pc/mods/mod_storage.h",
"src/game/first_person_cam.h",
"src/pc/djui/djui_console.h",
- "src/game/player_palette.h"
+ "src/game/player_palette.h",
+ "src/pc/network/lag_compensation.h"
]
exclude_constants = {
diff --git a/autogen/convert_functions.py b/autogen/convert_functions.py
index 5e321d6b8..dd4ed5cbf 100644
--- a/autogen/convert_functions.py
+++ b/autogen/convert_functions.py
@@ -121,7 +121,7 @@ override_disallowed_functions = {
"src/pc/lua/utils/smlua_level_utils.h": [ "smlua_level_util_reset" ],
"src/pc/lua/utils/smlua_text_utils.h": [ "smlua_text_utils_init", "smlua_text_utils_shutdown", "smlua_text_utils_reset_all" ],
"src/pc/lua/utils/smlua_anim_utils.h": [ "smlua_anim_util_reset", "smlua_anim_util_register_animation" ],
- "src/pc/network/lag_compensation.h": [ "lag_compensation_clear", "lag_compensation_store" ],
+ "src/pc/network/lag_compensation.h": [ "lag_compensation_clear" ],
"src/game/first_person_cam.h": [ "first_person_update" ],
"src/pc/lua/utils/smlua_collision_utils.h": [ "collision_find_surface_on_ray" ],
"src/engine/behavior_script.h": [ "stub_behavior_script_2", "cur_obj_update" ]
diff --git a/autogen/lua_definitions/constants.lua b/autogen/lua_definitions/constants.lua
index 8252aad22..923dd8df6 100644
--- a/autogen/lua_definitions/constants.lua
+++ b/autogen/lua_definitions/constants.lua
@@ -3817,6 +3817,9 @@ INTERACT_IGLOO_BARRIER = (1 << 30)
--- @type InteractionType
INTERACT_PLAYER = (1 << 31)
+--- @type integer
+MAX_LOCAL_STATE_HISTORY = 30
+
--- @type integer
WARP_CHECKPOINT = 0x80
diff --git a/autogen/lua_definitions/functions.lua b/autogen/lua_definitions/functions.lua
index ab9ecac75..27c0253f5 100644
--- a/autogen/lua_definitions/functions.lua
+++ b/autogen/lua_definitions/functions.lua
@@ -3850,6 +3850,20 @@ function lag_compensation_get_local_state(otherNp)
-- ...
end
+--- @return integer
+function lag_compensation_get_local_state_index()
+ -- ...
+end
+
+--- @return boolean
+function lag_compensation_get_local_state_ready()
+ -- ...
+end
+
+function lag_compensation_store()
+ -- ...
+end
+
--- @param courseNum integer
--- @param levelNum integer
--- @param areaIndex integer
diff --git a/docs/lua/constants.md b/docs/lua/constants.md
index 73d016e68..9d6a058df 100644
--- a/docs/lua/constants.md
+++ b/docs/lua/constants.md
@@ -27,6 +27,7 @@
- [interaction.h](#interactionh)
- [enum InteractionFlag](#enum-InteractionFlag)
- [enum InteractionType](#enum-InteractionType)
+- [lag_compensation.h](#lag_compensationh)
- [level_commands.h](#level_commandsh)
- [level_defines.h](#level_definesh)
- [enum LevelNum](#enum-LevelNum)
@@ -1355,6 +1356,13 @@
+## [lag_compensation.h](#lag_compensation.h)
+- MAX_LOCAL_STATE_HISTORY
+
+[:arrow_up_small:](#)
+
+
+
## [level_commands.h](#level_commands.h)
- WARP_CHECKPOINT
- WARP_NO_CHECKPOINT
diff --git a/docs/lua/functions-3.md b/docs/lua/functions-3.md
index 5f35b6140..6212573b7 100644
--- a/docs/lua/functions-3.md
+++ b/docs/lua/functions-3.md
@@ -4757,6 +4757,60 @@
+## [lag_compensation_get_local_state_index](#lag_compensation_get_local_state_index)
+
+### Lua Example
+`local integerValue = lag_compensation_get_local_state_index()`
+
+### Parameters
+- None
+
+### Returns
+- `integer`
+
+### C Prototype
+`u32 lag_compensation_get_local_state_index(void);`
+
+[:arrow_up_small:](#)
+
+
+
+## [lag_compensation_get_local_state_ready](#lag_compensation_get_local_state_ready)
+
+### Lua Example
+`local booleanValue = lag_compensation_get_local_state_ready()`
+
+### Parameters
+- None
+
+### Returns
+- `boolean`
+
+### C Prototype
+`bool lag_compensation_get_local_state_ready(void);`
+
+[:arrow_up_small:](#)
+
+
+
+## [lag_compensation_store](#lag_compensation_store)
+
+### Lua Example
+`lag_compensation_store()`
+
+### Parameters
+- None
+
+### Returns
+- None
+
+### C Prototype
+`void lag_compensation_store(void);`
+
+[:arrow_up_small:](#)
+
+
+
---
# functions from level_info.h
diff --git a/docs/lua/functions.md b/docs/lua/functions.md
index 065afaa74..2591dc0a7 100644
--- a/docs/lua/functions.md
+++ b/docs/lua/functions.md
@@ -900,6 +900,9 @@
- lag_compensation.h
- [lag_compensation_get_local_state](functions-3.md#lag_compensation_get_local_state)
+ - [lag_compensation_get_local_state_index](functions-3.md#lag_compensation_get_local_state_index)
+ - [lag_compensation_get_local_state_ready](functions-3.md#lag_compensation_get_local_state_ready)
+ - [lag_compensation_store](functions-3.md#lag_compensation_store)
diff --git a/src/pc/lua/smlua_constants_autogen.c b/src/pc/lua/smlua_constants_autogen.c
index 6711a35c9..d29db2d41 100644
--- a/src/pc/lua/smlua_constants_autogen.c
+++ b/src/pc/lua/smlua_constants_autogen.c
@@ -1465,6 +1465,7 @@ char gSmluaConstants[] = ""
"INT_STATUS_HIT_MINE = (1 << 21)\n"
"INT_STATUS_STOP_RIDING = (1 << 22)\n"
"INT_STATUS_TOUCHED_BOB_OMB = (1 << 23)\n"
+"MAX_LOCAL_STATE_HISTORY = 30\n"
"WARP_CHECKPOINT = 0x80\n"
"WARP_NO_CHECKPOINT = 0x00\n"
"LEVEL_NONE = 0\n"
diff --git a/src/pc/lua/smlua_functions_autogen.c b/src/pc/lua/smlua_functions_autogen.c
index 8ee2d90ff..2b28692e3 100644
--- a/src/pc/lua/smlua_functions_autogen.c
+++ b/src/pc/lua/smlua_functions_autogen.c
@@ -14642,6 +14642,51 @@ int smlua_func_lag_compensation_get_local_state(lua_State* L) {
return 1;
}
+int smlua_func_lag_compensation_get_local_state_index(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", "lag_compensation_get_local_state_index", 0, top);
+ return 0;
+ }
+
+
+ lua_pushinteger(L, lag_compensation_get_local_state_index());
+
+ return 1;
+}
+
+int smlua_func_lag_compensation_get_local_state_ready(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", "lag_compensation_get_local_state_ready", 0, top);
+ return 0;
+ }
+
+
+ lua_pushboolean(L, lag_compensation_get_local_state_ready());
+
+ return 1;
+}
+
+int smlua_func_lag_compensation_store(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", "lag_compensation_store", 0, top);
+ return 0;
+ }
+
+
+ lag_compensation_store();
+
+ return 1;
+}
+
//////////////////
// level_info.h //
//////////////////
@@ -34254,6 +34299,9 @@ void smlua_bind_functions_autogen(void) {
// lag_compensation.h
smlua_bind_function(L, "lag_compensation_get_local_state", smlua_func_lag_compensation_get_local_state);
+ smlua_bind_function(L, "lag_compensation_get_local_state_index", smlua_func_lag_compensation_get_local_state_index);
+ smlua_bind_function(L, "lag_compensation_get_local_state_ready", smlua_func_lag_compensation_get_local_state_ready);
+ smlua_bind_function(L, "lag_compensation_store", smlua_func_lag_compensation_store);
// level_info.h
smlua_bind_function(L, "get_level_name", smlua_func_get_level_name);
diff --git a/src/pc/network/lag_compensation.c b/src/pc/network/lag_compensation.c
index f0e5246fd..5a44274c4 100644
--- a/src/pc/network/lag_compensation.c
+++ b/src/pc/network/lag_compensation.c
@@ -6,7 +6,6 @@
#include "behavior_table.h"
#include "model_ids.h"
-#define MAX_LOCAL_STATE_HISTORY 30
struct StateHistory {
struct MarioState m;
struct Object marioObj;
@@ -57,3 +56,11 @@ struct MarioState* lag_compensation_get_local_state(struct NetworkPlayer* otherN
return &sLocalStateHistory[index].m;
}
+
+bool lag_compensation_get_local_state_ready(void) {
+ return sLocalStateHistoryReady;
+}
+
+u32 lag_compensation_get_local_state_index(void) {
+ return sLocalStateHistoryIndex;
+}
diff --git a/src/pc/network/lag_compensation.h b/src/pc/network/lag_compensation.h
index 427ed1123..44ae27d14 100644
--- a/src/pc/network/lag_compensation.h
+++ b/src/pc/network/lag_compensation.h
@@ -1,8 +1,12 @@
#ifndef NETWORK_LAG_COMPENSATION_H
#define NETWORK_LAG_COMPENSATION_H
+#define MAX_LOCAL_STATE_HISTORY 30
+
void lag_compensation_clear(void);
void lag_compensation_store(void);
struct MarioState* lag_compensation_get_local_state(struct NetworkPlayer* otherNp);
+bool lag_compensation_get_local_state_ready(void);
+u32 lag_compensation_get_local_state_index(void);
#endif
\ No newline at end of file