#include "usgard.h"



   .org 0

   .db  "Sprite test",0



   call CLEARLCD

   ld   bc,$0101

   ld   hl,&Sprite

   call &SModPut

   ld   bc,$0101

   ld   hl,&Sprite

   ld   bc,$0A0A

   call &SpriteFunct

   call OTH_PAUSE

   call &SModClr

   call OTH_PAUSE

   ret



Sprite:

   .db  %10000001

   .db  %01000010

   .db  %00100100

   .db  %00011000

   .db  %00011000

   .db  %00100100

   .db  %01000010

   .db  %10000001











SModPut:

   push hl

   ld   hl,$00B6

   ld   (&MorphicCode),hl

   pop  hl

   jr   SpriteFunct



SModClr:

   push hl

   ld   hl,$A62F

   ld   (&MorphicCode),hl

   pop  hl



SpriteFunct:

   push bc

   push de

   ld   a,63

   sub  c

   ld   c,a

   push hl

   push hl

   call FIND_PIXEL

   ld   de,$FC00

   add  hl,de

   ex   de,hl

   pop  hl       ;\

   push hl       ;Put orig hl to ix (ix is sprite data)

   pop  ix       ;/     a is the masking from f_p

   ex   de,hl    ;hl is vidbufloc, de trash

   ld   b,8

px_row:

   push bc       ;for djnz

   ld   d,(ix)   ;d is sprite byte

   inc  ix

   push af       ;save mask

   push hl       ;save vidloc

   ld   b,8

px_col:

   rl   d        ;knock bit off of d

   ld   e,a      ;saving mask

   jr   nc,px_no ;bit was 0

MorphicCode:

   nop

   nop

   ld   (hl),a   ;copy change

px_no:

   ld   a,e      ;restore a

   rrca          ;rotate mask right

   jr   px_nid

   inc  hl       ;advance vidloc

px_nid:

   djnz px_col

   pop  hl       ;resotre vidloc

   pop  af       ;and the mask

   ld   de,16    

   add  hl,de    ;move vidloc down a row

   pop  bc

   djnz px_row

   pop  hl

   pop  de

   pop  bc

   ret



   .end



    Source: geocities.com/tutorman_2000/85

               ( geocities.com/tutorman_2000)