From 5b4a996655835311f4eabce25e34d14e19954dbe Mon Sep 17 00:00:00 2001 From: Rangi <35663410+Rangi42@users.noreply.github.com> Date: Mon, 15 Dec 2025 15:16:41 -0500 Subject: [PATCH] Specify a max item length for `list_start` (#1210) --- data/battle/stat_names.asm | 2 +- data/decorations/names.asm | 2 +- data/items/names.asm | 2 +- data/mon_menu.asm | 2 +- data/moves/names.asm | 2 +- data/trainers/class_names.asm | 2 +- macros/asserts.asm | 18 ++++++++++++++---- 7 files changed, 20 insertions(+), 10 deletions(-) diff --git a/data/battle/stat_names.asm b/data/battle/stat_names.asm index 0baa808b..61f28037 100644 --- a/data/battle/stat_names.asm +++ b/data/battle/stat_names.asm @@ -1,6 +1,6 @@ StatNames: ; entries correspond to stat ids - list_start + list_start STRING_BUFFER_LENGTH - 1 li "ATTACK" li "DEFENSE" li "SPEED" diff --git a/data/decorations/names.asm b/data/decorations/names.asm index 44ba4bbd..5c093fd0 100644 --- a/data/decorations/names.asm +++ b/data/decorations/names.asm @@ -1,6 +1,6 @@ DecorationNames: ; entries correspond to constants/deco_constants.asm - list_start + list_start TEXTBOX_INNERW - 1 li "CANCEL" li "PUT IT AWAY" li "MAGNAPLANT" diff --git a/data/items/names.asm b/data/items/names.asm index ac1c776f..fdc656cb 100644 --- a/data/items/names.asm +++ b/data/items/names.asm @@ -1,5 +1,5 @@ ItemNames:: - list_start + list_start ITEM_NAME_LENGTH - 1 li "MASTER BALL" li "ULTRA BALL" li "BRIGHTPOWDER" diff --git a/data/mon_menu.asm b/data/mon_menu.asm index 4e30b5d7..6828d269 100644 --- a/data/mon_menu.asm +++ b/data/mon_menu.asm @@ -11,7 +11,7 @@ DEF NUM_MONMENUVALUES EQU const_value - 1 MonMenuOptionStrings: ; entries correspond to MONMENUVALUE_* constants - list_start + list_start MOVE_NAME_LENGTH - 2 li "STATS" li "SWITCH" li "ITEM" diff --git a/data/moves/names.asm b/data/moves/names.asm index a564c5ee..ca692e54 100644 --- a/data/moves/names.asm +++ b/data/moves/names.asm @@ -1,5 +1,5 @@ MoveNames:: - list_start + list_start MOVE_NAME_LENGTH - 1 li "POUND" li "KARATE CHOP" li "DOUBLESLAP" diff --git a/data/trainers/class_names.asm b/data/trainers/class_names.asm index 54965cd0..fc078b73 100644 --- a/data/trainers/class_names.asm +++ b/data/trainers/class_names.asm @@ -1,6 +1,6 @@ TrainerClassNames:: ; entries correspond to trainer classes (see constants/trainer_constants.asm) - list_start + list_start TRAINER_CLASS_NAME_LENGTH - 1 li "LEADER" li "LEADER" li "LEADER" diff --git a/macros/asserts.asm b/macros/asserts.asm index b6c0515f..cbc7becf 100644 --- a/macros/asserts.asm +++ b/macros/asserts.asm @@ -4,8 +4,8 @@ MACRO? _redef_current_label if DEF(\1) PURGE \1 endc - if _NARG == 3 + (\3) - DEF \1 EQUS "\<_NARG>" + if _NARG > 2 + DEF \1 EQUS "\3" elif STRLEN(#__SCOPE__) if {{__SCOPE__}} - @ == 0 DEF \1 EQUS #{__SCOPE__} @@ -19,7 +19,8 @@ ENDM MACRO? table_width DEF CURRENT_TABLE_WIDTH = \1 - _redef_current_label CURRENT_TABLE_START, "._table_width\@", 2, \# + shift + _redef_current_label CURRENT_TABLE_START, "._table_width\@", \# ENDM MACRO? assert_table_length @@ -32,11 +33,20 @@ ENDM MACRO? list_start DEF list_index = 0 - _redef_current_label CURRENT_LIST_START, "._list_start\@", 1, \# + DEF list_item_length = 0 + if _NARG > 0 + DEF list_item_length = \1 + shift + endc + _redef_current_label CURRENT_LIST_START, "._list_start\@", \# ENDM MACRO? li assert STRFIND(\1, "@") == -1, "String terminator \"@\" in list entry: \1" + if list_item_length + assert CHARLEN(\1) <= list_item_length, \ + "List entry longer than {d:list_item_length} characters: \1" + endc db \1, "@" DEF list_index += 1 ENDM