From b8fe342c178bbc03a2f189d1c746c42682ee8c83 Mon Sep 17 00:00:00 2001 From: Isaac0-dev <62234577+Isaac0-dev@users.noreply.github.com> Date: Wed, 4 Jun 2025 09:41:36 +1000 Subject: [PATCH] fix custom dialog boxes not being properly reset --- src/pc/lua/utils/smlua_text_utils.c | 3 ++- text/define_text.inc.c | 16 ++++++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/pc/lua/utils/smlua_text_utils.c b/src/pc/lua/utils/smlua_text_utils.c index bd2e446ba..573c9b0b3 100644 --- a/src/pc/lua/utils/smlua_text_utils.c +++ b/src/pc/lua/utils/smlua_text_utils.c @@ -131,9 +131,10 @@ void smlua_text_utils_reset_all(void) { for (s32 i = 0; i < DIALOG_COUNT; i++) { if (!sReplacedDialog[i]) { continue; } + const struct DialogEntry *dialogOrig = segmented_to_virtual(dialogTableOrg[i]); struct DialogEntry *dialog = segmented_to_virtual(dialogTable[i]); free((u8*)dialog->str); - dialog->str = dialogTableOrg[i]; + memcpy(dialog, dialogOrig, sizeof(struct DialogEntry)); sReplacedDialog[i] = false; } diff --git a/text/define_text.inc.c b/text/define_text.inc.c index 5e4c2edc8..3ac7fdc84 100644 --- a/text/define_text.inc.c +++ b/text/define_text.inc.c @@ -7,12 +7,12 @@ #include "dialogs.h" #undef DEFINE_DIALOG -#define DEFINE_DIALOG(id, _1, _2, _3, _4, _5) dialog_text_ ## id, +#define DEFINE_DIALOG(id, unused, linesPerBox, leftOffset, width, _) \ + static const struct DialogEntry dialog_entry_orig_ ## id = { \ + unused, linesPerBox, leftOffset, width, dialog_text_ ## id \ + }; -const u8* seg2_dialog_original[] = { #include "dialogs.h" - NULL -}; #undef DEFINE_DIALOG #define DEFINE_DIALOG(id, unused, linesPerBox, leftOffset, width, _) \ @@ -22,6 +22,14 @@ const u8* seg2_dialog_original[] = { #include "dialogs.h" +#undef DEFINE_DIALOG +#define DEFINE_DIALOG(id, _1, _2, _3, _4, _5) &dialog_entry_orig_ ## id, + +const struct DialogEntry *const seg2_dialog_original[] = { +#include "dialogs.h" + NULL +}; + #undef DEFINE_DIALOG #define DEFINE_DIALOG(id, _1, _2, _3, _4, _5) &dialog_entry_ ## id,