shithub: pokered

Download patch

ref: 2b2ed54bbf017943ba2343cd6c1dbe88b8f34a4e
parent: 7ab43f4d17aa63d4ef1050d80560379f19200088
author: Rangi <remy.oukaour+rangi42@gmail.com>
date: Sun Jul 5 13:29:11 EDT 2020

Identify wSpriteStateData1 and wSpriteStateData2 offsets, like pokeyellow

--- a/engine/battle/battle_transitions.asm
+++ b/engine/battle/battle_transitions.asm
@@ -10,7 +10,7 @@
 
 ; Determine which OAM block is being used by the enemy trainer sprite (if there
 ; is one).
-	ld hl, wSpriteStateData1 + 2
+	ld hl, wSpritePlayerStateData1ImageIndex
 	ld a, [hSpriteIndexOrTextID] ; enemy trainer sprite index (0 if wild battle)
 	ld c, a
 	ld b, 0
--- a/engine/events/card_key.asm
+++ b/engine/events/card_key.asm
@@ -88,7 +88,7 @@
 	ld d, a
 	ld a, [wXCoord]
 	ld e, a
-	ld a, [wSpriteStateData1 + 9] ; player's sprite facing direction
+	ld a, [wSpritePlayerStateData1FacingDirection]
 	and a
 	jr nz, .notFacingDown
 ; facing down
--- a/engine/events/hidden_objects/bench_guys.asm
+++ b/engine/events/hidden_objects/bench_guys.asm
@@ -15,7 +15,7 @@
 .match
 	ld a, [hli]
 	ld b, a
-	ld a, [wSpriteStateData1 + 9]
+	ld a, [wSpritePlayerStateData1FacingDirection]
 	cp b
 	jr nz, .loop ; player isn't facing left at the bench guy
 	ld a, [hl]
--- a/engine/events/hidden_objects/bills_house_pc.asm
+++ b/engine/events/hidden_objects/bills_house_pc.asm
@@ -1,6 +1,6 @@
 BillsHousePC:
 	call EnableAutoTextBoxDrawing
-	ld a, [wSpriteStateData1 + 9]
+	ld a, [wSpritePlayerStateData1FacingDirection]
 	cp SPRITE_FACING_UP
 	ret nz
 	CheckEvent EVENT_LEFT_BILLS_HOUSE_AFTER_HELPING
--- a/engine/events/hidden_objects/bookshelves.asm
+++ b/engine/events/hidden_objects/bookshelves.asm
@@ -1,6 +1,6 @@
 ; prints text for bookshelves in buildings without sign events
 PrintBookshelfText::
-	ld a, [wSpriteStateData1 + 9] ; player's sprite facing direction
+	ld a, [wSpritePlayerStateData1FacingDirection]
 	cp SPRITE_FACING_UP
 	jr nz, .noMatch
 ; facing up
--- a/engine/events/hidden_objects/cinnabar_gym_quiz.asm
+++ b/engine/events/hidden_objects/cinnabar_gym_quiz.asm
@@ -1,5 +1,5 @@
 PrintCinnabarQuiz:
-	ld a, [wSpriteStateData1 + 9]
+	ld a, [wSpritePlayerStateData1FacingDirection]
 	cp SPRITE_FACING_UP
 	ret nz
 	call EnableAutoTextBoxDrawing
--- a/engine/events/hidden_objects/gym_statues.asm
+++ b/engine/events/hidden_objects/gym_statues.asm
@@ -3,7 +3,7 @@
 ; if in a gym and don’t have the corresponding badge, a = GymStatueText1_id and jp PrintPredefTextID
 ; else ret
 	call EnableAutoTextBoxDrawing
-	ld a, [wSpriteStateData1 + 9]
+	ld a, [wSpritePlayerStateData1FacingDirection]
 	cp SPRITE_FACING_UP
 	ret nz
 	ld hl, .BadgeFlags
--- a/engine/events/hidden_objects/indigo_plateau_hq.asm
+++ b/engine/events/hidden_objects/indigo_plateau_hq.asm
@@ -1,5 +1,5 @@
 PrintIndigoPlateauHQText:
-	ld a, [wSpriteStateData1 + 9]
+	ld a, [wSpritePlayerStateData1FacingDirection]
 	cp SPRITE_FACING_UP
 	ret nz
 	call EnableAutoTextBoxDrawing
--- a/engine/events/hidden_objects/oaks_lab_email.asm
+++ b/engine/events/hidden_objects/oaks_lab_email.asm
@@ -1,5 +1,5 @@
 DisplayOakLabEmailText:
-	ld a, [wSpriteStateData1 + 9]
+	ld a, [wSpritePlayerStateData1FacingDirection]
 	cp SPRITE_FACING_UP
 	ret nz
 	call EnableAutoTextBoxDrawing
--- a/engine/events/hidden_objects/pokecenter_pc.asm
+++ b/engine/events/hidden_objects/pokecenter_pc.asm
@@ -1,6 +1,6 @@
 OpenPokemonCenterPC:
-	ld a, [wSpriteStateData1 + 9]
-	cp SPRITE_FACING_UP ; check to see if player is facing up
+	ld a, [wSpritePlayerStateData1FacingDirection]
+	cp SPRITE_FACING_UP
 	ret nz
 	call EnableAutoTextBoxDrawing
 	ld a, $1
--- a/engine/events/hidden_objects/route_15_binoculars.asm
+++ b/engine/events/hidden_objects/route_15_binoculars.asm
@@ -1,5 +1,5 @@
 Route15GateLeftBinoculars:
-	ld a, [wSpriteStateData1 + 9]
+	ld a, [wSpritePlayerStateData1FacingDirection]
 	cp SPRITE_FACING_UP
 	ret nz
 	call EnableAutoTextBoxDrawing
--- a/engine/events/pokecenter.asm
+++ b/engine/events/pokecenter.asm
@@ -19,7 +19,7 @@
 	ld hl, NeedYourPokemonText
 	call PrintText
 	ld a, $18
-	ld [wSpriteStateData1 + $12], a ; make the nurse turn to face the machine
+	ld [wSprite01StateData1ImageIndex], a ; make the nurse turn to face the machine
 	call Delay3
 	predef HealParty
 	callba AnimateHealingMachine ; do the healing machine animation
@@ -34,7 +34,7 @@
 	ld hl, PokemonFightingFitText
 	call PrintText
 	ld a, $14
-	ld [wSpriteStateData1 + $12], a ; make the nurse bow
+	ld [wSprite01StateData1ImageIndex], a ; make the nurse bow
 	ld c, a
 	call DelayFrames
 	jr .done
--- a/engine/menus/display_text_id_init.asm
+++ b/engine/menus/display_text_id_init.asm
@@ -41,7 +41,7 @@
 ; loop to copy C1X9 (direction the sprite is facing) to C2X9 for each sprite
 ; this is done because when you talk to an NPC, they turn to look your way
 ; the original direction they were facing must be restored after the dialogue is over
-	ld hl, wSpriteStateData1 + $19
+	ld hl, wSprite01StateData1FacingDirection
 	ld c, $0f
 	ld de, $10
 .spriteFacingDirectionCopyLoop
@@ -54,7 +54,7 @@
 	jr nz, .spriteFacingDirectionCopyLoop
 ; loop to force all the sprites in the middle of animation to stand still
 ; (so that they don't like they're frozen mid-step during the dialogue)
-	ld hl, wSpriteStateData1 + 2
+	ld hl, wSpritePlayerStateData1ImageIndex
 	ld de, $10
 	ld c, e
 .spriteStandStillLoop
--- a/engine/movie/oak_speech/oak_speech.asm
+++ b/engine/movie/oak_speech/oak_speech.asm
@@ -9,8 +9,8 @@
 	ld bc, wBoxDataEnd - wPlayerName
 	xor a
 	call FillMemory
-	ld hl, wSpriteStateData1
-	ld bc, $200
+	ld hl, wSpriteDataStart
+	ld bc, wSpriteDataEnd - wSpriteDataStart
 	xor a
 	call FillMemory
 	pop af
--- a/engine/overworld/auto_movement.asm
+++ b/engine/overworld/auto_movement.asm
@@ -12,7 +12,7 @@
 	ld a, D_DOWN
 	ld [wSimulatedJoypadStatesEnd], a
 	xor a
-	ld [wSpriteStateData1 + 2], a
+	ld [wSpritePlayerStateData1ImageIndex], a
 	call StartSimulatingJoypadStates
 	ret
 .notStandingOnDoor
