Prev: D609 Up: Map Next: D6A1
D658: Draws an sprite
Draws an sprite with the information defined in the data buffer pointed by the address at SP. Used by the routines at A383 and A3BA.
D658 LD ($A22C),IX Save at A22C the current value of IX
D65C LD ($A22E),IY Save at A22E the current value of IY
D660 POP IY Restore the base address of the data buffer for the sprite to display
D662 LD L,(IY+$03) Set HL to the vertical position of the sprite
D665 LD H,$00
D667 ADD HL,HL Set HL the address location of the sprite in the display file lookup table
D668 LD DE,$AC9A
D66B ADD HL,DE
D66C PUSH HL Copy HL to IX
D66D POP IX
D66F LD L,(IY+$00) Set HL to point to address of the graphic data for the sprite
D672 LD H,(IY+$01)
D675 LD B,(IY+$05) Set B the height of the sprite
D678 PUSH BC Save BC
D679 LD A,(IX+$00) Set A to the lower byte of the address to the display file where draw the sprite
D67C LD D,(IX+$01) Set D to the high byte of the address to the display file where draw the sprite
D67F ADD A,(IY+$02) Add the horizontal position to the lowe byte of the display file
D682 LD E,A Set DE the address point in display file to draw the sprite
D683 LD C,(IY+$04) Set BC to the width of the sprite
D686 LD B,$00
D688 LDIR Copy to display file the graphics data of the sprite (a row of pixels)
D68A INC IX Points to the next address in the display file look up table
D68C INC IX
D68E POP BC Recover BC
D68F DJNZ $D678 Jump back if there are partial sprite to draw
D691 LD DE,$0006 Point IY to the end of the data buffer for the sprite. This will be the next instruction to execute when return from this routine
D694 ADD IY,DE
D696 PUSH IY Save IY
D698 LD IY,($A22E) Restore IY and IX
D69C LD IX,($A22C)
D6A0 RET Return to instruction pointed by IY
Prev: D609 Up: Map Next: D6A1