aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRangi <remy.oukaour+rangi42@gmail.com>2022-09-24 11:39:39 -0400
committerRangi <remy.oukaour+rangi42@gmail.com>2022-09-24 11:39:39 -0400
commitc299cf10675164502a7c487a29014b2927a403c0 (patch)
tree9b86cf7c96cb46e35a38a7f7b018efb032fabbcb
parentAdd constants and table macros for the map sprite sets (#392) (diff)
downloadpokeyellow-c299cf10675164502a7c487a29014b2927a403c0.tar.gz
pokeyellow-c299cf10675164502a7c487a29014b2927a403c0.tar.xz
pokeyellow-c299cf10675164502a7c487a29014b2927a403c0.zip
Use a SPRITE_SET_LENGTH constant
-rw-r--r--constants/sprite_set_constants.asm3
-rw-r--r--data/maps/sprite_sets.asm3
-rw-r--r--engine/overworld/map_sprites.asm8
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.