#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