@@ -110,7 +110,7 @@
 	swap a
 	ld [wNPCMovementScriptSpriteOffset], a
 	xor a
-	ld [wSpriteStateData2 + $06], a
+	ld [wSpritePlayerStateData2MovementByte1], a
 	ld hl, wSimulatedJoypadStatesEnd
 	ld de, RLEList_PlayerWalkToLab
 	call DecodeRLEList
@@ -228,7 +228,7 @@
 	swap a
 	ld [wNPCMovementScriptSpriteOffset], a
 	xor a
-	ld [wSpriteStateData2 + $06], a
+	ld [wSpritePlayerStateData2MovementByte1], a
 	ld hl, wSimulatedJoypadStatesEnd
 	ld de, RLEList_PewterGymPlayer
 	call DecodeRLEList
--- a/engine/overworld/cut.asm
+++ b/engine/overworld/cut.asm
@@ -127,7 +127,7 @@
 	db $FE,$10,$FF,$10
 
 GetCutOrBoulderDustAnimationOffsets:
-	ld hl, wSpriteStateData1 + 4
+	ld hl, wSpritePlayerStateData1YPixels
 	ld a, [hli] ; player's sprite screen Y position
 	ld b, a
 	inc hl
@@ -187,7 +187,7 @@
 	ld h, [hl]
 	ld l, a
 	add hl, bc
-	ld a, [wSpriteStateData1 + 9] ; player sprite's facing direction
+	ld a, [wSpritePlayerStateData1FacingDirection]
 	and a
 	jr z, .down
 	cp SPRITE_FACING_UP
--- a/engine/overworld/dust_smoke.asm
+++ b/engine/overworld/dust_smoke.asm
@@ -30,7 +30,7 @@
 	jp LoadPlayerSpriteGraphics
 
 GetMoveBoulderDustFunctionPointer:
-	ld a, [wSpriteStateData1 + 9] ; player's sprite facing direction
+	ld a, [wSpritePlayerStateData1FacingDirection]
 	ld hl, MoveBoulderDustFunctionPointerTable
 	ld c, a
 	ld b, $0
--- a/engine/overworld/emotion_bubbles.asm
+++ b/engine/overworld/emotion_bubbles.asm
@@ -38,7 +38,7 @@
 	jr nz, .loop
 
 ; get the screen coordinates of the sprite the bubble is to be displayed above
-	ld hl, wSpriteStateData1 + 4
+	ld hl, wSpritePlayerStateData1YPixels
 	ld a, [wEmotionBubbleSpriteIndex]
 	swap a
 	ld c, a
--- a/engine/overworld/hidden_objects.asm
+++ b/engine/overworld/hidden_objects.asm
@@ -87,7 +87,7 @@
 ; checks if the coordinates in front of the player's sprite match Y in b and X in c
 ; [hCoordsInFrontOfPlayerMatch] = $00 if they match, $ff if they don't match
 CheckIfCoordsInFrontOfPlayerMatch:
-	ld a, [wSpriteStateData1 + 9] ; player's sprite facing direction
+	ld a, [wSpritePlayerStateData1FacingDirection]
 	cp SPRITE_FACING_UP
 	jr z, .facingUp
 	cp SPRITE_FACING_LEFT
--- a/engine/overworld/ledges.asm
+++ b/engine/overworld/ledges.asm
@@ -6,7 +6,7 @@
 	and a ; OVERWORLD
 	ret nz
 	predef GetTileAndCoordsInFrontOfPlayer
-	ld a, [wSpriteStateData1 + 9]
+	ld a, [wSpritePlayerStateData1FacingDirection]
 	ld b, a
 	aCoord 8, 9
 	ld c, a
--- a/engine/overworld/map_sprites.asm
+++ b/engine/overworld/map_sprites.asm
@@ -12,8 +12,8 @@
 	call InitOutsideMapSprites
 	ret c ; return if the map is an outside map (already handled by above call)
 ; if the map is an inside map (i.e. mapID >= $25)
-	ld hl, wSpriteStateData1
-	ld de, wSpriteStateData2 + $0d
+	ld hl, wSpritePlayerStateData1PictureID
+	ld de, wSpritePlayerStateData2PictureID
 ; Loop to copy picture ID's from $C1X0 to $C2XD for LoadMapSpriteTilePatterns.
 .copyPictureIDLoop
 	ld a, [hl] ; $C1X0 (picture ID)
@@ -37,7 +37,7 @@
 .spritesExist
 	ld c, a ; c = [wNumSprites]
 	ld b, $10 ; number of sprite slots
-	ld hl, wSpriteStateData2 + $0d
+	ld hl, wSpritePlayerStateData2PictureID
 	xor a
 	ld [hFourTileSpriteCount], a
 .copyPictureIDLoop ; loop to copy picture ID from $C2XD to $C2XE
@@ -48,9 +48,9 @@
 	ld l, a
 	dec b
 	jr nz, .copyPictureIDLoop
-	ld hl, wSpriteStateData2 + $1e
+	ld hl, wSprite01StateData2ImageBaseOffset
 .loadTilePatternLoop
-	ld de, wSpriteStateData2 + $1d
+	ld de, wSprite01StateData2PictureID
 ; Check if the current picture ID has already had its tile patterns loaded.
 ; This done by looping through the previous sprite slots and seeing if any of
 ; their picture ID's match that of the current sprite slot.
@@ -70,7 +70,7 @@
 	ld e, a
 	jr .checkIfAlreadyLoadedLoop
 .notAlreadyLoaded
-	ld de, wSpriteStateData2 + $0e
+	ld de, wSpritePlayerStateData2ImageBaseOffset
 	ld b, $01
 ; loop to find the highest tile pattern VRAM slot (among the first 10 slots) used by a previous sprite slot
 ; this is done in order to find the first free VRAM slot available
@@ -215,7 +215,7 @@
 	ld l, a
 	dec c
 	jp nz, .loadTilePatternLoop
-	ld hl, wSpriteStateData2 + $0d
+	ld hl, wSpritePlayerStateData2PictureID
 	ld b, $10
 ; the pictures ID's stored at $C2XD are no longer needed, so zero them
 .zeroStoredPictureIDLoop
@@ -287,7 +287,7 @@
 	jr nc, .noCarry2
 	inc d
 .noCarry2
-	ld hl, wSpriteStateData2 + $0d
+	ld hl, wSpritePlayerStateData2PictureID
 	ld a, SPRITE_RED
 	ld [hl], a
 	ld bc, wSpriteSet
@@ -323,7 +323,7 @@
 	call LoadMapSpriteTilePatterns
 	pop af
 	ld [wNumSprites], a ; restore number of sprites
-	ld hl, wSpriteStateData2 + $1e
+	ld hl, wSprite01StateData2ImageBaseOffset
 	ld b, $0f
 ; 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
@@ -337,7 +337,7 @@
 	dec b
 	jr nz, .zeroVRAMSlotsLoop
 .skipLoadingSpriteSet
-	ld hl, wSpriteStateData1 + $10
+	ld hl, wSprite01StateData1
 ; This loop stores the correct VRAM tile pattern slots according the sprite
 ; data from the map's header. Since the VRAM tile pattern slots are filled in
 ; the order of the sprite set, in order to find the VRAM tile pattern slot
--- a/engine/overworld/movement.asm
+++ b/engine/overworld/movement.asm
@@ -1,13 +1,13 @@
 MAP_TILESET_SIZE EQU $60
 
 UpdatePlayerSprite:
-	ld a, [wSpriteStateData2]
+	ld a, [wSpritePlayerStateData2WalkAnimationCounter]
 	and a
 	jr z, .checkIfTextBoxInFrontOfSprite
 	cp $ff
 	jr z, .disableSprite
 	dec a
-	ld [wSpriteStateData2], a
+	ld [wSpritePlayerStateData2WalkAnimationCounter], a
 	jr .disableSprite
 ; check if a text box is in front of the sprite by checking if the lower left
 ; background tile the sprite is standing on is greater than $5F, which is
@@ -19,7 +19,7 @@
 	jr c, .lowerLeftTileIsMapTile
 .disableSprite
 	ld a, $ff
-	ld [wSpriteStateData1 + 2], a
+	ld [wSpritePlayerStateData1ImageIndex], a
 	ret
 .lowerLeftTileIsMapTile
 	call DetectCollisionBetweenSprites
