shithub: pokecrystal

Download patch

ref: 4a16bbe45a3d547c44aadd127253f6f5eaf78f54
parent: 1c1fe276ca59726bb0008c60006c6b48cd093573
author: PikalaxALT <[email protected]>
date: Tue Nov 3 04:16:56 EST 2015

sprite_header and emote_header

--- a/constants/map_constants.asm
+++ b/constants/map_constants.asm
@@ -566,6 +566,7 @@
 	const MAPOBJECT_FLAG_HI ; d
 	const MAPOBJECT_E ; unused
 	const MAPOBJECT_F ; unused
+OBJECT_LENGTH EQU const_value
 
 MAPOBJECT_SCREEN_HEIGHT EQU 11
 MAPOBJECT_SCREEN_WIDTH EQU 12
--- a/constants/wram_constants.asm
+++ b/constants/wram_constants.asm
@@ -54,7 +54,6 @@
 PLAYER_OBJECT EQU 0
 
 NUM_OBJECTS   EQU $10
-OBJECT_LENGTH EQU $10
 
 ; InputType: ; c2c7
 AUTO_INPUT EQU $ff
binary files a/gfx/misc/fishing.2bpp /dev/null differ
--- /dev/null
+++ b/gfx/misc/fishing1.2bpp
@@ -1,0 +1,1 @@
+????
\ No newline at end of file
binary files /dev/null b/gfx/misc/fishing2.2bpp differ
binary files /dev/null b/gfx/misc/fishing3.2bpp differ
--- /dev/null
+++ b/gfx/misc/fishing4.2bpp
@@ -1,0 +1,1 @@
+@ 2�d	6	
\ No newline at end of file
--- a/gfx/overworld/sprite_headers.asm
+++ b/gfx/overworld/sprite_headers.asm
@@ -3,614 +3,416 @@
 ;	Length, Bank
 ;	Type, Palette
 
+sprite_header: MACRO
+	dw \1
+	db \2 * $40, BANK(\1)
+	db \3, \4
+ENDM
+
 ChrisSprite: ; 14736
