ref: c299cf10675164502a7c487a29014b2927a403c0
parent: d2be79adf1c366b28821817cefaab9066668b205
author: Rangi <remy.oukaour+rangi42@gmail.com>
date: Sat Sep 24 07:39:39 EDT 2022
Use a SPRITE_SET_LENGTH constant
--- a/constants/sprite_set_constants.asm
+++ b/constants/sprite_set_constants.asm
@@ -36,3 +36,6 @@
; 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
--- a/data/maps/sprite_sets.asm
+++ b/data/maps/sprite_sets.asm
@@ -63,8 +63,7 @@
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
--- a/engine/overworld/map_sprites.asm
+++ b/engine/overworld/map_sprites.asm
@@ -283,7 +283,7 @@
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 @@
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 @@
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.