@@ -51,11 +51,11 @@
 .notMoving
 ; zero the animation counters
 	xor a
-	ld [wSpriteStateData1 + 7], a
-	ld [wSpriteStateData1 + 8], a
+	ld [wSpritePlayerStateData1IntraAnimFrameCounter], a
+	ld [wSpritePlayerStateData1AnimFrameCounter], a
 	jr .calcImageIndex
 .next
-	ld [wSpriteStateData1 + 9], a ; facing direction
+	ld [wSpritePlayerStateData1FacingDirection], a
 	ld a, [wFontLoaded]
 	bit 0, a
 	jr nz, .notMoving
@@ -79,11 +79,11 @@
 	and $3
 	ld [hl], a
 .calcImageIndex
-	ld a, [wSpriteStateData1 + 8]
+	ld a, [wSpritePlayerStateData1AnimFrameCounter]
 	ld b, a
-	ld a, [wSpriteStateData1 + 9]
+	ld a, [wSpritePlayerStateData1FacingDirection]
 	add b
-	ld [wSpriteStateData1 + 2], a
+	ld [wSpritePlayerStateData1ImageIndex], a
 .skipSpriteAnim
 ; If the player is standing on a grass tile, make the player's sprite have
 ; lower priority than the background so that it's partially obscured by the
@@ -97,7 +97,7 @@
 	jr nz, .next2
 	ld a, $80
 .next2
-	ld [wSpriteStateData2 + 7], a
+	ld [wSpritePlayerStateData2GrassPriority], a
 	ret
 
 UnusedReadSpriteDataFunction:
@@ -397,7 +397,7 @@
 notYetMoving:
 	ld h, wSpriteStateData1 / $100
 	ld a, [hCurrentSpriteOffset]
-	add $8
+	add wSpritePlayerStateData1AnimFrameCounter - wSpritePlayerStateData1
 	ld l, a
 	ld [hl], $0             ; c1x8 = 0 (walk animation frame)
 	jp UpdateSpriteImage
@@ -452,7 +452,7 @@
 InitializeSpriteScreenPosition:
 	ld h, wSpriteStateData2 / $100
 	ld a, [hCurrentSpriteOffset]
-	add $4
+	add wSpritePlayerStateData2MapY - wSpritePlayerStateData2
 	ld l, a
 	ld a, [wYCoord]
 	ld b, a
@@ -480,13 +480,13 @@
 	jp nz, .spriteInvisible
 	ld h, wSpriteStateData2 / $100
 	ld a, [hCurrentSpriteOffset]