-	dw ChrisSpriteGFX
-	db $3 * $40, BANK(ChrisSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header ChrisSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 1473c
 
 ChrisBikeSprite: ; 1473c
-	dw ChrisBikeSpriteGFX
-	db $3 * $40, BANK(ChrisBikeSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header ChrisBikeSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 14742
 
 GameboyKidSprite: ; 14742
-	dw GameboyKidSpriteGFX
-	db $3 * $40, BANK(GameboyKidSpriteGFX)
-	db STANDING_SPRITE, PAL_OW_GREEN
+	sprite_header GameboyKidSpriteGFX, 3, STANDING_SPRITE, PAL_OW_GREEN
 ; 14748
 
 SilverSprite: ; 14748
-	dw SilverSpriteGFX
-	db $3 * $40, BANK(SilverSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header SilverSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 1474e
 
 OakSprite: ; 1474e
-	dw OakSpriteGFX
-	db $3 * $40, BANK(OakSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header OakSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 14754
 
 RedSprite: ; 14754
-	dw RedSpriteGFX
-	db $3 * $40, BANK(RedSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header RedSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 1475a
 
 BlueSprite: ; 1475a
-	dw BlueSpriteGFX
-	db $3 * $40, BANK(BlueSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header BlueSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 14760
 
 BillSprite: ; 14760
-	dw BillSpriteGFX
-	db $3 * $40, BANK(BillSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header BillSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 14766
 
 ElderSprite: ; 14766
-	dw ElderSpriteGFX
-	db $3 * $40, BANK(ElderSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header ElderSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 1476c
 
 JanineSprite: ; 1476c
-	dw JanineSpriteGFX
-	db $3 * $40, BANK(JanineSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header JanineSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 14772
 
 KurtSprite: ; 14772
-	dw KurtSpriteGFX
-	db $3 * $40, BANK(KurtSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header KurtSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 14778
 
 MomSprite: ; 14778
-	dw MomSpriteGFX
-	db $3 * $40, BANK(MomSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header MomSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 1477e
 
 BlaineSprite: ; 1477e
-	dw BlaineSpriteGFX
-	db $3 * $40, BANK(BlaineSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header BlaineSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 14784
 
 RedsMomSprite: ; 14784
-	dw RedsMomSpriteGFX
-	db $3 * $40, BANK(RedsMomSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header RedsMomSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 1478a
 
 DaisySprite: ; 1478a
-	dw DaisySpriteGFX
-	db $3 * $40, BANK(DaisySpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header DaisySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 14790
 
 ElmSprite: ; 14790
-	dw ElmSpriteGFX
-	db $3 * $40, BANK(ElmSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header ElmSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 14796
 
 WillSprite: ; 14796
-	dw WillSpriteGFX
-	db $3 * $40, BANK(WillSpriteGFX)
-	db STANDING_SPRITE, PAL_OW_RED
+	sprite_header WillSpriteGFX, 3, STANDING_SPRITE, PAL_OW_RED
 ; 1479c
 
 FalknerSprite: ; 1479c
-	dw FalknerSpriteGFX
-	db $3 * $40, BANK(FalknerSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header FalknerSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 147a2
 
 WhitneySprite: ; 147a2
-	dw WhitneySpriteGFX
-	db $3 * $40, BANK(WhitneySpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header WhitneySpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 147a8
 
 BugsySprite: ; 147a8
-	dw BugsySpriteGFX
-	db $3 * $40, BANK(BugsySpriteGFX)
-	db WALKING_SPRITE, PAL_OW_GREEN
+	sprite_header BugsySpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
 ; 147ae
 
 MortySprite: ; 147ae
-	dw MortySpriteGFX
-	db $3 * $40, BANK(MortySpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header MortySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 147b4
 
 ChuckSprite: ; 147b4
-	dw ChuckSpriteGFX
-	db $3 * $40, BANK(ChuckSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header ChuckSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 147ba
 
 JasmineSprite: ; 147ba
-	dw JasmineSpriteGFX
-	db $3 * $40, BANK(JasmineSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_GREEN
+	sprite_header JasmineSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
 ; 147c0
 
 PryceSprite: ; 147c0
-	dw PryceSpriteGFX
-	db $3 * $40, BANK(PryceSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header PryceSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 147c6
 
 ClairSprite: ; 147c6
-	dw ClairSpriteGFX
-	db $3 * $40, BANK(ClairSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header ClairSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 147cc
 
 BrockSprite: ; 147cc
-	dw BrockSpriteGFX
-	db $3 * $40, BANK(BrockSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header BrockSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 147d2
 
 KarenSprite: ; 147d2
-	dw KarenSpriteGFX
-	db $3 * $40, BANK(KarenSpriteGFX)
-	db STANDING_SPRITE, PAL_OW_BLUE
+	sprite_header KarenSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BLUE
 ; 147d8
 
 BrunoSprite: ; 147d8
-	dw BrunoSpriteGFX
-	db $3 * $40, BANK(BrunoSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header BrunoSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 147de
 
 MistySprite: ; 147de
-	dw MistySpriteGFX
-	db $3 * $40, BANK(MistySpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header MistySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 147e4
 
 LanceSprite: ; 147e4
-	dw LanceSpriteGFX
-	db $3 * $40, BANK(LanceSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header LanceSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 147ea
 
 SurgeSprite: ; 147ea
-	dw SurgeSpriteGFX
-	db $3 * $40, BANK(SurgeSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_GREEN
+	sprite_header SurgeSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
 ; 147f0
 
 ErikaSprite: ; 147f0
-	dw ErikaSpriteGFX
-	db $3 * $40, BANK(ErikaSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_GREEN
+	sprite_header ErikaSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
 ; 147f6
 
 KogaSprite: ; 147f6
-	dw KogaSpriteGFX
-	db $3 * $40, BANK(KogaSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header KogaSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 147fc
 
 SabrinaSprite: ; 147fc
-	dw SabrinaSpriteGFX
-	db $3 * $40, BANK(SabrinaSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header SabrinaSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 14802
 
 CooltrainerMSprite: ; 14802
-	dw CooltrainerMSpriteGFX
-	db $3 * $40, BANK(CooltrainerMSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header CooltrainerMSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 14808
 
 CooltrainerFSprite: ; 14808
-	dw CooltrainerFSpriteGFX
-	db $3 * $40, BANK(CooltrainerFSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header CooltrainerFSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 1480e
 
 BugCatcherSprite: ; 1480e
-	dw BugCatcherSpriteGFX
-	db $3 * $40, BANK(BugCatcherSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header BugCatcherSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 14814
 
 TwinSprite: ; 14814
-	dw TwinSpriteGFX
-	db $3 * $40, BANK(TwinSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header TwinSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 1481a
 
 YoungsterSprite: ; 1481a
-	dw YoungsterSpriteGFX
-	db $3 * $40, BANK(YoungsterSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header YoungsterSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 14820
 
 LassSprite: ; 14820
-	dw LassSpriteGFX
-	db $3 * $40, BANK(LassSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header LassSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 14826
 
 TeacherSprite: ; 14826
-	dw TeacherSpriteGFX
-	db $3 * $40, BANK(TeacherSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header TeacherSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 1482c
 
 BuenaSprite: ; 1482c
-	dw BuenaSpriteGFX
-	db $3 * $40, BANK(BuenaSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header BuenaSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 14832
 
 SuperNerdSprite: ; 14832
-	dw SuperNerdSpriteGFX
-	db $3 * $40, BANK(SuperNerdSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header SuperNerdSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 14838
 
 RockerSprite: ; 14838
-	dw RockerSpriteGFX
-	db $3 * $40, BANK(RockerSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_GREEN
+	sprite_header RockerSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
 ; 1483e
 
 PokefanMSprite: ; 1483e
-	dw PokefanMSpriteGFX
-	db $3 * $40, BANK(PokefanMSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header PokefanMSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 14844
 
 PokefanFSprite: ; 14844
-	dw PokefanFSpriteGFX
-	db $3 * $40, BANK(PokefanFSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header PokefanFSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 1484a
 
 GrampsSprite: ; 1484a
-	dw GrampsSpriteGFX
-	db $3 * $40, BANK(GrampsSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header GrampsSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 14850
 
 GrannySprite: ; 14850
-	dw GrannySpriteGFX
-	db $3 * $40, BANK(GrannySpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header GrannySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 14856
 
 SwimmerGuySprite: ; 14856
-	dw SwimmerGuySpriteGFX
-	db $3 * $40, BANK(SwimmerGuySpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header SwimmerGuySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 1485c
 
 SwimmerGirlSprite: ; 1485c
-	dw SwimmerGirlSpriteGFX
-	db $3 * $40, BANK(SwimmerGirlSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header SwimmerGirlSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 14862
 
 BigSnorlaxSprite: ; 14862
-	dw BigSnorlaxSpriteGFX
-	db $3 * $40, BANK(BigSnorlaxSpriteGFX)
-	db STANDING_SPRITE, PAL_OW_BLUE
+	sprite_header BigSnorlaxSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BLUE
 ; 14868
 
 SurfingPikachuSprite: ; 14868
-	dw SurfingPikachuSpriteGFX
-	db $3 * $40, BANK(SurfingPikachuSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header SurfingPikachuSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 1486e
 
 RocketSprite: ; 1486e
-	dw RocketSpriteGFX
-	db $3 * $40, BANK(RocketSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header RocketSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 14874
 
 RocketGirlSprite: ; 14874
-	dw RocketGirlSpriteGFX
-	db $3 * $40, BANK(RocketGirlSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header RocketGirlSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 1487a
 
 NurseSprite: ; 1487a
-	dw NurseSpriteGFX
-	db $3 * $40, BANK(NurseSpriteGFX)
-	db STANDING_SPRITE, PAL_OW_RED
+	sprite_header NurseSpriteGFX, 3, STANDING_SPRITE, PAL_OW_RED
 ; 14880
 
 LinkReceptionistSprite: ; 14880
-	dw LinkReceptionistSpriteGFX
-	db $3 * $40, BANK(LinkReceptionistSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header LinkReceptionistSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 14886
 
 ClerkSprite: ; 14886
-	dw ClerkSpriteGFX
-	db $3 * $40, BANK(ClerkSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_GREEN
+	sprite_header ClerkSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
 ; 1488c
 
 FisherSprite: ; 1488c
-	dw FisherSpriteGFX
-	db $3 * $40, BANK(FisherSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header FisherSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 14892
 
 FishingGuruSprite: ; 14892
-	dw FishingGuruSpriteGFX
-	db $3 * $40, BANK(FishingGuruSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header FishingGuruSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 14898
 
 ScientistSprite: ; 14898
-	dw ScientistSpriteGFX
-	db $3 * $40, BANK(ScientistSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header ScientistSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 1489e
 
 KimonoGirlSprite: ; 1489e
-	dw KimonoGirlSpriteGFX
-	db $3 * $40, BANK(KimonoGirlSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header KimonoGirlSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 148a4
 
 SageSprite: ; 148a4
-	dw SageSpriteGFX
-	db $3 * $40, BANK(SageSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header SageSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 148aa
 
 UnusedGuySprite: ; 148aa
-	dw UnusedGuySpriteGFX
-	db $3 * $40, BANK(UnusedGuySpriteGFX)
-	db STANDING_SPRITE, PAL_OW_RED
+	sprite_header UnusedGuySpriteGFX, 3, STANDING_SPRITE, PAL_OW_RED
 ; 148b0
 
 GentlemanSprite: ; 148b0
-	dw GentlemanSpriteGFX
-	db $3 * $40, BANK(GentlemanSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header GentlemanSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 148b6
 
 BlackBeltSprite: ; 148b6
-	dw BlackBeltSpriteGFX
-	db $3 * $40, BANK(BlackBeltSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header BlackBeltSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 148bc
 
 ReceptionistSprite: ; 148bc
-	dw ReceptionistSpriteGFX
-	db $3 * $40, BANK(ReceptionistSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header ReceptionistSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 148c2
 
 OfficerSprite: ; 148c2
-	dw OfficerSpriteGFX
-	db $3 * $40, BANK(OfficerSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header OfficerSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 148c8
 
 CalSprite: ; 148c8
-	dw CalSpriteGFX
-	db $3 * $40, BANK(CalSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header CalSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 148ce
 
 SlowpokeSprite: ; 148ce
-	dw SlowpokeSpriteGFX
-	db $1 * $40, BANK(SlowpokeSpriteGFX)
-	db STILL_SPRITE, PAL_OW_RED
+	sprite_header SlowpokeSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
 ; 148d4
 
 CaptainSprite: ; 148d4
-	dw CaptainSpriteGFX
-	db $3 * $40, BANK(CaptainSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header CaptainSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 148da
 
 BigLaprasSprite: ; 148da
-	dw BigLaprasSpriteGFX
-	db $3 * $40, BANK(BigLaprasSpriteGFX)
-	db STANDING_SPRITE, PAL_OW_BLUE
+	sprite_header BigLaprasSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BLUE
 ; 148e0
 
 GymGuySprite: ; 148e0
-	dw GymGuySpriteGFX
-	db $3 * $40, BANK(GymGuySpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header GymGuySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 148e6
 
 SailorSprite: ; 148e6
-	dw SailorSpriteGFX
-	db $3 * $40, BANK(SailorSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header SailorSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 148ec
 
 BikerSprite: ; 148ec
-	dw BikerSpriteGFX
-	db $3 * $40, BANK(BikerSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header BikerSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 148f2
 
 PharmacistSprite: ; 148f2
-	dw PharmacistSpriteGFX
-	db $3 * $40, BANK(PharmacistSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header PharmacistSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 148f8
 
 MonsterSprite: ; 148f8
-	dw MonsterSpriteGFX
-	db $3 * $40, BANK(MonsterSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header MonsterSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 148fe
 
 FairySprite: ; 148fe
-	dw FairySpriteGFX
-	db $3 * $40, BANK(FairySpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header FairySpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 14904
 
 BirdSprite: ; 14904
-	dw BirdSpriteGFX
-	db $3 * $40, BANK(BirdSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header BirdSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 1490a
 
 DragonSprite: ; 1490a
-	dw DragonSpriteGFX
-	db $3 * $40, BANK(DragonSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header DragonSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 14910
 
 BigOnixSprite: ; 14910
-	dw BigOnixSpriteGFX
-	db $3 * $40, BANK(BigOnixSpriteGFX)
-	db STANDING_SPRITE, PAL_OW_BROWN
+	sprite_header BigOnixSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BROWN
 ; 14916
 
 N64Sprite: ; 14916
-	dw N64SpriteGFX
-	db $1 * $40, BANK(N64SpriteGFX)
-	db STILL_SPRITE, PAL_OW_BROWN
+	sprite_header N64SpriteGFX, 1, STILL_SPRITE, PAL_OW_BROWN
 ; 1491c
 
 SudowoodoSprite: ; 1491c
-	dw SudowoodoSpriteGFX
-	db $3 * $40, BANK(SudowoodoSpriteGFX)
-	db STANDING_SPRITE, PAL_OW_GREEN
+	sprite_header SudowoodoSpriteGFX, 3, STANDING_SPRITE, PAL_OW_GREEN
 ; 14922
 
 SurfSprite: ; 14922
-	dw SurfSpriteGFX
-	db $3 * $40, BANK(SurfSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header SurfSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 14928
 
 PokeBallSprite: ; 14928
-	dw PokeBallSpriteGFX
-	db $1 * $40, BANK(PokeBallSpriteGFX)
-	db STILL_SPRITE, PAL_OW_RED
+	sprite_header PokeBallSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
 ; 1492e
 
 PokedexSprite: ; 1492e
-	dw PokedexSpriteGFX
-	db $1 * $40, BANK(PokedexSpriteGFX)
-	db STILL_SPRITE, PAL_OW_BROWN
+	sprite_header PokedexSpriteGFX, 1, STILL_SPRITE, PAL_OW_BROWN
 ; 14934
 
 PaperSprite: ; 14934
-	dw PaperSpriteGFX
-	db $1 * $40, BANK(PaperSpriteGFX)
-	db STILL_SPRITE, PAL_OW_BLUE
+	sprite_header PaperSpriteGFX, 1, STILL_SPRITE, PAL_OW_BLUE
 ; 1493a
 
 VirtualBoySprite: ; 1493a
-	dw VirtualBoySpriteGFX
-	db $1 * $40, BANK(VirtualBoySpriteGFX)
-	db STILL_SPRITE, PAL_OW_RED
+	sprite_header VirtualBoySpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
 ; 14940
 
 OldLinkReceptionistSprite: ; 14940
-	dw OldLinkReceptionistSpriteGFX
-	db $3 * $40, BANK(OldLinkReceptionistSpriteGFX)
-	db STANDING_SPRITE, PAL_OW_RED
+	sprite_header OldLinkReceptionistSpriteGFX, 3, STANDING_SPRITE, PAL_OW_RED
 ; 14946
 
 RockSprite: ; 14946
-	dw RockSpriteGFX
-	db $1 * $40, BANK(RockSpriteGFX)
-	db STILL_SPRITE, PAL_OW_ROCK
+	sprite_header RockSpriteGFX, 1, STILL_SPRITE, PAL_OW_ROCK
 ; 1494c
 
 BoulderSprite: ; 1494c
-	dw BoulderSpriteGFX
-	db $1 * $40, BANK(BoulderSpriteGFX)
-	db STILL_SPRITE, PAL_OW_ROCK
+	sprite_header BoulderSpriteGFX, 1, STILL_SPRITE, PAL_OW_ROCK
 ; 14952
 
 SnesSprite: ; 14952
-	dw SnesSpriteGFX
-	db $1 * $40, BANK(SnesSpriteGFX)
-	db STILL_SPRITE, PAL_OW_BLUE
+	sprite_header SnesSpriteGFX, 1, STILL_SPRITE, PAL_OW_BLUE
 ; 14958
 
 FamicomSprite: ; 14958
-	dw FamicomSpriteGFX
-	db $1 * $40, BANK(FamicomSpriteGFX)
-	db STILL_SPRITE, PAL_OW_RED
+	sprite_header FamicomSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
 ; 1495e
 
 FruitTreeSprite: ; 1495e
-	dw FruitTreeSpriteGFX
-	db $1 * $40, BANK(FruitTreeSpriteGFX)
-	db STILL_SPRITE, PAL_OW_TREE
+	sprite_header FruitTreeSpriteGFX, 1, STILL_SPRITE, PAL_OW_TREE
 ; 14964
 
 GoldTrophySprite: ; 14964
-	dw GoldTrophySpriteGFX
-	db $1 * $40, BANK(GoldTrophySpriteGFX)
-	db STILL_SPRITE, PAL_OW_BROWN
+	sprite_header GoldTrophySpriteGFX, 1, STILL_SPRITE, PAL_OW_BROWN
 ; 1496a
 
 SilverTrophySprite: ; 1496a
-	dw SilverTrophySpriteGFX
-	db $1 * $40, BANK(SilverTrophySpriteGFX)
-	db STILL_SPRITE, PAL_OW_SILVER
+	sprite_header SilverTrophySpriteGFX, 1, STILL_SPRITE, PAL_OW_SILVER
 ; 14970
 
 KrisSprite: ; 14970
-	dw KrisSpriteGFX
-	db $3 * $40, BANK(KrisSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header KrisSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 14976
 
 KrisBikeSprite: ; 14976
-	dw KrisBikeSpriteGFX
-	db $3 * $40, BANK(KrisBikeSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header KrisBikeSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 1497c
 
 KurtOutsideSprite: ; 1497c
-	dw KurtOutsideSpriteGFX
-	db $3 * $40, BANK(KurtOutsideSpriteGFX)
-	db STANDING_SPRITE, PAL_OW_BROWN
+	sprite_header KurtOutsideSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BROWN
 ; 14982
 
 SuicuneSprite: ; 14982
-	dw SuicuneSpriteGFX
-	db $1 * $40, BANK(SuicuneSpriteGFX)
-	db STILL_SPRITE, PAL_OW_BLUE
+	sprite_header SuicuneSpriteGFX, 1, STILL_SPRITE, PAL_OW_BLUE
 ; 14988
 
 EnteiSprite: ; 14988
-	dw EnteiSpriteGFX
-	db $1 * $40, BANK(EnteiSpriteGFX)
-	db STILL_SPRITE, PAL_OW_RED
+	sprite_header EnteiSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
 ; 1498e
 
 RaikouSprite: ; 1498e
-	dw RaikouSpriteGFX
-	db $1 * $40, BANK(RaikouSpriteGFX)
-	db STILL_SPRITE, PAL_OW_RED
+	sprite_header RaikouSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
 ; 14994
 
 StandingYoungsterSprite: ; 14994
-	dw StandingYoungsterSpriteGFX
-	db $3 * $40, BANK(StandingYoungsterSpriteGFX)
-	db STANDING_SPRITE, PAL_OW_BLUE
+	sprite_header StandingYoungsterSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BLUE
 ; 1499a
--- a/main.asm
+++ b/main.asm
@@ -16193,7 +16193,7 @@
 ; 14146
 
 Function14146: ; 14146
-	ld hl, wd13e
+	ld hl, wSpriteFlags
 	ld a, [hl]
 	push af
 	res 7, [hl]
@@ -16200,12 +16200,12 @@
 	set 6, [hl]
 	call RunCallback_04
 	pop af
-	ld [wd13e], a
+	ld [wSpriteFlags], a
 	ret
 ; 14157
 
 Function14157: ; 14157
-	ld hl, wd13e
+	ld hl, wSpriteFlags
 	ld a, [hl]
 	push af
 	set 7, [hl]
@@ -16212,7 +16212,7 @@
 	res 6, [hl]
 	call RunCallback_04
 	pop af
-	ld [wd13e], a
+	ld [wSpriteFlags], a
 	ret
 ; 14168
 
@@ -16225,7 +16225,7 @@
 
 Function1416f: ; 1416f
 	xor a
-	ld bc, $0040
+	ld bc, UsedSpritesEnd - UsedSprites
 	ld hl, UsedSprites
 	call ByteFill
 	call GetPlayerSprite
@@ -16254,7 +16254,7 @@
 .loop
 	ld a, [hli]
 	cp c
-	jr z, .asm_141ac
+	jr z, .good
 	inc hl
 	cp $ff
 	jr nz, .loop
@@ -16263,15 +16263,15 @@
 	xor a ; ld a, PLAYER_NORMAL
 	ld [PlayerState], a
 	ld a, SPRITE_CHRIS
-	jr .asm_141ad
+	jr .finish
 
-.asm_141ac
+.good
 	ld a, [hl]
 
-.asm_141ad
+.finish
 	ld [UsedSprites + 0], a
-	ld [PlayerStruct + 0], a
-	ld [MapObjects + OBJECT_LENGTH * 0 + 1], a
+	ld [PlayerSprite], a
+	ld [MapObjects + OBJECT_LENGTH * PLAYER_OBJECT + MAPOBJECT_SPRITE], a
 	ret
 
 .Chris
@@ -16303,7 +16303,7 @@
 
 
 AddIndoorSprites: ; 141d9
-	ld hl, MapObjects + 1 * OBJECT_LENGTH + 1 ; sprite
+	ld hl, MapObjects + 1 * OBJECT_LENGTH + MAPOBJECT_SPRITE ; sprite
 	ld a, 1
 .loop
 	push af
@@ -16352,7 +16352,7 @@
 ; 14215
 
 Function14215: ; 14215
-	ld a, [wd13e]
+	ld a, [wSpriteFlags]
 	bit 6, a
 	ret nz
 	ld c, $8
@@ -16755,9 +16755,9 @@
 	ld hl, UsedSprites
 	ld c, SPRITE_GFX_LIST_CAPACITY
 .loop
-	ld a, [wd13e]
+	ld a, [wSpriteFlags]
 	res 5, a
-	ld [wd13e], a
+	ld [wSpriteFlags], a
 	ld a, [hli]
 	and a
 	jr z, .done
@@ -16766,9 +16766,9 @@
 	ld [hUsedSpriteTile], a
 	bit 7, a
 	jr z, .dont_set
-	ld a, [wd13e]
+	ld a, [wSpriteFlags]
 	set 5, a
-	ld [wd13e], a
+	ld [wSpriteFlags], a
 
 .dont_set
 	push bc
@@ -16791,7 +16791,7 @@
 	push hl
 	push de
 	push bc
-	ld a, [wd13e]
+	ld a, [wSpriteFlags]
 	bit 7, a
 	jr nz, .asm_143df
 	call Function14418
@@ -16808,7 +16808,7 @@
 	ld d, h
 	ld e, l
 	pop hl
-	ld a, [wd13e]
+	ld a, [wSpriteFlags]
 	bit 5, a
 	jr nz, .asm_14405
 	bit 6, a
@@ -16845,7 +16845,7 @@
 Function14418: ; 14418
 	ld a, [rVBK]
 	push af
-	ld a, [wd13e]
+	ld a, [wSpriteFlags]
 	bit 5, a
 	ld a, $1
 	jr z, .asm_14426
@@ -16889,59 +16889,29 @@
 	ret
 ; 1444d
 
+emote_header: MACRO
+	dw \1
+	db \2 * $10, BANK(\1)
+	dw \3
+ENDM
+
 EmotesPointers: ; 144d
 ; dw source address
 ; db length, bank
 ; dw dest address
 
-	dw ShockEmote
-	db 4 * $10, BANK(ShockEmote)
-	dw VTiles1 tile $78
-
-	dw QuestionEmote
-	db 4 * $10, BANK(QuestionEmote)
-	dw VTiles1 tile $78
-
-	dw HappyEmote
-	db 4 * $10, BANK(HappyEmote)
-	dw VTiles1 tile $78
-
-	dw SadEmote
-	db 4 * $10, BANK(SadEmote)
-	dw VTiles1 tile $78
-
-	dw HeartEmote
-	db 4 * $10, BANK(HeartEmote)
-	dw VTiles1 tile $78
-
-	dw BoltEmote
-	db 4 * $10, BANK(BoltEmote)
-	dw VTiles1 tile $78
-
-	dw SleepEmote
-	db 4 * $10, BANK(SleepEmote)
-	dw VTiles1 tile $78
-
-	dw FishEmote
-	db 4 * $10, BANK(FishEmote)
-	dw VTiles1 tile $78
-
-	dw FishingRodGFX + $00
-	db 1 * $10, BANK(FishingRodGFX)
-	dw VTiles1 tile $7c
-
-	dw FishingRodGFX + $10
-	db 2 * $10, BANK(FishingRodGFX)
-	dw VTiles1 tile $7c
-
-	dw FishingRodGFX + $30
-	db 2 * $10, BANK(FishingRodGFX)
-	dw VTiles1 tile $7e
-
-	dw FishingRodGFX + $50
-	db 1 * $10, BANK(FishingRodGFX)
-	dw VTiles1 tile $7e
-
+	emote_header ShockEmote, 4, VTiles1 tile $78
+	emote_header QuestionEmote, 4, VTiles1 tile $78
+	emote_header HappyEmote, 4, VTiles1 tile $78
+	emote_header SadEmote, 4, VTiles1 tile $78
+	emote_header HeartEmote, 4, VTiles1 tile $78
+	emote_header BoltEmote, 4, VTiles1 tile $78
+	emote_header SleepEmote, 4, VTiles1 tile $78
+	emote_header FishEmote, 4, VTiles1 tile $78
+	emote_header FishingRodGFX1, 1, VTiles1 tile $7c
+	emote_header FishingRodGFX2, 2, VTiles1 tile $7c
+	emote_header FishingRodGFX3, 2, VTiles1 tile $7e
+	emote_header FishingRodGFX4, 1, VTiles1 tile $7e
 ; 14495
 
 
@@ -78058,7 +78028,10 @@
 BoltEmote:     INCBIN "gfx/emotes/bolt.2bpp"
 SleepEmote:    INCBIN "gfx/emotes/sleep.2bpp"
 FishEmote:     INCBIN "gfx/emotes/fish.2bpp"
-FishingRodGFX: INCBIN "gfx/misc/fishing.2bpp"
+FishingRodGFX1: INCBIN "gfx/misc/fishing1.2bpp"
+FishingRodGFX2: INCBIN "gfx/misc/fishing2.2bpp"
+FishingRodGFX3: INCBIN "gfx/misc/fishing3.2bpp"
+FishingRodGFX4: INCBIN "gfx/misc/fishing4.2bpp"
 
 
 RunCallback_05_03: ; 1045b0
--- a/wram.asm
+++ b/wram.asm
@@ -1568,7 +1568,7 @@
 TempMon::
 	party_struct TempMon
 
-wd13e:: ds 1
+wSpriteFlags:: ds 1
 
 wd13f:: ds 2