Prev: EC6F Up: Map Next: ECDC
ECA2: Shift a sprite to the left and copy it into a working buffer
Used by the routine at EBE0.
ECA2 LD ($ECDC),A Store the current frame number.
ECA5 LD HL,$ECE4 Point HL to the temporary store.
ECA8 LD DE,($ECE0) Point DE to the next graphic to print.
ECAC LD B,$10 (16) pairs of cells to copy.
ECAE LD (HL),$00 Clear the first cell.
ECB0 INC HL Move to the next cell.
ECB1 EX DE,HL Copy it from the graphic entry to the temporary store.
ECB2 LD A,(HL)
ECB3 EX DE,HL
ECB4 LD (HL),A
ECB5 INC HL Move to the next cell.
ECB6 INC DE
ECB7 EX DE,HL Copy the byte from the graphic entry to the temporary store.
ECB8 LD A,(HL)
ECB9 EX DE,HL
ECBA LD (HL),A
ECBB INC HL Move to the next cell.
ECBC INC DE
ECBD DJNZ $ECAE Loop while there is more to copy.
ECBF LD A,($ECDC) Get the frame number.
ECC2 LD B,A Store this in B.
ECC3 CP $00 Return if the frame is 0 - no update needed.
ECC5 RET Z
ECC6 LD A,$08 Invert the number of cells to update.
ECC8 SUB B
ECC9 LD B,A
ECCA PUSH BC Store BC
ECCB LD HL,$ED13 Point HL to the back of the buffer.
ECCE LD B,$30 30 cells to update.
ECD0 LD A,(HL) Get the next byte.
ECD1 RLA Shift it to the left.
ECD2 PUSH AF Store AF.
ECD3 LD (HL),A Set the data back.
ECD4 DEC HL Move to the previous cell.
ECD5 POP AF Restore AF.
ECD6 DJNZ $ECD0 Loop back if there are more cells.
ECD8 POP BC Loop back until we get the right frame number to copy.
ECD9 DJNZ $ECCA
ECDB RET
Prev: EC6F Up: Map Next: ECDC