From de96a75ddcb5e5a54a4dd7abd68d1c1d831e8b21 Mon Sep 17 00:00:00 2001 From: PeachyPeachSM64 <72323920+PeachyPeachSM64@users.noreply.github.com> Date: Wed, 16 Jul 2025 03:13:00 +0200 Subject: [PATCH] fix SOUND_ARG_LOAD --- autogen/lua_constants/built-in.lua | 8 +++++++- autogen/lua_definitions/constants.lua | 11 ++++++++++- docs/lua/constants.md | 1 + include/sounds.h | 9 +++++---- src/pc/lua/smlua_constants_autogen.c | 9 ++++++++- 5 files changed, 31 insertions(+), 7 deletions(-) diff --git a/autogen/lua_constants/built-in.lua b/autogen/lua_constants/built-in.lua index 3e91cdac9..34a5e6368 100644 --- a/autogen/lua_constants/built-in.lua +++ b/autogen/lua_constants/built-in.lua @@ -70,7 +70,13 @@ gGlobalSoundSource = create_read_only_table({ x = 0, y = 0, z = 0 }) --- @return number function SOUND_ARG_LOAD(bank, soundID, priority, flags) if flags == nil then flags = 0 end - return (bank << 28) | (soundID << 16) | (priority << 8) | flags | SOUND_STATUS_WAITING + return math.s32( + ((bank << SOUNDARGS_SHIFT_BANK) & SOUNDARGS_MASK_BANK) | + ((soundID << SOUNDARGS_SHIFT_SOUNDID) & SOUNDARGS_MASK_SOUNDID) | + ((priority << SOUNDARGS_SHIFT_PRIORITY) & SOUNDARGS_MASK_PRIORITY) | + (flags & SOUNDARGS_MASK_BITFLAGS) | + SOUND_STATUS_WAITING + ) end ------------- diff --git a/autogen/lua_definitions/constants.lua b/autogen/lua_definitions/constants.lua index 60421ed73..c8f9dc9fe 100644 --- a/autogen/lua_definitions/constants.lua +++ b/autogen/lua_definitions/constants.lua @@ -72,7 +72,13 @@ gGlobalSoundSource = create_read_only_table({ x = 0, y = 0, z = 0 }) --- @return number function SOUND_ARG_LOAD(bank, soundID, priority, flags) if flags == nil then flags = 0 end - return (bank << 28) | (soundID << 16) | (priority << 8) | flags | SOUND_STATUS_WAITING + return math.s32( + ((bank << SOUNDARGS_SHIFT_BANK) & SOUNDARGS_MASK_BANK) | + ((soundID << SOUNDARGS_SHIFT_SOUNDID) & SOUNDARGS_MASK_SOUNDID) | + ((priority << SOUNDARGS_SHIFT_PRIORITY) & SOUNDARGS_MASK_PRIORITY) | + (flags & SOUNDARGS_MASK_BITFLAGS) | + SOUND_STATUS_WAITING + ) end ------------- @@ -8982,6 +8988,9 @@ SOUNDARGS_MASK_PRIORITY = 0x0000FF00 --- @type integer SOUNDARGS_MASK_STATUS = 0x0000000F +--- @type integer +SOUNDARGS_MASK_BITFLAGS = 0x0F0000F0 + --- @type integer SOUNDARGS_SHIFT_BANK = 28 diff --git a/docs/lua/constants.md b/docs/lua/constants.md index f777b2026..c29f4c80d 100644 --- a/docs/lua/constants.md +++ b/docs/lua/constants.md @@ -3950,6 +3950,7 @@ - SOUNDARGS_MASK_SOUNDID - SOUNDARGS_MASK_PRIORITY - SOUNDARGS_MASK_STATUS +- SOUNDARGS_MASK_BITFLAGS - SOUNDARGS_SHIFT_BANK - SOUNDARGS_SHIFT_SOUNDID - SOUNDARGS_SHIFT_PRIORITY diff --git a/include/sounds.h b/include/sounds.h index 875c6330e..1f10bafb0 100644 --- a/include/sounds.h +++ b/include/sounds.h @@ -9,16 +9,17 @@ // Fourth Byte (Upper Nibble): More bitflags // Fourth Byte (Lower Nibble): Sound Status (this is set to SOUND_STATUS_PLAYING when passed to the audio driver.) #define SOUND_ARG_LOAD(bank, soundID, priority, flags) (\ - ((u32) (bank) << 28) | \ - ((u32) (soundID) << 16) | \ - ((u32) (priority) << 8) | \ - (flags) | \ + (((u32) (bank) << SOUNDARGS_SHIFT_BANK) & SOUNDARGS_MASK_BANK) | \ + (((u32) (soundID) << SOUNDARGS_SHIFT_SOUNDID) & SOUNDARGS_MASK_SOUNDID) | \ + (((u32) (priority) << SOUNDARGS_SHIFT_PRIORITY) & SOUNDARGS_MASK_PRIORITY) | \ + (((u32) (flags)) & SOUNDARGS_MASK_BITFLAGS) | \ SOUND_STATUS_WAITING) #define SOUNDARGS_MASK_BANK 0xF0000000 #define SOUNDARGS_MASK_SOUNDID 0x00FF0000 #define SOUNDARGS_MASK_PRIORITY 0x0000FF00 #define SOUNDARGS_MASK_STATUS 0x0000000F +#define SOUNDARGS_MASK_BITFLAGS 0x0F0000F0 #define SOUNDARGS_SHIFT_BANK 28 #define SOUNDARGS_SHIFT_SOUNDID 16 diff --git a/src/pc/lua/smlua_constants_autogen.c b/src/pc/lua/smlua_constants_autogen.c index a48469536..eb7626275 100644 --- a/src/pc/lua/smlua_constants_autogen.c +++ b/src/pc/lua/smlua_constants_autogen.c @@ -62,7 +62,13 @@ char gSmluaConstants[] = "" "--- @return number\n" "function SOUND_ARG_LOAD(bank, soundID, priority, flags)\n" "if flags == nil then flags = 0 end\n" -"return (bank << 28) | (soundID << 16) | (priority << 8) | flags | SOUND_STATUS_WAITING\n" +"return math.s32(\n" +"((bank << SOUNDARGS_SHIFT_BANK) & SOUNDARGS_MASK_BANK) |\n" +"((soundID << SOUNDARGS_SHIFT_SOUNDID) & SOUNDARGS_MASK_SOUNDID) |\n" +"((priority << SOUNDARGS_SHIFT_PRIORITY) & SOUNDARGS_MASK_PRIORITY) |\n" +"(flags & SOUNDARGS_MASK_BITFLAGS) |\n" +"SOUND_STATUS_WAITING\n" +")\n" "end\n" "-------------\n" "-- courses --\n" @@ -3879,6 +3885,7 @@ char gSmluaConstants[] = "" "SOUNDARGS_MASK_SOUNDID=0x00FF0000\n" "SOUNDARGS_MASK_PRIORITY=0x0000FF00\n" "SOUNDARGS_MASK_STATUS=0x0000000F\n" +"SOUNDARGS_MASK_BITFLAGS=0x0F0000F0\n" "SOUNDARGS_SHIFT_BANK=28\n" "SOUNDARGS_SHIFT_SOUNDID=16\n" "SOUNDARGS_SHIFT_PRIORITY=8\n"