Identify SPRITESTATEDATA2_ORIGFACINGDIRECTION

This commit is contained in:
Rangi 2020-07-07 16:57:51 -04:00
parent 4a7d1513f3
commit 51ac538c25
5 changed files with 11 additions and 10 deletions

View file

@ -29,7 +29,7 @@ SPRITESTATEDATA1_LENGTH EQU const_value
const SPRITESTATEDATA2_MOVEMENTBYTE1 ; 6 const SPRITESTATEDATA2_MOVEMENTBYTE1 ; 6
const SPRITESTATEDATA2_GRASSPRIORITY ; 7 const SPRITESTATEDATA2_GRASSPRIORITY ; 7
const SPRITESTATEDATA2_MOVEMENTDELAY ; 8 const SPRITESTATEDATA2_MOVEMENTDELAY ; 8
const SPRITESTATEDATA2_09 ; 9 const SPRITESTATEDATA2_ORIGFACINGDIRECTION ; 9
const SPRITESTATEDATA2_0A ; a const SPRITESTATEDATA2_0A ; a
const SPRITESTATEDATA2_0B ; b const SPRITESTATEDATA2_0B ; b
const SPRITESTATEDATA2_0C ; c const SPRITESTATEDATA2_0C ; c

View file

@ -38,17 +38,17 @@ DisplayTextIDInit::
jr nz, .skipMovingSprites jr nz, .skipMovingSprites
call UpdateSprites call UpdateSprites
.skipMovingSprites .skipMovingSprites
; loop to copy [x#SPRITESTATEDATA1_FACINGDIRECTION] to [x#SPRITESTATEDATA2_09] ; loop to copy [x#SPRITESTATEDATA1_FACINGDIRECTION] to
; for each sprite from x=01 to x=15 ; [x#SPRITESTATEDATA2_ORIGFACINGDIRECTION] for each non-player sprite
; this is done because when you talk to an NPC, they turn to look your way ; 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 ; the original direction they were facing must be restored after the dialogue is over
ld hl, wSprite01StateData1FacingDirection ld hl, wSprite01StateData1FacingDirection
ld c, $0f ld c, $0f
ld de, $10 ld de, $10
.spriteFacingDirectionCopyLoop .spriteFacingDirectionCopyLoop
ld a, [hl] ld a, [hl] ; x#SPRITESTATEDATA1_FACINGDIRECTION
inc h inc h
ld [hl], a ld [hl], a ; [x#SPRITESTATEDATA2_ORIGFACINGDIRECTION]
dec h dec h
add hl, de add hl, de
dec c dec c

View file

@ -111,13 +111,13 @@ CloseTextDisplay::
xor a xor a
ldh [hAutoBGTransferEnabled], a ; disable continuous WRAM to VRAM transfer each V-blank ldh [hAutoBGTransferEnabled], a ; disable continuous WRAM to VRAM transfer each V-blank
; loop to make sprites face the directions they originally faced before the dialogue ; loop to make sprites face the directions they originally faced before the dialogue
ld hl, wSprite01StateData2 + 9 ; should be wSprite01StateData1FacingDirection? ld hl, wSprite01StateData2OrigFacingDirection
ld c, $0f ld c, $0f
ld de, $10 ld de, $10
.restoreSpriteFacingDirectionLoop .restoreSpriteFacingDirectionLoop
ld a, [hl] ld a, [hl] ; x#SPRITESTATEDATA2_ORIGFACINGDIRECTION
dec h dec h
ld [hl], a ld [hl], a ; [x#SPRITESTATEDATA1_FACINGDIRECTION]
inc h inc h
add hl, de add hl, de
dec c dec c

View file

@ -88,7 +88,8 @@ spritestatedata2: MACRO
\1MovementByte1:: db \1MovementByte1:: db
\1GrassPriority:: db \1GrassPriority:: db
\1MovementDelay:: db \1MovementDelay:: db
ds 4 \1OrigFacingDirection:: db
ds 3
\1PictureID:: db \1PictureID:: db
\1ImageBaseOffset:: db \1ImageBaseOffset:: db
ds 1 ds 1

View file

@ -206,7 +206,7 @@ wSpriteStateData2::
; - 6: movement byte 1 (determines whether a sprite can move, $ff:not moving, $fe:random movements, others unknown) ; - 6: movement byte 1 (determines whether a sprite can move, $ff:not moving, $fe:random movements, others unknown)
; - 7: (?) (set to $80 when in grass, else $0; may be used to draw grass above the sprite) ; - 7: (?) (set to $80 when in grass, else $0; may be used to draw grass above the sprite)
; - 8: delay until next movement (counted downwards, movement status is set to ready if reached 0) ; - 8: delay until next movement (counted downwards, movement status is set to ready if reached 0)
; - 9 ; - 9: original facing direction (backed up by DisplayTextIDInit, restored by CloseTextDisplay)
; - A ; - A
; - B ; - B
; - C ; - C