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: