shithub: pokered

Download patch

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.