aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--constants/text_constants.asm14
-rw-r--r--data/battle/stat_mod_names.asm2
-rw-r--r--data/battle/stat_names.asm2
-rw-r--r--data/items/names.asm2
-rw-r--r--data/moves/names.asm3
-rw-r--r--data/player/names_list.asm4
-rw-r--r--data/trainers/move_choices.asm8
-rw-r--r--data/trainers/names.asm2
-rw-r--r--engine/battle/effects.asm2
-rw-r--r--engine/battle/get_trainer_name.asm2
-rw-r--r--engine/items/item_effects.asm2
-rw-r--r--macros/asserts.asm18
12 files changed, 38 insertions, 23 deletions
diff --git a/constants/text_constants.asm b/constants/text_constants.asm
index 88a42bbe..f4587736 100644
--- a/constants/text_constants.asm
+++ b/constants/text_constants.asm
@@ -1,9 +1,11 @@
-DEF PLAYER_NAME_LENGTH EQU 8
-DEF NAME_LENGTH EQU 11
-DEF ITEM_NAME_LENGTH EQU 13
-DEF MOVE_NAME_LENGTH EQU 14
-DEF NAME_BUFFER_LENGTH EQU 20
-DEF GYM_CITY_LENGTH EQU 17
+DEF PLAYER_NAME_LENGTH EQU 8
+DEF STAT_NAME_LENGTH EQU 10
+DEF NAME_LENGTH EQU 11
+DEF ITEM_NAME_LENGTH EQU 13
+DEF TRAINER_NAME_LENGTH EQU 13
+DEF MOVE_NAME_LENGTH EQU 14
+DEF GYM_CITY_LENGTH EQU 17
+DEF NAME_BUFFER_LENGTH EQU 20
; PrintNumber, PrintBCDNumber
const_def 5
diff --git a/data/battle/stat_mod_names.asm b/data/battle/stat_mod_names.asm
index 63c956d7..6c68db4e 100644
--- a/data/battle/stat_mod_names.asm
+++ b/data/battle/stat_mod_names.asm
@@ -2,7 +2,7 @@
; The relevant move effect IDs correspond to the stats
StatModTextStrings:
- list_start
+ list_start STAT_NAME_LENGTH - 1
li "ATTACK"
li "DEFENSE"
li "SPEED"
diff --git a/data/battle/stat_names.asm b/data/battle/stat_names.asm
index 30401a99..08685e83 100644
--- a/data/battle/stat_names.asm
+++ b/data/battle/stat_names.asm
@@ -1,7 +1,7 @@
; Stats that vitamins can raise or lower
VitaminStats:
- list_start
+ list_start STAT_NAME_LENGTH - 1
li "HEALTH"
li "ATTACK"
li "DEFENSE"
diff --git a/data/items/names.asm b/data/items/names.asm
index bab26efc..f5c0f27e 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 "GREAT BALL"
diff --git a/data/moves/names.asm b/data/moves/names.asm
index 025172d5..caecc06c 100644
--- a/data/moves/names.asm
+++ b/data/moves/names.asm
@@ -1,5 +1,6 @@
MoveNames::
- list_start
+ ; in-battle "used <move name>!" text can only fit 12 (MOVE_NAME_LENGTH - 2) characters
+ list_start MOVE_NAME_LENGTH - 2
li "POUND"
li "KARATE CHOP"
li "DOUBLESLAP"
diff --git a/data/player/names_list.asm b/data/player/names_list.asm
index 786c1229..44f3c7f1 100644
--- a/data/player/names_list.asm
+++ b/data/player/names_list.asm
@@ -2,7 +2,7 @@
DefaultNamesPlayerList:
db "NEW NAME@"
- list_start
+ list_start PLAYER_NAME_LENGTH - 1
FOR n, 1, NUM_PLAYER_NAMES + 1
li #PLAYERNAME{d:n}
ENDR
@@ -10,7 +10,7 @@ ENDR
DefaultNamesRivalList:
db "NEW NAME@"
- list_start
+ list_start PLAYER_NAME_LENGTH - 1
FOR n, 1, NUM_PLAYER_NAMES + 1
li #RIVALNAME{d:n}
ENDR
diff --git a/data/trainers/move_choices.asm b/data/trainers/move_choices.asm
index 1624b326..98c068a1 100644
--- a/data/trainers/move_choices.asm
+++ b/data/trainers/move_choices.asm
@@ -1,14 +1,15 @@
+DEF __move_choices__ = 0
+
MACRO move_choices
IF _NARG
db \# ; all args
ENDC
db 0 ; end
- DEF list_index += 1
+ DEF __move_choices__ += 1
ENDM
; move choice modification methods that are applied for each trainer class
TrainerClassMoveChoiceModifications:
- list_start
move_choices ; YOUNGSTER
move_choices 1 ; BUG CATCHER
move_choices 1 ; LASS
@@ -56,4 +57,5 @@ TrainerClassMoveChoiceModifications:
move_choices 1 ; CHANNELER
move_choices 1 ; AGATHA
move_choices 1, 3 ; LANCE
- assert_list_length NUM_TRAINERS
+ assert __move_choices__ == NUM_TRAINERS, \
+ "TrainerClassMoveChoiceModifications: expected {d:NUM_TRAINERS} entries, got {d:__move_choices__}"
diff --git a/data/trainers/names.asm b/data/trainers/names.asm
index d7c5677c..1b6f2382 100644
--- a/data/trainers/names.asm
+++ b/data/trainers/names.asm
@@ -1,5 +1,5 @@
TrainerNames::
- list_start
+ list_start TRAINER_NAME_LENGTH - 1
li "YOUNGSTER"
li "BUG CATCHER"
li "LASS"
diff --git a/engine/battle/effects.asm b/engine/battle/effects.asm
index 22765140..394e07e5 100644
--- a/engine/battle/effects.asm
+++ b/engine/battle/effects.asm
@@ -754,7 +754,7 @@ PrintStatText:
jr .findStatName_inner
.foundStatName
ld de, wStringBuffer
- ld bc, NAME_LENGTH - 1 ; all StatModTextStrings are at most 10 bytes
+ ld bc, STAT_NAME_LENGTH
jp CopyData
INCLUDE "data/battle/stat_mod_names.asm"
diff --git a/engine/battle/get_trainer_name.asm b/engine/battle/get_trainer_name.asm
index a0e869fc..1983b08a 100644
--- a/engine/battle/get_trainer_name.asm
+++ b/engine/battle/get_trainer_name.asm
@@ -20,5 +20,5 @@ GetTrainerName_::
ld hl, wNameBuffer
.foundName
ld de, wTrainerName
- ld bc, ITEM_NAME_LENGTH
+ ld bc, TRAINER_NAME_LENGTH
jp CopyData
diff --git a/engine/items/item_effects.asm b/engine/items/item_effects.asm
index 12b5bd00..c4ce13de 100644
--- a/engine/items/item_effects.asm
+++ b/engine/items/item_effects.asm
@@ -1308,7 +1308,7 @@ ItemUseMedicine:
jr .statNameLoop
.gotStatName
ld de, wStringBuffer
- ld bc, NAME_LENGTH - 1 ; all VitaminStats are at most 10 bytes
+ ld bc, STAT_NAME_LENGTH
call CopyData ; copy the stat's name to wStringBuffer
ld a, SFX_HEAL_AILMENT
call PlaySound
diff --git a/macros/asserts.asm b/macros/asserts.asm
index e2de1505..11e0ee99 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
@@ -40,11 +41,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