#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
               (
geocities.com/tutorman_2000)