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,