From c299cf10675164502a7c487a29014b2927a403c0 Mon Sep 17 00:00:00 2001 From: Rangi Date: Sat, 24 Sep 2022 11:39:39 -0400 Subject: [PATCH] Use a SPRITE_SET_LENGTH constant --- constants/sprite_set_constants.asm | 3 +++ data/maps/sprite_sets.asm | 3 +-- engine/overworld/map_sprites.asm | 8 ++++---- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/constants/sprite_set_constants.asm b/constants/sprite_set_constants.asm index 4f617c4a..56e4ccbb 100644 --- a/constants/sprite_set_constants.asm +++ b/constants/sprite_set_constants.asm @@ -36,3 +36,6 @@ DEF NUM_SPLIT_SETS EQU const_value - FIRST_SPLIT_SET ; split directions DEF EAST_WEST EQU 1 DEF NORTH_SOUTH EQU 2 + +; each sprite set has 9 walking sprites and 2 still sprites +DEF SPRITE_SET_LENGTH EQU 9 + 2 diff --git a/data/maps/sprite_sets.asm b/data/maps/sprite_sets.asm index 23274aa2..76ddee34 100644 --- a/data/maps/sprite_sets.asm +++ b/data/maps/sprite_sets.asm @@ -63,8 +63,7 @@ SplitMapSpriteSets: assert_table_length NUM_SPLIT_SETS SpriteSets: - ; each sprite set has 9 walking sprites and 2 still sprites - table_width 9 + 2, SpriteSets + table_width SPRITE_SET_LENGTH, SpriteSets ; SPRITESET_PALLET_VIRIDIAN db SPRITE_BLUE diff --git a/engine/overworld/map_sprites.asm b/engine/overworld/map_sprites.asm index 5a4c27c3..8acbb04f 100644 --- a/engine/overworld/map_sprites.asm +++ b/engine/overworld/map_sprites.asm @@ -283,7 +283,7 @@ InitOutsideMapSprites: sla a sla a add c - add b ; a = (spriteSetID - 1) * 11 + add b ; a = (spriteSetID - 1) * SPRITE_SET_LENGTH ld de, SpriteSets ; add a to de to get offset of sprite set add e @@ -309,7 +309,7 @@ InitOutsideMapSprites: inc de inc bc ld a, l - cp $bd ; reached 11th sprite slot? + cp 11 * SPRITESTATEDATA2_LENGTH + SPRITESTATEDATA2_PICTUREID ; reached 11th sprite slot? jr nz, .loadSpriteSetLoop ld b, 4 ; 4 remaining sprite slots .zeroRemainingSlotsLoop ; loop to zero the picture ID's of the remaining sprite slots @@ -322,13 +322,13 @@ InitOutsideMapSprites: jr nz, .zeroRemainingSlotsLoop ld a, [wNumSprites] push af ; save number of sprites - ld a, 11 ; 11 sprites in sprite set + ld a, SPRITE_SET_LENGTH ; 11 sprites in sprite set ld [wNumSprites], a call LoadMapSpriteTilePatterns pop af ld [wNumSprites], a ; restore number of sprites ld hl, wSprite01StateData2ImageBaseOffset - ld b, $0f + ld b, NUM_SPRITESTATEDATA_STRUCTS - 1 ; The VRAM tile pattern slots that LoadMapSpriteTilePatterns set are in the ; order of the map's sprite set, not the order of the actual sprites loaded ; for the current map. So, they are not needed and are zeroed by this loop.