A83: Sprite routine problems
[Prev][Next][Index][Thread]
A83: Sprite routine problems
Hello. I've been working on a 8x8 xor sprite routine to test my z80
skills. For some reason, the actual sprite wont display, so I'm hoping
one of you would be able to help me out. The code is as follows:
;Input: a-x coord, e-y coord, ix-sprite address
;Output: 8x8 XOR sprite written to 8e29h
8x8_sprite:
ld hl,0
;*********Calculate addy in graphbuf********
sla e ;Do y*12
sla e
add hl,de
add hl,de
add hl,de
srl a ;Do x/8
srl a
srl a
ld d,0
ld e,a
add hl,de
ld de,8e29
add hl,de
ld b,00000111b
and b
cp 0 ;checks if sprite is aligned
jr z,Aligned_Sprite ;If so, goto aligned sprite bit
;********Non-aligned sprite blit starts here********
ld b,a ;Shift counter
ld c,8 ;Line counter
Line_Loop:
ld d,(ix+0)
push bc
Shift_Loop:
srl d
rr e
djnz Shift_Loop
pop bc
ld a,d ;Write line to graphbuf
xor (hl)
ld (hl),a
inc hl
ld a,e
xor (hl)
ld (hl),a
ld de,11
add hl,de
inc ix
dec c
jr nz,Line_Loop
ret
;********Aligned sprite blit starts here********
Aligned_Sprite:
ld c,16 ;Line counter
Aligned_Loop:
ld d,(ix+0)
ld a,d
xor (hl)
ld (hl),a
ld de,12
add hl,de
inc ix
dec c
jr nz,Aligned_Loop
ret
.end
END
If anyone can find what I did wrong, I'd really appreciate it. Thanx.
--
Pizza of Hut
http://www.antishrine.sacone.com/
Follow-Ups: