From 22952dda05977a3cfe1c3cd93903095673938e7f Mon Sep 17 00:00:00 2001
From: Agent X <44549182+Agent-11@users.noreply.github.com>
Date: Sat, 18 Mar 2023 17:12:33 -0400
Subject: [PATCH] Expose sound_banks_enable/disable to Lua (#311)
---
autogen/convert_constants.py | 4 ++-
autogen/convert_functions.py | 2 +-
autogen/lua_definitions/constants.lua | 12 ++++++++
autogen/lua_definitions/functions.lua | 14 +++++++++
docs/lua/constants.md | 11 +++++++
docs/lua/functions-3.md | 42 +++++++++++++++++++++++++++
docs/lua/functions.md | 2 ++
src/pc/lua/smlua_constants_autogen.c | 31 ++++++++++++++++++++
src/pc/lua/smlua_functions_autogen.c | 40 +++++++++++++++++++++++++
9 files changed, 156 insertions(+), 2 deletions(-)
diff --git a/autogen/convert_constants.py b/autogen/convert_constants.py
index 72bacd2e2..b4e6e5425 100644
--- a/autogen/convert_constants.py
+++ b/autogen/convert_constants.py
@@ -39,7 +39,8 @@ in_files = [
"include/surface_terrains.h",
"src/game/level_update.h",
"src/pc/network/version.h",
- "include/level_commands.h"
+ "include/level_commands.h",
+ "src/audio/external.h"
]
exclude_constants = {
@@ -49,6 +50,7 @@ exclude_constants = {
include_constants = {
'include/level_commands.h': [ "WARP_CHECKPOINT", "WARP_NO_CHECKPOINT" ],
+ 'src/audio/external.h': [ "SEQ_PLAYER" ]
}
pretend_find = [
diff --git a/autogen/convert_functions.py b/autogen/convert_functions.py
index 85cfc9cc9..e7d51fd03 100644
--- a/autogen/convert_functions.py
+++ b/autogen/convert_functions.py
@@ -61,7 +61,7 @@ in_files = [
]
override_allowed_functions = {
- "src/audio/external.h": [ " play_", "fade", "current_background", "stop_" ],
+ "src/audio/external.h": [ " play_", "fade", "current_background", "stop_", "sound_banks" ],
"src/game/rumble_init.c": [ "queue_rumble_", "reset_rumble_timers" ],
"src/pc/djui/djui_popup.h" : [ "create" ],
"src/game/save_file.h": [ "save_file_get_", "save_file_set_flags", "save_file_clear_flags", "save_file_reload", "save_file_erase_current_backup_save", "save_file_set_star_flags" ],
diff --git a/autogen/lua_definitions/constants.lua b/autogen/lua_definitions/constants.lua
index 72b2e8ff9..890c4608f 100644
--- a/autogen/lua_definitions/constants.lua
+++ b/autogen/lua_definitions/constants.lua
@@ -3263,6 +3263,15 @@ RESOLUTION_N64 = 1
--- @type HudUtilsResolution
RESOLUTION_COUNT = 2
+--- @type integer
+SEQ_PLAYER_ENV = 1
+
+--- @type integer
+SEQ_PLAYER_LEVEL = 0
+
+--- @type integer
+SEQ_PLAYER_SFX = 2
+
--- @type integer
GEO_CONTEXT_AREA_INIT = 4
@@ -3818,6 +3827,9 @@ MARIO_SPAWN_UNKNOWN_03 = 0x03
--- @type integer
MARIO_SPAWN_UNKNOWN_27 = 0x27
+--- @type integer
+PRESS_START_DEMO_TIMER = 800
+
--- @type integer
TIMER_CONTROL_HIDE = 3
diff --git a/autogen/lua_definitions/functions.lua b/autogen/lua_definitions/functions.lua
index af7a8f1dd..d6859ab4a 100644
--- a/autogen/lua_definitions/functions.lua
+++ b/autogen/lua_definitions/functions.lua
@@ -3857,6 +3857,20 @@ function seq_player_unlower_volume(player, fadeDuration)
-- ...
end
+--- @param player integer
+--- @param bankMask integer
+--- @return nil
+function sound_banks_disable(player, bankMask)
+ -- ...
+end
+
+--- @param player integer
+--- @param bankMask integer
+--- @return nil
+function sound_banks_enable(player, bankMask)
+ -- ...
+end
+
--- @param seqId integer
--- @return nil
function stop_background_music(seqId)
diff --git a/docs/lua/constants.md b/docs/lua/constants.md
index cbcd6ed00..f7d068b12 100644
--- a/docs/lua/constants.md
+++ b/docs/lua/constants.md
@@ -14,6 +14,7 @@
- [djui_hud_utils.h](#djui_hud_utilsh)
- [enum DjuiFontType](#enum-DjuiFontType)
- [enum HudUtilsResolution](#enum-HudUtilsResolution)
+- [external.h](#externalh)
- [graph_node.h](#graph_nodeh)
- [interaction.c](#interactionc)
- [enum InteractionFlag](#enum-InteractionFlag)
@@ -1099,6 +1100,15 @@
+## [external.h](#external.h)
+- SEQ_PLAYER_ENV
+- SEQ_PLAYER_LEVEL
+- SEQ_PLAYER_SFX
+
+[:arrow_up_small:](#)
+
+
+
## [graph_node.h](#graph_node.h)
- GEO_CONTEXT_AREA_INIT
- GEO_CONTEXT_AREA_LOAD
@@ -1325,6 +1335,7 @@
- MARIO_SPAWN_UNKNOWN_02
- MARIO_SPAWN_UNKNOWN_03
- MARIO_SPAWN_UNKNOWN_27
+- PRESS_START_DEMO_TIMER
- TIMER_CONTROL_HIDE
- TIMER_CONTROL_SHOW
- TIMER_CONTROL_START
diff --git a/docs/lua/functions-3.md b/docs/lua/functions-3.md
index f482ff286..2a8ef038d 100644
--- a/docs/lua/functions-3.md
+++ b/docs/lua/functions-3.md
@@ -2806,6 +2806,48 @@
+## [sound_banks_disable](#sound_banks_disable)
+
+### Lua Example
+`sound_banks_disable(player, bankMask)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| player | `integer` |
+| bankMask | `integer` |
+
+### Returns
+- None
+
+### C Prototype
+`void sound_banks_disable(u8 player, u16 bankMask);`
+
+[:arrow_up_small:](#)
+
+
+
+## [sound_banks_enable](#sound_banks_enable)
+
+### Lua Example
+`sound_banks_enable(player, bankMask)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| player | `integer` |
+| bankMask | `integer` |
+
+### Returns
+- None
+
+### C Prototype
+`void sound_banks_enable(u8 player, u16 bankMask);`
+
+[:arrow_up_small:](#)
+
+
+
## [stop_background_music](#stop_background_music)
### Lua Example
diff --git a/docs/lua/functions.md b/docs/lua/functions.md
index 7e9ae5cac..6de0e34c2 100644
--- a/docs/lua/functions.md
+++ b/docs/lua/functions.md
@@ -761,6 +761,8 @@
- [seq_player_fade_out](functions-3.md#seq_player_fade_out)
- [seq_player_lower_volume](functions-3.md#seq_player_lower_volume)
- [seq_player_unlower_volume](functions-3.md#seq_player_unlower_volume)
+ - [sound_banks_disable](functions-3.md#sound_banks_disable)
+ - [sound_banks_enable](functions-3.md#sound_banks_enable)
- [stop_background_music](functions-3.md#stop_background_music)
- [stop_sound](functions-3.md#stop_sound)
- [stop_sounds_from_source](functions-3.md#stop_sounds_from_source)
diff --git a/src/pc/lua/smlua_constants_autogen.c b/src/pc/lua/smlua_constants_autogen.c
index 0c54bada6..214c917fd 100644
--- a/src/pc/lua/smlua_constants_autogen.c
+++ b/src/pc/lua/smlua_constants_autogen.c
@@ -10,6 +10,7 @@ char gSmluaConstants[] = ""
" return a['_pointer'] == b['_pointer'] and a['_lot'] == b['_lot'] and a['_pointer'] ~= nil and a['_lot'] ~= nil\n"
" end\n"
"}\n"
+"\n"
"_CPointer = {\n"
" __index = function (t,k)\n"
" return nil\n"
@@ -23,6 +24,7 @@ char gSmluaConstants[] = ""
" return a['_pointer'] == b['_pointer'] and a['_pointer'] ~= nil and a['_lvt'] ~= nil\n"
" end\n"
"}\n"
+"\n"
"_SyncTable = {\n"
" __index = function (t,k)\n"
" local _table = rawget(t, '_table')\n"
@@ -34,6 +36,7 @@ char gSmluaConstants[] = ""
" _set_sync_table_field(t, k, v)\n"
" end\n"
"}\n"
+"\n"
"_ReadOnlyTable = {\n"
" __index = function (t,k)\n"
" local _table = rawget(t, '_table')\n"
@@ -42,6 +45,7 @@ char gSmluaConstants[] = ""
" __newindex = function (t,k,v)\n"
" end\n"
"}\n"
+"\n"
"--- @param dest Vec3f\n"
"--- @param src Vec3f\n"
"--- @return Vec3f\n"
@@ -51,6 +55,7 @@ char gSmluaConstants[] = ""
" dest.z = src.z\n"
" return dest\n"
"end\n"
+"\n"
"--- @param dest Vec3f\n"
"--- @param x number\n"
"--- @param y number\n"
@@ -62,6 +67,7 @@ char gSmluaConstants[] = ""
" dest.z = z\n"
" return dest\n"
"end\n"
+"\n"
"--- @param dest Vec3f\n"
"--- @param a Vec3f\n"
"--- @return Vec3f\n"
@@ -71,6 +77,7 @@ char gSmluaConstants[] = ""
" dest.z = dest.z + a.z\n"
" return dest\n"
"end\n"
+"\n"
"--- @param dest Vec3f\n"
"--- @param a Vec3f\n"
"--- @param b Vec3f\n"
@@ -81,6 +88,7 @@ char gSmluaConstants[] = ""
" dest.z = a.z + b.z\n"
" return dest\n"
"end\n"
+"\n"
"--- @param dest Vec3f\n"
"--- @param a number\n"
"--- @return Vec3f\n"
@@ -90,6 +98,7 @@ char gSmluaConstants[] = ""
" dest.z = dest.z * a\n"
" return dest\n"
"end\n"
+"\n"
"--- @param dest Vec3f\n"
"--- @return Vec3f\n"
"function vec3f_normalize(dest)\n"
@@ -97,23 +106,28 @@ char gSmluaConstants[] = ""
" if divisor == 0 then\n"
" return dest\n"
" end\n"
+"\n"
" local invsqrt = 1.0 / divisor\n"
" dest.x = dest.x * invsqrt\n"
" dest.y = dest.y * invsqrt\n"
" dest.z = dest.z * invsqrt\n"
+"\n"
" return dest\n"
"end\n"
+"\n"
"--- @param a Vec3f\n"
"--- @return number\n"
"function vec3f_length(a)\n"
" return math.sqrt(a.x * a.x + a.y * a.y + a.z * a.z)\n"
"end\n"
+"\n"
"--- @param a Vec3f\n"
"--- @param b Vec3f\n"
"--- @return number\n"
"function vec3f_dot(a, b)\n"
" return a.x * b.x + a.y * b.y + a.z * b.z\n"
"end\n"
+"\n"
"--- @param vec Vec3f\n"
"--- @param onto Vec3f\n"
"--- @return Vec3f\n"
@@ -125,6 +139,7 @@ char gSmluaConstants[] = ""
" vec3f_mul(out, numerator / denominator)\n"
" return out\n"
"end\n"
+"\n"
"--- @param v1 Vec3f\n"
"--- @param v2 Vec3f\n"
"--- @return number\n"
@@ -134,6 +149,7 @@ char gSmluaConstants[] = ""
" dz = v1.z - v2.z\n"
" return math.sqrt(dx * dx + dy * dy + dz * dz)\n"
"end\n"
+"\n"
"--- @param dest Vec3s\n"
"--- @param src Vec3s\n"
"--- @return Vec3s\n"
@@ -143,6 +159,7 @@ char gSmluaConstants[] = ""
" dest.z = src.z\n"
" return dest\n"
"end\n"
+"\n"
"--- @param dest Vec3s\n"
"--- @param x number\n"
"--- @param y number\n"
@@ -154,6 +171,7 @@ char gSmluaConstants[] = ""
" dest.z = z\n"
" return dest\n"
"end\n"
+"\n"
"--- @param dest Vec3s\n"
"--- @param a Vec3s\n"
"--- @return Vec3s\n"
@@ -163,6 +181,7 @@ char gSmluaConstants[] = ""
" dest.z = dest.z + a.z\n"
" return dest\n"
"end\n"
+"\n"
"--- @param dest Vec3s\n"
"--- @param a Vec3s\n"
"--- @param b Vec3s\n"
@@ -173,6 +192,7 @@ char gSmluaConstants[] = ""
" dest.z = a.z + b.z\n"
" return dest\n"
"end\n"
+"\n"
"--- @param dest Vec3s\n"
"--- @param a number\n"
"--- @return Vec3s\n"
@@ -182,6 +202,7 @@ char gSmluaConstants[] = ""
" dest.z = dest.z * a\n"
" return dest\n"
"end\n"
+"\n"
"--- @param v1 Vec3s\n"
"--- @param v2 Vec3s\n"
"--- @return number\n"
@@ -191,6 +212,7 @@ char gSmluaConstants[] = ""
" dz = v1.z - v2.z\n"
" return math.sqrt(dx * dx + dy * dy + dz * dz)\n"
"end\n"
+"\n"
"--- @param current number\n"
"--- @param target number\n"
"--- @param inc number\n"
@@ -210,6 +232,7 @@ char gSmluaConstants[] = ""
" end\n"
" return current;\n"
"end\n"
+"\n"
"--- @param current number\n"
"--- @param target number\n"
"--- @param inc number\n"
@@ -227,6 +250,7 @@ char gSmluaConstants[] = ""
" current = target\n"
" end\n"
" end\n"
+"\n"
" -- keep within 32 bits\n"
" if current > 2147483647 then\n"
" current = -2147483648 + (current - 2147483647)\n"
@@ -235,6 +259,7 @@ char gSmluaConstants[] = ""
" end\n"
" return current;\n"
"end\n"
+"\n"
"--- @param bank number\n"
"--- @param soundID number\n"
"--- @param priority number\n"
@@ -244,9 +269,11 @@ char gSmluaConstants[] = ""
" if flags == nil then flags = 0 end\n"
" return (bank << 28) | (soundID << 16) | (priority << 8) | flags | SOUND_STATUS_WAITING\n"
"end\n"
+"\n"
"-------------\n"
"-- courses --\n"
"-------------\n"
+"\n"
"--- @type integer\n"
"COURSE_NONE = 0\n"
"--- @type integer\n"
@@ -1278,6 +1305,9 @@ char gSmluaConstants[] = ""
"FONT_MENU = 1\n"
"FONT_HUD = 2\n"
"FONT_COUNT = 3\n"
+"SEQ_PLAYER_LEVEL = 0\n"
+"SEQ_PLAYER_ENV = 1\n"
+"SEQ_PLAYER_SFX = 2\n"
"GRAPH_RENDER_ACTIVE = (1 << 0)\n"
"GRAPH_RENDER_CHILDREN_FIRST = (1 << 1)\n"
"GRAPH_RENDER_BILLBOARD = (1 << 2)\n"
@@ -1487,6 +1517,7 @@ char gSmluaConstants[] = ""
"WARP_TYPE_CHANGE_LEVEL = 1\n"
"WARP_TYPE_CHANGE_AREA = 2\n"
"WARP_TYPE_SAME_AREA = 3\n"
+"PRESS_START_DEMO_TIMER = 800\n"
"HUD_DISPLAY_FLAG_LIVES = 0x0001\n"
"HUD_DISPLAY_FLAG_COIN_COUNT = 0x0002\n"
"HUD_DISPLAY_FLAG_STAR_COUNT = 0x0004\n"
diff --git a/src/pc/lua/smlua_functions_autogen.c b/src/pc/lua/smlua_functions_autogen.c
index 9cb90305c..60eb16bbc 100644
--- a/src/pc/lua/smlua_functions_autogen.c
+++ b/src/pc/lua/smlua_functions_autogen.c
@@ -12197,6 +12197,44 @@ int smlua_func_seq_player_unlower_volume(lua_State* L) {
return 1;
}
+int smlua_func_sound_banks_disable(lua_State* L) {
+ if (L == NULL) { return 0; }
+
+ int top = lua_gettop(L);
+ if (top != 2) {
+ LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "sound_banks_disable", 2, top);
+ return 0;
+ }
+
+ u8 player = smlua_to_integer(L, 1);
+ if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "sound_banks_disable"); return 0; }
+ u16 bankMask = smlua_to_integer(L, 2);
+ if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "sound_banks_disable"); return 0; }
+
+ sound_banks_disable(player, bankMask);
+
+ return 1;
+}
+
+int smlua_func_sound_banks_enable(lua_State* L) {
+ if (L == NULL) { return 0; }
+
+ int top = lua_gettop(L);
+ if (top != 2) {
+ LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "sound_banks_enable", 2, top);
+ return 0;
+ }
+
+ u8 player = smlua_to_integer(L, 1);
+ if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "sound_banks_enable"); return 0; }
+ u16 bankMask = smlua_to_integer(L, 2);
+ if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "sound_banks_enable"); return 0; }
+
+ sound_banks_enable(player, bankMask);
+
+ return 1;
+}
+
int smlua_func_stop_background_music(lua_State* L) {
if (L == NULL) { return 0; }
@@ -29619,6 +29657,8 @@ void smlua_bind_functions_autogen(void) {
smlua_bind_function(L, "seq_player_fade_out", smlua_func_seq_player_fade_out);
smlua_bind_function(L, "seq_player_lower_volume", smlua_func_seq_player_lower_volume);
smlua_bind_function(L, "seq_player_unlower_volume", smlua_func_seq_player_unlower_volume);
+ smlua_bind_function(L, "sound_banks_disable", smlua_func_sound_banks_disable);
+ smlua_bind_function(L, "sound_banks_enable", smlua_func_sound_banks_enable);
smlua_bind_function(L, "stop_background_music", smlua_func_stop_background_music);
smlua_bind_function(L, "stop_sound", smlua_func_stop_sound);
smlua_bind_function(L, "stop_sounds_from_source", smlua_func_stop_sounds_from_source);