diff options
| author | Rangi <remy.oukaour+rangi42@gmail.com> | 2021-03-03 22:22:41 -0500 |
|---|---|---|
| committer | Rangi <remy.oukaour+rangi42@gmail.com> | 2021-03-04 00:15:03 -0500 |
| commit | 40902ffe244544d638567642e4e01b9c5801db23 (patch) | |
| tree | 4abf9ac20786fdf66bb298b3ec7935cef2c71d07 /data/battle_tower | |
| parent | 9c17fb14c8068d6662b9ca1cb048ed206b6770ee (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.asm | 4 | ||||
| -rw-r--r-- | data/battle_tower/parties.asm | 3 | ||||
| -rw-r--r-- | data/battle_tower/unknown.asm | 3 |
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 |