-	add $6
+	add wSpritePlayerStateData2MovementByte1 - wSpritePlayerStateData2
 	ld l, a
 	ld a, [hl]      ; c2x6: movement byte 1
 	cp $fe
 	jr c, .skipXVisibilityTest ; movement byte 1 < $fe (i.e. the sprite's movement is scripted)
 	ld a, [hCurrentSpriteOffset]
-	add $4
+	add wSpritePlayerStateData2MapY - wSpritePlayerStateData2
 	ld l, a
 	ld b, [hl]      ; c2x4: Y pos (+4)
 	ld a, [wYCoord]
@@ -528,7 +528,7 @@
 .spriteInvisible
 	ld h, wSpriteStateData1 / $100
 	ld a, [hCurrentSpriteOffset]
-	add $2
+	add wSpritePlayerStateData1ImageIndex - wSpritePlayerStateData1
 	ld l, a
 	ld [hl], $ff       ; c1x2
 	scf
@@ -582,7 +582,7 @@
 CanWalkOntoTile:
 	ld h, wSpriteStateData2 / $100
 	ld a, [hCurrentSpriteOffset]
-	add $6
+	add wSpritePlayerStateData2MovementByte1 - wSpritePlayerStateData2
 	ld l, a
 	ld a, [hl]         ; c2x6 (movement byte 1)
 	cp $fe
@@ -610,7 +610,7 @@
 	jr z, .impassable  ; if $ff, no movement allowed (however, changing direction is)
 	ld h, wSpriteStateData1 / $100
 	ld a, [hCurrentSpriteOffset]
-	add $4
+	add wSpritePlayerStateData1YPixels - wSpritePlayerStateData1
 	ld l, a
 	ld a, [hli]        ; c1x4 (screen Y pos)
 	add $4             ; align to blocks (Y pos is always 4 pixels off)
@@ -636,7 +636,7 @@
 	jr nz, .impassable ; collision between sprites, don't go there
 	ld h, wSpriteStateData2 / $100
 	ld a, [hCurrentSpriteOffset]
-	add $2
+	add wSpritePlayerStateData2YDisplacement - wSpritePlayerStateData2
 	ld l, a
 	ld a, [hli]        ; c2x2 (sprite Y displacement, initialized at $8, keep track of where a sprite did go)
 	bit 7, d           ; check if going upwards (d=$ff)
@@ -665,7 +665,7 @@
 	and a              ; clear carry (marking success)
 	ret
 .impassable
-	ld h, $c1
+	ld h, wSpriteStateData1 / $100
 	ld a, [hCurrentSpriteOffset]
 	inc a
 	ld l, a
@@ -693,7 +693,7 @@
 GetTileSpriteStandsOn:
 	ld h, wSpriteStateData1 / $100
 	ld a, [hCurrentSpriteOffset]
-	add $4
+	add wSpritePlayerStateData1YPixels - wSpritePlayerStateData1
 	ld l, a
 	ld a, [hli]     ; c1x4: screen Y position
 	add $4          ; align to 2*2 tile blocks (Y position is always off 4 pixels to the top)
@@ -807,12 +807,12 @@
 	jp AnimScriptedNPCMovement
 
 GetSpriteScreenYPointer:
-	ld a, $4
+	ld a, wSpritePlayerStateData1YPixels - wSpritePlayerStateData1
 	ld b, a
 	jr GetSpriteScreenXYPointerCommon
 
 GetSpriteScreenXPointer:
-	ld a, $6
+	ld a, wSpritePlayerStateData1XPixels - wSpritePlayerStateData1
 	ld b, a
 
 GetSpriteScreenXYPointerCommon:
@@ -826,7 +826,7 @@
 AnimScriptedNPCMovement:
 	ld hl, wSpriteStateData2
 	ld a, [hCurrentSpriteOffset]
-	add $e
+	add wSpritePlayerStateData2ImageBaseOffset - wSpritePlayerStateData2
 	ld l, a
 	ld a, [hl] ; VRAM slot
 	dec a
@@ -834,7 +834,7 @@
 	ld b, a
 	ld hl, wSpriteStateData1
 	ld a, [hCurrentSpriteOffset]
-	add $9
+	add wSpritePlayerStateData1FacingDirection - wSpritePlayerStateData1
 	ld l, a
 	ld a, [hl] ; facing direction
 	cp SPRITE_FACING_DOWN
@@ -853,7 +853,7 @@
 	call AdvanceScriptedNPCAnimFrameCounter
 	ld hl, wSpriteStateData1
 	ld a, [hCurrentSpriteOffset]
-	add $2
+	add wSpritePlayerStateData1ImageIndex - wSpritePlayerStateData1
 	ld l, a
 	ld a, [hSpriteVRAMSlotAndFacing]
 	ld b, a
--- a/engine/overworld/pathfinding.asm
+++ b/engine/overworld/pathfinding.asm
@@ -77,14 +77,14 @@
 CalcPositionOfPlayerRelativeToNPC:
 	xor a
 	ld [hNPCPlayerRelativePosFlags], a
-	ld a, [wSpriteStateData1 + 4] ; player's sprite screen Y position in pixels
+	ld a, [wSpritePlayerStateData1YPixels]
 	ld d, a
-	ld a, [wSpriteStateData1 + 6] ; player's sprite screen X position in pixels
+	ld a, [wSpritePlayerStateData1XPixels]
 	ld e, a
 	ld hl, wSpriteStateData1
 	ld a, [hNPCSpriteOffset]
 	add l
-	add $4
+	add wSpritePlayerStateData1YPixels - wSpritePlayerStateData1
 	ld l, a
 	jr nc, .noCarry
 	inc h
--- a/engine/overworld/player_animations.asm
+++ b/engine/overworld/player_animations.asm
@@ -1,7 +1,7 @@
 EnterMapAnim::
 	call InitFacingDirectionList
 	ld a, $ec
-	ld [wSpriteStateData1 + 4], a ; player's sprite Y screen position
+	ld [wSpritePlayerStateData1YPixels], a
 	call Delay3
 	push hl
 	call GBFadeInFromWhite
@@ -227,19 +227,19 @@
 	ld a, [wFlyAnimBirdSpriteImageIndex]
 	xor $1 ; make the bird flap its wings
 	ld [wFlyAnimBirdSpriteImageIndex], a
-	ld [wSpriteStateData1 + 2], a
+	ld [wSpritePlayerStateData1ImageIndex], a
 	call Delay3
 	ld a, [wFlyAnimUsingCoordList]
 	cp $ff
 	jr z, .skipCopyingCoords ; if the bird is flapping its wings in place
-	ld hl, wSpriteStateData1 + 4
+	ld hl, wSpritePlayerStateData1YPixels
 	ld a, [de]
 	inc de
-	ld [hli], a
+	ld [hli], a ; y
 	inc hl
 	ld a, [de]
 	inc de
-	ld [hl], a
+	ld [hl], a ; x
 .skipCopyingCoords
 	ld a, [wFlyAnimCounter]
 	dec a
@@ -258,15 +258,15 @@
 	jp CopyVideoData
 
 InitFacingDirectionList:
-	ld a, [wSpriteStateData1 + 2] ; player's sprite facing direction (image index is locked to standing images)
+	ld a, [wSpritePlayerStateData1ImageIndex] ; (image index is locked to standing images)
 	ld [wSavedPlayerFacingDirection], a
-	ld a, [wSpriteStateData1 + 4] ; player's sprite Y screen position
+	ld a, [wSpritePlayerStateData1YPixels]
 	ld [wSavedPlayerScreenY], a
 	ld hl, PlayerSpinningFacingOrder
 	ld de, wFacingDirectionList
 	ld bc, 4
 	call CopyData
-	ld a, [wSpriteStateData1 + 2] ; player's sprite facing direction (image index is locked to standing images)
+	ld a, [wSpritePlayerStateData1ImageIndex] ; (image index is locked to standing images)
 	ld hl, wFacingDirectionList
 ; find the place in the list that matches the current facing direction
 .loop
@@ -284,7 +284,7 @@
 SpinPlayerSprite:
 ; copy the current value from the list into the sprite data and rotate the list
 	ld a, [hl]
-	ld [wSpriteStateData1 + 2], a ; player's sprite facing direction (image index is locked to standing images)
+	ld [wSpritePlayerStateData1ImageIndex], a ; (image index is locked to standing images)
 	push hl
 	ld hl, wFacingDirectionList
 	ld de, wFacingDirectionList - 1
@@ -320,9 +320,9 @@
 	call SpinPlayerSprite
 	ld a, [wPlayerSpinWhileMovingUpOrDownAnimDeltaY]
 	ld c, a
-	ld a, [wSpriteStateData1 + 4] ; player's sprite Y screen position
+	ld a, [wSpritePlayerStateData1YPixels]
 	add c
-	ld [wSpriteStateData1 + 4], a
+	ld [wSpritePlayerStateData1YPixels], a
 	ld c, a
 	ld a, [wPlayerSpinWhileMovingUpOrDownAnimMaxY]
 	cp c
@@ -334,9 +334,9 @@
 
 RestoreFacingDirectionAndYScreenPos:
 	ld a, [wSavedPlayerScreenY]
-	ld [wSpriteStateData1 + 4], a
+	ld [wSpritePlayerStateData1YPixels], a
 	ld a, [wSavedPlayerFacingDirection]
-	ld [wSpriteStateData1 + 2], a
+	ld [wSpritePlayerStateData1ImageIndex], a ; (image index is locked to standing images)
 	ret
 
 ; if SGB, 2 frames, else 3 frames
@@ -387,7 +387,7 @@
 	ld a, $4
 	ld hl, RedFishingTiles
 	call LoadAnimSpriteGfx
-	ld a, [wSpriteStateData1 + 2]
+	ld a, [wSpritePlayerStateData1ImageIndex]
 	ld c, a
 	ld b, $0
 	ld hl, FishingRodOAM
@@ -410,7 +410,7 @@
 ; shake the player's sprite vertically
 	ld b, 10
 .loop
-	ld hl, wSpriteStateData1 + 4 ; player's sprite Y screen position
+	ld hl, wSpritePlayerStateData1YPixels
 	call .ShakePlayerSprite
 	ld hl, wOAMBuffer + $9c
 	call .ShakePlayerSprite
@@ -420,7 +420,7 @@
 
 ; If the player is facing up, hide the fishing rod so it doesn't overlap with
 ; the exclamation bubble that will be shown next.
-	ld a, [wSpriteStateData1 + 2] ; player's sprite facing direction
+	ld a, [wSpritePlayerStateData1ImageIndex] ; (image index is locked to standing images)
 	cp SPRITE_FACING_UP
 	jr nz, .skipHidingFishingRod
 	ld a, $a0
@@ -434,7 +434,7 @@
 	predef EmotionBubble
 
 ; If the player is facing up, unhide the fishing rod.
-	ld a, [wSpriteStateData1 + 2] ; player's sprite facing direction
+	ld a, [wSpritePlayerStateData1ImageIndex] ; (image index is locked to standing images)
 	cp SPRITE_FACING_UP
 	jr nz, .skipUnhidingFishingRod
 	ld a, $44
@@ -507,7 +507,7 @@
 	ld hl, PlayerJumpingYScreenCoords
 	add hl, bc
 	ld a, [hl]
-	ld [wSpriteStateData1 + 4], a ; player's sprite y coordinate
+	ld [wSpritePlayerStateData1YPixels], a
 	ret
 .finishedJump
 	ld a, [wWalkCounter]
--- a/engine/overworld/player_state.asm
+++ b/engine/overworld/player_state.asm
@@ -88,7 +88,7 @@
 	push hl
 	push de
 	push bc
-	ld a, [wSpriteStateData1 + 9] ; player sprite's facing direction
+	ld a, [wSpritePlayerStateData1FacingDirection]
 	srl a
 	ld c, a
 	ld b, $0
@@ -158,7 +158,7 @@
 	ld a, [wCurMap]
 	cp SS_ANNE_BOW
 	jr z, IsSSAnneBowWarpTileInFrontOfPlayer
-	ld a, [wSpriteStateData1 + 9] ; player sprite's facing direction
+	ld a, [wSpritePlayerStateData1FacingDirection]
 	srl a
 	ld c, a
 	ld b, 0
@@ -263,7 +263,7 @@
 	ld d, a
 	ld a, [wXCoord]
 	ld e, a
-	ld a, [wSpriteStateData1 + 9] ; player's sprite facing direction
+	ld a, [wSpritePlayerStateData1FacingDirection]
 	and a ; cp SPRITE_FACING_DOWN
 	jr nz, .notFacingDown
 ; facing down
@@ -302,7 +302,7 @@
 	ld a, [hli]
 	ld d, a
 	ld e, [hl]
-	ld a, [wSpriteStateData1 + 9] ; player's sprite facing direction
+	ld a, [wSpritePlayerStateData1FacingDirection]
 	and a ; cp SPRITE_FACING_DOWN
 	jr nz, .notFacingDown
 ; facing down
@@ -375,7 +375,7 @@
 	swap a
 	ld d, 0
 	ld e, a
-	ld hl, wSpriteStateData2 + $14
+	ld hl, wSprite01StateData2MapY
 	add hl, de
 	ld a, [hli] ; map Y position
 	ld [hPlayerYCoord], a
@@ -384,7 +384,7 @@
 	ld a, [wNumSprites]
 	ld c, a
 	ld de, $f
-	ld hl, wSpriteStateData2 + $14
+	ld hl, wSprite01StateData2MapY
 	ld a, [hPlayerFacing]
 	and $3 ; facing up or down?
 	jr z, .pushingHorizontallyLoop
--- a/engine/overworld/push_boulder.asm
+++ b/engine/overworld/push_boulder.asm
@@ -12,7 +12,7 @@
 	ld [wBoulderSpriteIndex], a
 	and a
 	jp z, ResetBoulderPushFlags
-	ld hl, wSpriteStateData1 + 1
+	ld hl, wSpritePlayerStateData1MovementStatus
 	ld d, $0
 	ld a, [hSpriteIndexOrTextID]
 	swap a
@@ -36,7 +36,7 @@
 	jp nz, ResetBoulderPushFlags
 	ld a, [hJoyHeld]
 	ld b, a
-	ld a, [wSpriteStateData1 + 9] ; player's sprite facing direction
+	ld a, [wSpritePlayerStateData1FacingDirection]
 	cp SPRITE_FACING_UP
 	jr z, .pushBoulderUp
 	cp SPRITE_FACING_LEFT
--- a/engine/overworld/sprite_collisions.asm
+++ b/engine/overworld/sprite_collisions.asm
@@ -1,10 +1,10 @@
 _UpdateSprites::
 	ld h, $c1
 	inc h
-	ld a, $e    ; wSpriteStateData2 + $0e
+	ld a, wSpritePlayerStateData2ImageBaseOffset - wSpritePlayerStateData2
 .spriteLoop
 	ld l, a
-	sub $e
+	sub wSpritePlayerStateData2ImageBaseOffset - wSpritePlayerStateData2
 	ld c, a
 	ld [hCurrentSpriteOffset], a
 	ld a, [hl]
@@ -20,7 +20,7 @@
 .skipSprite
 	ld a, l
 	add $10             ; move to next sprite
-	cp $e               ; test for overflow (back at $0e)
+	cp wSpritePlayerStateData2ImageBaseOffset - wSpritePlayerStateData2 ; test for overflow (back at beginning)
 	jr nz, .spriteLoop
 	ret
 .updateCurrentSprite
--- a/engine/overworld/trainer_sight.asm
+++ b/engine/overworld/trainer_sight.asm
@@ -1,6 +1,6 @@
 _GetSpritePosition1::
 	ld hl, wSpriteStateData1
-	ld de, $4
+	ld de, wSpritePlayerStateData1YPixels - wSpritePlayerStateData1
 	ld a, [wSpriteIndex]
 	ld [hSpriteIndex], a
 	call GetSpriteDataPointer
@@ -9,7 +9,7 @@
 	inc hl
 	ld a, [hl] ; c1x6 (screen X pos)
 	ld [hSpriteScreenXCoord], a
-	ld de, (wSpriteStateData2 + $4) - (wSpriteStateData1 + $6)
+	ld de, wSpritePlayerStateData2MapY - wSpritePlayerStateData1XPixels
 	add hl, de
 	ld a, [hli] ; c2x4 (map Y pos)
 	ld [hSpriteMapYCoord], a
@@ -19,7 +19,7 @@
 
 _GetSpritePosition2::
 	ld hl, wSpriteStateData1
-	ld de, $4
+	ld de, wSpritePlayerStateData1YPixels - wSpritePlayerStateData1
 	ld a, [wSpriteIndex]
 	ld [hSpriteIndex], a
 	call GetSpriteDataPointer
@@ -28,7 +28,7 @@
 	inc hl
 	ld a, [hl] ; c1x6 (screen X pos)
 	ld [wSavedSpriteScreenX], a
-	ld de, (wSpriteStateData2 + $4) - (wSpriteStateData1 + $6)
+	ld de, wSpritePlayerStateData2MapY - wSpritePlayerStateData1XPixels
 	add hl, de
 	ld a, [hli] ; c2x4 (map Y pos)
 	ld [wSavedSpriteMapY], a
@@ -38,7 +38,7 @@
 
 _SetSpritePosition1::
 	ld hl, wSpriteStateData1
-	ld de, $4
+	ld de, wSpritePlayerStateData1YPixels - wSpritePlayerStateData1
 	ld a, [wSpriteIndex]
 	ld [hSpriteIndex], a
 	call GetSpriteDataPointer
@@ -47,7 +47,7 @@
 	inc hl
 	ld a, [hSpriteScreenXCoord] ; c1x6 (screen X pos)
 	ld [hl], a
-	ld de, (wSpriteStateData2 + $4) - (wSpriteStateData1 + $6)
+	ld de, wSpritePlayerStateData2MapY - wSpritePlayerStateData1XPixels
 	add hl, de
 	ld a, [hSpriteMapYCoord] ; c2x4 (map Y pos)
 	ld [hli], a
@@ -57,7 +57,7 @@
 
 _SetSpritePosition2::
 	ld hl, wSpriteStateData1
-	ld de, 4
+	ld de, wSpritePlayerStateData1YPixels - wSpritePlayerStateData1
 	ld a, [wSpriteIndex]
 	ld [hSpriteIndex], a
 	call GetSpriteDataPointer
@@ -66,7 +66,7 @@
 	inc hl
 	ld a, [wSavedSpriteScreenX]
 	ld [hl], a ; c1x6 (screen X pos)
-	ld de, (wSpriteStateData2 + $4) - (wSpriteStateData1 + $6)
+	ld de, wSpritePlayerStateData2MapY - wSpritePlayerStateData1XPixels
 	add hl, de
 	ld a, [wSavedSpriteMapY]
 	ld [hli], a ; c2x4 (map Y pos)
@@ -165,7 +165,7 @@
 	push hl
 	push de
 	ld a, [wTrainerSpriteOffset]
-	add $2
+	add wSpritePlayerStateData1ImageIndex - wSpritePlayerStateData1
 	ld d, $0
 	ld e, a
 	ld hl, wSpriteStateData1
@@ -176,7 +176,7 @@
 	jp .noEngage
 .spriteOnScreen
 	ld a, [wTrainerSpriteOffset]
-	add $9
+	add wSpritePlayerStateData1FacingDirection - wSpritePlayerStateData1
 	ld d, $0
 	ld e, a
 	ld hl, wSpriteStateData1
@@ -234,7 +234,7 @@
 ; reads trainer's Y position to wTrainerScreenY and X position to wTrainerScreenX
 ReadTrainerScreenPosition:
 	ld a, [wTrainerSpriteOffset]
-	add $4
+	add wSpritePlayerStateData1YPixels - wSpritePlayerStateData1
 	ld d, $0
 	ld e, a
 	ld hl, wSpriteStateData1
@@ -242,7 +242,7 @@
 	ld a, [hl] ; c1x4 (sprite Y pos)
 	ld [wTrainerScreenY], a
 	ld a, [wTrainerSpriteOffset]
-	add $6
+	add wSpritePlayerStateData1XPixels - wSpritePlayerStateData1
 	ld d, $0
 	ld e, a
 	ld hl, wSpriteStateData1
@@ -295,7 +295,7 @@
 	cp POWER_PLANT
 	jp z, .engage       ; bypass this for power plant to get voltorb fake items to work
 	ld a, [wTrainerSpriteOffset]
-	add $4
+	add wSpritePlayerStateData1YPixels - wSpritePlayerStateData1
 	ld d, $0
 	ld e, a
 	ld hl, wSpriteStateData1
@@ -307,7 +307,7 @@
 .notOnTopmostTile
 	ld [wTrainerScreenY], a
 	ld a, [wTrainerSpriteOffset]
-	add $6
+	add wSpritePlayerStateData1XPixels - wSpritePlayerStateData1
 	ld d, $0
 	ld e, a
 	ld hl, wSpriteStateData1
--- a/engine/pokemon/bills_pc.asm
+++ b/engine/pokemon/bills_pc.asm
@@ -504,7 +504,7 @@
 	ld a, [hSerialConnectionStatus]
 	cp USING_EXTERNAL_CLOCK
 	ret z
-	ld a, [wSpriteStateData1 + 9] ; player's sprite facing direction
+	ld a, [wSpritePlayerStateData1FacingDirection]
 	cp SPRITE_FACING_RIGHT
 	ret nz
 	ld a, [wCurMap]
@@ -521,7 +521,7 @@
 	ld a, [hSerialConnectionStatus]
 	cp USING_INTERNAL_CLOCK
 	ret z
-	ld a, [wSpriteStateData1 + 9] ; player's sprite facing direction
+	ld a, [wSpritePlayerStateData1FacingDirection]
 	cp SPRITE_FACING_LEFT
 	ret nz
 	ld a, [wCurMap]
@@ -538,7 +538,7 @@
 	text_far _JustAMomentText
 	text_end
 
-	ld a, [wSpriteStateData1 + 9] ; player's sprite facing direction
+	ld a, [wSpritePlayerStateData1FacingDirection]
 	cp SPRITE_FACING_UP
 	ret nz
 	call EnableAutoTextBoxDrawing
--- a/engine/slots/game_corner_slots2.asm
+++ b/engine/slots/game_corner_slots2.asm
@@ -1,5 +1,5 @@
 AbleToPlaySlotsCheck:
-	ld a, [wSpriteStateData1 + 2]
+	ld a, [wSpritePlayerStateData1ImageIndex]
 	and $8
 	jr z, .done ; not able
 	ld b, COIN_CASE
--- a/home.asm
+++ b/home.asm
@@ -111,9 +111,9 @@
 	ld hl, wSpriteStateData2
 	call ResetPlayerSpriteData_ClearSpriteData
 	ld a, $1
-	ld [wSpriteStateData1], a
-	ld [wSpriteStateData2 + $0e], a
-	ld hl, wSpriteStateData1 + 4
+	ld [wSpritePlayerStateData1PictureID], a
+	ld [wSpritePlayerStateData2ImageBaseOffset], a
+	ld hl, wSpritePlayerStateData1YPixels
 	ld [hl], $3c     ; set Y screen pos
 	inc hl
 	inc hl
@@ -485,7 +485,7 @@
 StartSimulatingJoypadStates::
 	xor a
 	ld [wOverrideSimulatedJoypadStatesMask], a
-	ld [wSpriteStateData2 + $06], a ; player's sprite movement byte 1
+	ld [wSpritePlayerStateData2MovementByte1], a
 	ld hl, wd730
 	set 7, [hl]
 	ret
@@ -572,7 +572,7 @@
 ; sets carry if the coordinates are in the array, clears carry if not
 CheckBoulderCoords::
 	push hl
-	ld hl, wSpriteStateData2 + $04
+	ld hl, wSpritePlayerStateData2MapY
 	ld a, [hSpriteIndex]
 	swap a
 	ld d, $0
--- a/home/overworld.asm
+++ b/home/overworld.asm
@@ -149,7 +149,7 @@
 	bit 7, a ; down button
 	jr z, .checkIfUpButtonIsPressed
 	ld a, 1
-	ld [wSpriteStateData1 + 3], a ; delta Y
+	ld [wSpritePlayerStateData1YStepVector], a
 	ld a, PLAYER_DIR_DOWN
 	jr .handleDirectionButtonPress
 
@@ -157,7 +157,7 @@
 	bit 6, a ; up button
 	jr z, .checkIfLeftButtonIsPressed
 	ld a, -1
-	ld [wSpriteStateData1 + 3], a ; delta Y
+	ld [wSpritePlayerStateData1YStepVector], a
 	ld a, PLAYER_DIR_UP
 	jr .handleDirectionButtonPress
 
@@ -165,7 +165,7 @@
 	bit 5, a ; left button
 	jr z, .checkIfRightButtonIsPressed
 	ld a, -1
-	ld [wSpriteStateData1 + 5], a ; delta X
+	ld [wSpritePlayerStateData1XStepVector], a
 	ld a, PLAYER_DIR_LEFT
 	jr .handleDirectionButtonPress
 
@@ -173,7 +173,7 @@
 	bit 4, a ; right button
 	jr z, .noDirectionButtonsPressed
 	ld a, 1
-	ld [wSpriteStateData1 + 5], a ; delta X
+	ld [wSpritePlayerStateData1XStepVector], a
 
 
 .handleDirectionButtonPress
@@ -1133,7 +1133,7 @@
 	ld d, $10 ; talking range in pixels (normal range)
 IsSpriteInFrontOfPlayer2::
 	lb bc, $3c, $40 ; Y and X position of player sprite
-	ld a, [wSpriteStateData1 + 9] ; direction the player is facing
+	ld a, [wSpritePlayerStateData1FacingDirection]
 .checkIfPlayerFacingUp
 	cp SPRITE_FACING_UP
 	jr nz, .checkIfPlayerFacingDown
@@ -1176,7 +1176,7 @@
 	and a
 	ret z
 ; if there are sprites
-	ld hl, wSpriteStateData1 + $10
+	ld hl, wSprite01StateData1
 	ld d, a
 	ld e, $01
 .spriteLoop
@@ -1228,7 +1228,7 @@
 	jr nz, .noCollision ; no collisions when the player's movements are being controlled by the game
 	ld a, [wPlayerDirection] ; the direction that the player is trying to go in
 	ld d, a
-	ld a, [wSpriteStateData1 + 12] ; the player sprite's collision data (bit field) (set in the sprite movement code)
+	ld a, [wSpritePlayerStateData1CollisionData]
 	and d ; check if a sprite is in the direction the player is trying to go
 	jr nz, .collision
 	xor a
@@ -1462,9 +1462,9 @@
 	ret
 
 AdvancePlayerSprite::
-	ld a, [wSpriteStateData1 + 3] ; delta Y
+	ld a, [wSpritePlayerStateData1YStepVector]
 	ld b, a
-	ld a, [wSpriteStateData1 + 5] ; delta X
+	ld a, [wSpritePlayerStateData1XStepVector]
 	ld c, a
 	ld hl, wWalkCounter ; walking animation counter
 	dec [hl]
@@ -1596,7 +1596,7 @@
 	call MoveTileBlockMapPointerNorth
 .updateMapView
 	call LoadCurrentMapView
-	ld a, [wSpriteStateData1 + 3] ; delta Y
+	ld a, [wSpritePlayerStateData1YStepVector]
 	cp $01
 	jr nz, .checkIfMovingNorth2
 ; if moving south
@@ -1609,7 +1609,7 @@
 	call ScheduleNorthRowRedraw
 	jr .scrollBackgroundAndSprites
 .checkIfMovingEast2
-	ld a, [wSpriteStateData1 + 5] ; delta X
+	ld a, [wSpritePlayerStateData1XStepVector]
 	cp $01
 	jr nz, .checkIfMovingWest2
 ; if moving east
@@ -1621,9 +1621,9 @@
 ; if moving west
 	call ScheduleWestColumnRedraw
 .scrollBackgroundAndSprites
-	ld a, [wSpriteStateData1 + 3] ; delta Y
+	ld a, [wSpritePlayerStateData1YStepVector]
 	ld b, a
-	ld a, [wSpriteStateData1 + 5] ; delta X
+	ld a, [wSpritePlayerStateData1XStepVector]
 	ld c, a
 	sla b
 	sla c
@@ -1635,7 +1635,7 @@
 	ld [hSCX], a ; update background scroll X
 ; shift all the sprites in the direction opposite of the player's motion
 ; so that the player appears to move relative to them
-	ld hl, wSpriteStateData1 + $14
+	ld hl, wSprite01StateData1YPixels
 	ld a, [wNumSprites] ; number of sprites
 	and a ; are there any sprites?
 	jr z, .done
@@ -1845,8 +1845,8 @@
 ; function to update joypad state and simulate button presses
 JoypadOverworld::
 	xor a
-	ld [wSpriteStateData1 + 3], a
-	ld [wSpriteStateData1 + 5], a
+	ld [wSpritePlayerStateData1YStepVector], a
+	ld [wSpritePlayerStateData1XStepVector], a
 	call RunMapScript
 	call Joypad
 	ld a, [wFlags_D733]
@@ -1920,7 +1920,7 @@
 	jp nz, .noCollision ; return and clear carry if button presses are being simulated
 	ld a, [wPlayerDirection] ; the direction that the player is trying to go in
 	ld d, a
-	ld a, [wSpriteStateData1 + 12] ; the player sprite's collision data (bit field) (set in the sprite movement code)
+	ld a, [wSpritePlayerStateData1CollisionData]
 	and d ; check if a sprite is in the direction the player is trying to go
 	jr nz, .checkIfNextTileIsPassable ; bug?
 	ld hl, TilePairCollisionsWater
@@ -2168,8 +2168,8 @@
 	ld [wNumSprites], a ; save the number of sprites
 	push hl
 ; zero C110-C1FF and C210-C2FF
-	ld hl, wSpriteStateData1 + $10
-	ld de, wSpriteStateData2 + $10
+	ld hl, wSprite01StateData1
+	ld de, wSprite01StateData2
 	xor a
 	ld b, $f0
 .zeroSpriteDataLoop
@@ -2179,7 +2179,7 @@
 	dec b
 	jr nz, .zeroSpriteDataLoop
 ; initialize all C100-C1FF sprite entries to disabled (other than player's)
-	ld hl, wSpriteStateData1 + $12
+	ld hl, wSprite01StateData1ImageIndex
 	ld de, $10
 	ld c, $0f
 .disableSpriteEntriesLoop
@@ -2188,7 +2188,7 @@
 	dec c
 	jr nz, .disableSpriteEntriesLoop
 	pop hl
-	ld de, wSpriteStateData1 + $10
+	ld de, wSprite01StateData1
 	ld a, [wNumSprites] ; number of sprites
 	and a ; are there any sprites?
 	jp z, .finishUp ; if there are no sprites, skip the rest
--- a/home/text_script.asm
+++ b/home/text_script.asm
@@ -111,7 +111,7 @@
 	xor a
 	ld [hAutoBGTransferEnabled], a ; disable continuous WRAM to VRAM transfer each V-blank
 ; loop to make sprites face the directions they originally faced before the dialogue
-	ld hl, wSpriteStateData2 + $19
+	ld hl, wSprite01StateData2 + 9 ; should be wSprite01StateData1FacingDirection?
 	ld c, $0f
 	ld de, $10
 .restoreSpriteFacingDirectionLoop
--- a/macros/wram.asm
+++ b/macros/wram.asm
@@ -71,7 +71,9 @@
 \1IntraAnimFrameCounter:: db
 \1AnimFrameCounter:: db
 \1FacingDirection:: db
-	ds 6
+	ds 2
+\1CollisionData:: db
+	ds 3
 \1End::
 ENDM
 
@@ -85,7 +87,8 @@
 \1MovementByte1:: db
 \1GrassPriority:: db
 \1MovementDelay:: db
-	ds 5
+	ds 4
+\1PictureID:: db
 \1ImageBaseOffset:: db
 	ds 1
 \1End::
--- a/scripts/BillsHouse.asm
+++ b/scripts/BillsHouse.asm
@@ -16,7 +16,7 @@
 	ret
 
 BillsHouseScript1:
-	ld a, [wSpriteStateData1 + 9]
+	ld a, [wSpritePlayerStateData1FacingDirection]
 	and a ; cp SPRITE_FACING_DOWN
 	ld de, MovementData_1e79c
 	jr nz, .notDown
--- a/scripts/CeruleanCity.asm
+++ b/scripts/CeruleanCity.asm
@@ -50,7 +50,7 @@
 .asm_194e6
 	ld [wPlayerMovingDirection], a
 	ld a, b
-	ld [wSpriteStateData1 + 2 * $10 + $9], a
+	ld [wSprite02StateData1FacingDirection], a
 	call Delay3
 	ld a, $2
 	ld [hSpriteIndexOrTextID], a
--- a/scripts/CinnabarIsland.asm
+++ b/scripts/CinnabarIsland.asm
@@ -35,7 +35,7 @@
 	ld [wSimulatedJoypadStatesEnd], a
 	call StartSimulatingJoypadStates
 	xor a
-	ld [wSpriteStateData1 + 9], a
+	ld [wSpritePlayerStateData1FacingDirection], a
 	ld [wJoyIgnore], a
 	ld a, $1
 	ld [wCinnabarIslandCurScript], a
--- a/scripts/CopycatsHouse2F.asm
+++ b/scripts/CopycatsHouse2F.asm
@@ -84,7 +84,7 @@
 
 CopycatsHouse2FText7:
 	text_asm
-	ld a, [wSpriteStateData1 + 9]
+	ld a, [wSpritePlayerStateData1FacingDirection]
 	cp SPRITE_FACING_UP
 	ld hl, CopycatsHouse2FText_5cd1c
 	jr nz, .notUp
--- a/scripts/OaksLab.asm
+++ b/scripts/OaksLab.asm
@@ -492,17 +492,17 @@
 	cp $4
 	jr nz, .turnPlayerLeft
 	ld a, SPRITE_FACING_RIGHT
-	ld [wSpriteStateData1 + 9], a
+	ld [wSpritePlayerStateData1FacingDirection], a
 	jr .done
 .turnPlayerLeft
 	ld a, SPRITE_FACING_LEFT
-	ld [wSpriteStateData1 + 9], a
+	ld [wSpritePlayerStateData1FacingDirection], a
 	jr .done
 .turnPlayerDown
 	cp $4
 	ret nz
 	xor a ; ld a, SPRITE_FACING_DOWN
-	ld [wSpriteStateData1 + 9], a
+	ld [wSpritePlayerStateData1FacingDirection], a
 .done
 	ret
 
--- a/scripts/PalletTown.asm
+++ b/scripts/PalletTown.asm
@@ -94,7 +94,7 @@
 	bit 0, a
 	ret nz
 	xor a ; ld a, SPRITE_FACING_DOWN
-	ld [wSpriteStateData1 + 9], a
+	ld [wSpritePlayerStateData1FacingDirection], a
 	ld a, 1
 	ld [wcf0d], a
 	ld a, $FC
--- a/scripts/PokemonMansion1F.asm
+++ b/scripts/PokemonMansion1F.asm
@@ -46,7 +46,7 @@
 	ret
 
 Mansion1Script_Switches::
-	ld a, [wSpriteStateData1 + 9]
+	ld a, [wSpritePlayerStateData1FacingDirection]
 	cp SPRITE_FACING_UP
 	ret nz
 	xor a
--- a/scripts/PokemonMansion2F.asm
+++ b/scripts/PokemonMansion2F.asm
@@ -42,7 +42,7 @@
 	predef_jump ReplaceTileBlock
 
 Mansion2Script_Switches::
-	ld a, [wSpriteStateData1 + 9]
+	ld a, [wSpritePlayerStateData1FacingDirection]
 	cp SPRITE_FACING_UP
 	ret nz
 	xor a
--- a/scripts/PokemonMansion3F.asm
+++ b/scripts/PokemonMansion3F.asm
@@ -73,7 +73,7 @@
 	ret
 
 Mansion3Script_Switches::
-	ld a, [wSpriteStateData1 + 9]
+	ld a, [wSpritePlayerStateData1FacingDirection]
 	cp SPRITE_FACING_UP
 	ret nz
 	xor a
--- a/scripts/PokemonMansionB1F.asm
+++ b/scripts/PokemonMansionB1F.asm
@@ -44,7 +44,7 @@
 	ret
 
 Mansion4Script_Switches::
-	ld a, [wSpriteStateData1 + 9]
+	ld a, [wSpritePlayerStateData1FacingDirection]
 	cp SPRITE_FACING_UP
 	ret nz
 	xor a
--- a/scripts/PokemonTower6F.asm
+++ b/scripts/PokemonTower6F.asm
@@ -75,7 +75,7 @@
 	ld a, $10
 	ld [wSimulatedJoypadStatesEnd], a
 	xor a
-	ld [wSpriteStateData2 + $06], a
+	ld [wSpritePlayerStateData2MovementByte1], a
 	ld [wOverrideSimulatedJoypadStatesMask], a
 	ld hl, wd730
 	set 7, [hl]
--- a/scripts/PokemonTower7F.asm
+++ b/scripts/PokemonTower7F.asm
@@ -70,7 +70,7 @@
 	ld [wMissableObjectIndex], a
 	predef HideObject
 	ld a, SPRITE_FACING_UP
-	ld [wSpriteStateData1 + 9], a
+	ld [wSpritePlayerStateData1FacingDirection], a
 	ld a, MR_FUJIS_HOUSE
 	ld [hWarpDestinationMap], a
 	ld a, $1
--- a/scripts/RedsHouse1F.asm
+++ b/scripts/RedsHouse1F.asm
@@ -51,7 +51,7 @@
 
 RedsHouse1FText2: ; TV
 	text_asm
-	ld a, [wSpriteStateData1 + 9]
+	ld a, [wSpritePlayerStateData1FacingDirection]
 	cp SPRITE_FACING_UP
 	ld hl, TVWrongSideText
 	jr nz, .notUp
--- a/scripts/RocketHideoutB2F.asm
+++ b/scripts/RocketHideoutB2F.asm
@@ -314,7 +314,7 @@
 	ret
 
 LoadSpinnerArrowTiles::
-	ld a, [wSpriteStateData1 + 2]
+	ld a, [wSpritePlayerStateData1ImageIndex]
 	srl a
 	srl a
 	ld hl, SpinnerPlayerFacingDirections
@@ -322,7 +322,7 @@
 	ld b, $0
 	add hl, bc
 	ld a, [hl]
-	ld [wSpriteStateData1 + 2], a
+	ld [wSpritePlayerStateData1ImageIndex], a
 	ld a, [wCurMapTileset]
 	cp FACILITY
 	ld hl, FacilitySpinnerArrows
--- a/scripts/Route11Gate2F.asm
+++ b/scripts/Route11Gate2F.asm
@@ -47,7 +47,7 @@
 
 Route11GateUpstairsText3:
 	text_asm
-	ld a, [wSpriteStateData1 + 9]
+	ld a, [wSpritePlayerStateData1FacingDirection]
 	cp SPRITE_FACING_UP
 	jp nz, GateUpstairsScript_PrintIfFacingUp
 	CheckEvent EVENT_BEAT_ROUTE12_SNORLAX
--- a/scripts/Route12Gate2F.asm
+++ b/scripts/Route12Gate2F.asm
@@ -65,7 +65,7 @@
 	text_end
 
 GateUpstairsScript_PrintIfFacingUp:
-	ld a, [wSpriteStateData1 + 9]
+	ld a, [wSpritePlayerStateData1FacingDirection]
 	cp SPRITE_FACING_UP
 	jr z, .up
 	ld a, $1
--- a/scripts/Route22.asm
+++ b/scripts/Route22.asm
@@ -149,7 +149,7 @@
 	ld a, [wIsInBattle]
 	cp $ff
 	jp z, Route22Script_50ece
-	ld a, [wSpriteStateData1 + 9]
+	ld a, [wSpritePlayerStateData1FacingDirection]
 	and a ; cp SPRITE_FACING_DOWN
 	jr nz, .notDown
 	ld a, SPRITE_FACING_UP
--- a/scripts/Route22Gate.asm
+++ b/scripts/Route22Gate.asm
@@ -37,7 +37,7 @@
 	ld [wSimulatedJoypadStatesIndex], a
 	ld a, D_DOWN
 	ld [wSimulatedJoypadStatesEnd], a
-	ld [wSpriteStateData1 + 9], a
+	ld [wSpritePlayerStateData1FacingDirection], a
 	ld [wJoyIgnore], a
 	jp StartSimulatingJoypadStates
 
--- a/scripts/Route23.asm
+++ b/scripts/Route23.asm
@@ -118,7 +118,7 @@
 	ld a, D_DOWN
 	ld [wSimulatedJoypadStatesEnd], a
 	xor a
-	ld [wSpriteStateData1 + 9], a
+	ld [wSpritePlayerStateData1FacingDirection], a
 	ld [wJoyIgnore], a
 	jp StartSimulatingJoypadStates
 
--- a/scripts/Route6Gate.asm
+++ b/scripts/Route6Gate.asm
@@ -60,7 +60,7 @@
 	ld a, $1
 	ld [wSimulatedJoypadStatesIndex], a
 	xor a
-	ld [wSpriteStateData2 + $06], a
+	ld [wSpritePlayerStateData2MovementByte1], a
 	ld [wOverrideSimulatedJoypadStatesMask], a
 	ret
 
--- a/scripts/Route7Gate.asm
+++ b/scripts/Route7Gate.asm
@@ -17,7 +17,7 @@
 	ld a, $1
 	ld [wSimulatedJoypadStatesIndex], a
 	xor a
-	ld [wSpriteStateData2 + $06], a
+	ld [wSpritePlayerStateData2MovementByte1], a
 	ld [wOverrideSimulatedJoypadStatesMask], a
 	ret
 
--- a/scripts/Route8Gate.asm
+++ b/scripts/Route8Gate.asm
@@ -16,7 +16,7 @@
 	ld a, $1
 	ld [wSimulatedJoypadStatesIndex], a
 	xor a
-	ld [wSpriteStateData2 + $06], a
+	ld [wSpritePlayerStateData2MovementByte1], a
 	ld [wOverrideSimulatedJoypadStatesMask], a
 	ret
 
--- a/scripts/SafariZoneGate.asm
+++ b/scripts/SafariZoneGate.asm
@@ -25,7 +25,7 @@
 	xor a
 	ld [hJoyHeld], a
 	ld a, SPRITE_FACING_RIGHT
-	ld [wSpriteStateData1 + 9], a
+	ld [wSpritePlayerStateData1FacingDirection], a
 	ld a, [wCoordIndex]
 	cp $1
 	jr z, .asm_7520f
@@ -231,7 +231,7 @@
 	ld hl, .SafariZoneEntranceText_753bb
 	call PrintText
 	xor a
-	ld [wSpriteStateData1 + 9], a
+	ld [wSpritePlayerStateData1FacingDirection], a
 	ld a, D_DOWN
 	ld c, $3
 	call SafariZoneEntranceAutoWalk
@@ -243,7 +243,7 @@
 	ld hl, .SafariZoneEntranceText_753c0
 	call PrintText
 	ld a, SPRITE_FACING_UP
-	ld [wSpriteStateData1 + 9], a
+	ld [wSpritePlayerStateData1FacingDirection], a
 	ld a, D_UP
 	ld c, $1
 	call SafariZoneEntranceAutoWalk
--- a/scripts/SeafoamIslandsB3F.asm
+++ b/scripts/SeafoamIslandsB3F.asm
@@ -109,7 +109,7 @@
 	dec a
 	ld [wSimulatedJoypadStatesIndex], a
 	xor a
-	ld [wSpriteStateData2 + $06], a
+	ld [wSpritePlayerStateData2MovementByte1], a
 	ld hl, wd730
 	set 7, [hl]
 	ld hl, wFlags_D733
--- a/scripts/TradeCenter.asm
+++ b/scripts/TradeCenter.asm
@@ -14,20 +14,20 @@
 	bit 0, [hl]
 	set 0, [hl]
 	ret nz
-	ld hl, wSpriteStateData2 + $14
+	ld hl, wSprite01StateData2MapY
 	ld a, $8
 	ld [hli], a
 	ld a, $a
 	ld [hl], a
 	ld a, SPRITE_FACING_LEFT
-	ld [wSpriteStateData1 + $19], a
+	ld [wSprite01StateData1FacingDirection], a
 	ld a, [hSerialConnectionStatus]
 	cp USING_INTERNAL_CLOCK
 	ret z
 	ld a, $7
-	ld [wSpriteStateData2 + $15], a
+	ld [wSprite01StateData2MapX], a
 	ld a, SPRITE_FACING_RIGHT
-	ld [wSpriteStateData1 + $19], a
+	ld [wSprite01StateData1FacingDirection], a
 	ret
 
 TradeCenter_TextPointers:
--- a/scripts/VermilionCity.asm
+++ b/scripts/VermilionCity.asm
@@ -38,7 +38,7 @@
 	dw VermilionCityScript4
 
 VermilionCityScript0:
-	ld a, [wSpriteStateData1 + 9]
+	ld a, [wSpritePlayerStateData1FacingDirection]
 	and a ; cp SPRITE_FACING_DOWN
 	ret nz
 	ld hl, SSAnneTicketCheckCoords
@@ -157,7 +157,7 @@
 	text_asm
 	CheckEvent EVENT_SS_ANNE_LEFT
 	jr nz, .shipHasDeparted
-	ld a, [wSpriteStateData1 + 9]
+	ld a, [wSpritePlayerStateData1FacingDirection]
 	cp SPRITE_FACING_RIGHT
 	jr z, .greetPlayer
 	ld hl, .inFrontOfOrBehindGuardCoords
--- a/scripts/VermilionDock.asm
+++ b/scripts/VermilionDock.asm
@@ -21,7 +21,7 @@
 	ld a, $3
 	ld [wSimulatedJoypadStatesIndex], a
 	xor a
-	ld [wSpriteStateData2 + $06], a
+	ld [wSpritePlayerStateData2MovementByte1], a
 	ld [wOverrideSimulatedJoypadStatesMask], a
 	dec a
 	ld [wJoyIgnore], a
@@ -47,7 +47,7 @@
 	call PlayMusic
 	callba LoadSmokeTileFourTimes
 	xor a
-	ld [wSpriteStateData1 + 2], a
+	ld [wSpritePlayerStateData1ImageIndex], a
 	ld c, 120
 	call DelayFrames
 	ld b, $9c
--- a/scripts/ViridianCity.asm
+++ b/scripts/ViridianCity.asm
@@ -120,7 +120,7 @@
 	ld a, D_DOWN
 	ld [wSimulatedJoypadStatesEnd], a
 	xor a
-	ld [wSpriteStateData1 + 9], a
+	ld [wSpritePlayerStateData1FacingDirection], a
 	ld [wJoyIgnore], a
 	ret