Prev: E9D9 Up: Map Next: EA93
E9E2: Erase Sprite Trail
Used by the routines at Handler_Player and Handler_Pirates.
Clears the character-wide strip left behind when a sprite moves.
Input
IX Sprite data
B Current vertical position
C Current horizontal position
D Current vertical offset
E Current horizontal offset
EraseSpriteTrail E9E2 LD A,C A=C.
E9E3 SUB (IX+$0D) A-=*IX+0D.
E9E6 JR Z,EraseSpriteTrail_TestHorizontal Jump to EraseSpriteTrail_TestHorizontal if the result is zero.
E9E8 CP $FF Compare A with FF.
E9EA PUSH AF Stash AF on the stack.
E9EB CALL Z,EraseSpriteTrail_EraseLeftColumn Call EraseSpriteTrail_EraseLeftColumn if A is equal to FF.
E9EE POP AF Restore AF from the stack.
E9EF CALL NZ,EraseSpriteTrail_EraseRightColumn Call EraseSpriteTrail_EraseRightColumn if A is not equal to FF.
E9F2 JR EraseSpriteTrail_TestVertical Jump to EraseSpriteTrail_TestVertical.
EraseSpriteTrail_TestHorizontal E9F4 LD A,E Jump to EraseSpriteTrail_TestVertical if E is equal to *IX+0B.
E9F5 CP (IX+$0B)
E9F8 JR Z,EraseSpriteTrail_TestVertical
E9FA CP $03 Call EraseSpriteTrail_EraseRightColumn if E is equal to 03.
E9FC CALL Z,EraseSpriteTrail_EraseRightColumn
EraseSpriteTrail_TestVertical E9FF LD A,B A=B.
EA00 SUB (IX+$0E) A-=*IX+0E.
EA03 JR Z,EraseSpriteTrail_TestVerticalOffset Jump to EraseSpriteTrail_TestVerticalOffset if the result is zero.
EraseSpriteTrail_CompareVerticalDelta EA05 CP $FF Compare A with FF.
EA07 PUSH AF Stash AF on the stack.
EA08 CALL Z,EraseSpriteTrail_EraseUpRow Call EraseSpriteTrail_EraseUpRow if A was equal to FF (on line EraseSpriteTrail_CompareVerticalDelta).
EA0B POP AF Restore AF from the stack.
EA0C CALL NZ,EraseSpriteTrail_EraseDownRow Call EraseSpriteTrail_EraseDownRow if A was not equal to FF (on line EraseSpriteTrail_CompareVerticalDelta).
EA0F JR EraseSpriteTrail_Return Jump to EraseSpriteTrail_Return.
EraseSpriteTrail_TestVerticalOffset EA11 LD A,D Jump to EraseSpriteTrail_Return if D is equal to *IX+0F.
EA12 CP (IX+$0F)
EA15 JR Z,EraseSpriteTrail_Return
EA17 CP $03 Call EraseSpriteTrail_EraseDownRow if D is equal to 03.
EA19 CALL Z,EraseSpriteTrail_EraseDownRow
EraseSpriteTrail_Return EA1C RET Return.
EraseSpriteTrail_EraseLeftColumn EA1D PUSH BC Stash BC and DE on the stack.
EA1E PUSH DE
EA1F LD C,(IX+$0D) C=*IX+0D.
EA22 LD B,(IX+$0E) B=*IX+0E.
EA25 LD D,(IX+$08) D=*IX+08.
EA28 LD E,$01 E=01.
EA2A LD A,(IX+$0F) Jump to EraseSpriteTrail_EraseLeftTiles if *IX+0F is equal to 03.
EA2D CP $03
EA2F JR Z,EraseSpriteTrail_EraseLeftTiles
EA31 INC D Increment D by one.
EraseSpriteTrail_EraseLeftTiles EA32 CALL PrintSpriteUpdateBuffer Call PrintSpriteUpdateBuffer.
EA35 POP DE Restore DE and BC from the stack.
EA36 POP BC
EA37 RET Return.
EraseSpriteTrail_EraseRightColumn EA38 PUSH BC Stash BC and DE on the stack.
EA39 PUSH DE
EA3A LD A,(IX+$0D) A=*IX+0D.
EA3D LD C,(IX+$07) C=*IX+07.
EA40 SUB C A-=C.
EA41 LD C,A C=A.
EA42 LD B,(IX+$0E) B=*IX+0E.
EA45 LD D,(IX+$08) D=*IX+08.
EA48 LD E,$01 E=01.
EA4A LD A,(IX+$03) Jump to EraseSpriteTrail_EraseRightTiles if *IX+03 is equal to 03.
EA4D CP $03
EA4F JR Z,EraseSpriteTrail_EraseRightTiles
EA51 INC D Increment D by one.
EraseSpriteTrail_EraseRightTiles EA52 CALL PrintSpriteUpdateBuffer Call PrintSpriteUpdateBuffer.
EA55 POP DE Restore DE and BC from the stack.
EA56 POP BC
EA57 RET Return.
EraseSpriteTrail_EraseDownRow EA58 PUSH BC Stash BC and DE on the stack.
EA59 PUSH DE
EA5A LD A,(IX+$0E) A=*IX+0E.
EA5D LD D,(IX+$08) D=*IX+08.
EA60 SUB D A-=D.
EA61 LD B,A B=A.
EA62 LD E,(IX+$07) E=*IX+07.
EA65 LD C,(IX+$0D) C=*IX+0D.
EA68 LD D,$01 D=01.
EA6A LD A,(IX+$02) Jump to EraseSpriteTrail_EraseDownTiles if *IX+02 is equal to 03.
EA6D CP $03
EA6F JR Z,EraseSpriteTrail_EraseDownTiles
EA71 INC E Increment E by one.
EraseSpriteTrail_EraseDownTiles EA72 CALL PrintSpriteUpdateBuffer Call PrintSpriteUpdateBuffer.
EA75 POP DE Restore DE and BC from the stack.
EA76 POP BC
EA77 RET Return.
EraseSpriteTrail_EraseUpRow EA78 PUSH BC Stash BC and DE on the stack.
EA79 PUSH DE
EA7A LD C,(IX+$0D) C=*IX+0D.
EA7D LD B,(IX+$0E) B=*IX+0E.
EA80 LD D,$01 D=01.
EA82 LD E,(IX+$07) E=*IX+07.
EA85 LD A,(IX+$0B) Jump to EraseSpriteTrail_EraseUpTiles if *IX+0B is equal to 03.
EA88 CP $03
EA8A JR Z,EraseSpriteTrail_EraseUpTiles
EA8C INC E Increment E by one.
EraseSpriteTrail_EraseUpTiles EA8D CALL PrintSpriteUpdateBuffer Call PrintSpriteUpdateBuffer.
EA90 POP DE Restore DE and BC from the stack.
EA91 POP BC
EA92 RET Return.
Prev: E9D9 Up: Map Next: EA93