From 40902ffe244544d638567642e4e01b9c5801db23 Mon Sep 17 00:00:00 2001 From: Rangi Date: Wed, 3 Mar 2021 22:22:41 -0500 Subject: 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 --- engine/gfx/color.asm | 2 ++ engine/gfx/load_pics.asm | 2 +- engine/gfx/sprite_anims.asm | 4 +++- 3 files changed, 6 insertions(+), 2 deletions(-) (limited to 'engine/gfx') diff --git a/engine/gfx/color.asm b/engine/gfx/color.asm index 7e7f075a0..b6d1a2b2e 100644 --- a/engine/gfx/color.asm +++ b/engine/gfx/color.asm @@ -1305,7 +1305,9 @@ MapObjectPals:: INCLUDE "gfx/overworld/npc_sprites.pal" RoofPals: + table_width PAL_COLOR_SIZE * 2 * 2, RoofPals INCLUDE "gfx/tilesets/roofs.pal" + assert_table_length NUM_MAP_GROUPS + 1 DiplomaPalettes: INCLUDE "gfx/diploma/diploma.pal" diff --git a/engine/gfx/load_pics.asm b/engine/gfx/load_pics.asm index 9b540d86b..23b0f606d 100644 --- a/engine/gfx/load_pics.asm +++ b/engine/gfx/load_pics.asm @@ -311,7 +311,7 @@ GetTrainerPic: ld a, [wTrainerClass] and a ret z - cp NUM_TRAINER_CLASSES + cp NUM_TRAINER_CLASSES + 1 ret nc call WaitBGMap xor a diff --git a/engine/gfx/sprite_anims.asm b/engine/gfx/sprite_anims.asm index f9b1dc221..d74db175d 100644 --- a/engine/gfx/sprite_anims.asm +++ b/engine/gfx/sprite_anims.asm @@ -12,7 +12,8 @@ DoAnimFrame: jp hl .Jumptable: -; entries correspond to SPRITE_ANIM_SEQ_* constants +; entries correspond to SPRITE_ANIM_SEQ_* constants (see constants/sprite_anim_constants.asm) + table_width 2, DoAnimFrame.Jumptable dw AnimSeq_Null dw AnimSeq_PartyMon dw AnimSeq_PartyMonSwitch @@ -48,6 +49,7 @@ DoAnimFrame: dw AnimSeq_IntroUnown dw AnimSeq_IntroUnownF dw AnimSeq_IntroSuicuneAway + assert_table_length NUM_SPRITE_ANIM_SEQS AnimSeq_Null: ret -- cgit v1.2.3