summaryrefslogtreecommitdiff
path: root/data/battle_tower
diff options
context:
space:
mode:
authorRangi <remy.oukaour+rangi42@gmail.com>2021-03-03 22:22:41 -0500
committerRangi <remy.oukaour+rangi42@gmail.com>2021-03-04 00:15:03 -0500
commit40902ffe244544d638567642e4e01b9c5801db23 (patch)
tree4abf9ac20786fdf66bb298b3ec7935cef2c71d07 /data/battle_tower
parent9c17fb14c8068d6662b9ca1cb048ed206b6770ee (diff)
Verify data table sizes with table_width and assert_table_length macros
This was discussed in #706 It also uncovered some off-by-one issues with defining some constants. A few structs now use rsreset/_RS to define their offset constants, as discussed in #739
Diffstat (limited to 'data/battle_tower')
-rw-r--r--data/battle_tower/classes.asm4
-rw-r--r--data/battle_tower/parties.asm3
-rw-r--r--data/battle_tower/unknown.asm3
3 files changed, 10 insertions, 0 deletions
diff --git a/data/battle_tower/classes.asm b/data/battle_tower/classes.asm
index c53197548..863759c70 100644
--- a/data/battle_tower/classes.asm
+++ b/data/battle_tower/classes.asm
@@ -2,6 +2,8 @@ BattleTowerTrainers:
; The trainer class is not used in Crystal 1.0 due to a bug.
; Instead, the sixth character in the trainer's name is used.
; See BattleTowerText in engine/events/battle_tower/trainer_text.asm.
+ table_width (NAME_LENGTH - 1) + 1, BattleTowerTrainers
+ ; name, class
db "HANSON@@@@", FISHER
db "SAWYER@@@@", POKEMANIAC
db "MASUDA@@@@", GUITARIST
@@ -23,6 +25,7 @@ BattleTowerTrainers:
db "KAUFMAN@@@", SWIMMERM
db "LANCASTER@", SKIER
db "McMAHILL@@", CAMPER
+ assert_table_length BATTLETOWER_NUM_UNIQUE_MON
; The following can only be sampled in Crystal 1.1.
db "OBRIEN@@@@", GENTLEMAN
db "FROST@@@@@", BEAUTY
@@ -73,3 +76,4 @@ BattleTowerTrainers:
db "DYKSTRA@@@", SWIMMERF
db "EATON@@@@@", BIKER
db "WONG@@@@@@", FIREBREATHER
+ assert_table_length BATTLETOWER_NUM_UNIQUE_TRAINERS
diff --git a/data/battle_tower/parties.asm b/data/battle_tower/parties.asm
index 9c67c2f72..d972944b6 100644
--- a/data/battle_tower/parties.asm
+++ b/data/battle_tower/parties.asm
@@ -1,5 +1,6 @@
BattleTowerMons:
; 10 groups (one per floor level) of 21 mons (BATTLETOWER_NUM_UNIQUE_MON).
+ table_width NICKNAMED_MON_STRUCT_LENGTH, BattleTowerMons
; BattleTowerMons group 1
@@ -5489,3 +5490,5 @@ BattleTowerMons:
bigdw 214 ; SAtk
bigdw 214 ; SDef
db "RANTA-N@@@@"
+
+ assert_table_length 10 * BATTLETOWER_NUM_UNIQUE_MON
diff --git a/data/battle_tower/unknown.asm b/data/battle_tower/unknown.asm
index 3437c444b..af51b1e83 100644
--- a/data/battle_tower/unknown.asm
+++ b/data/battle_tower/unknown.asm
@@ -1,6 +1,7 @@
BattleTowerTrainerData:: ; ???
; 70 tables (BATTLETOWER_NUM_UNIQUE_TRAINERS) of 18 two-argument entries (total size BATTLETOWER_TRAINERDATALENGTH).
; Second argument points to an entry in Unknown_170470, to which the first argument is compared.
+ table_width BATTLETOWER_TRAINERDATALENGTH, BattleTowerTrainerData
; BattleTowerTrainerData table 1:
db $37, 3
@@ -1401,3 +1402,5 @@ BattleTowerTrainerData:: ; ???
db $22, 7
db $d1, 0
db $32, 13
+
+ assert_table_length BATTLETOWER_NUM_UNIQUE_TRAINERS