I'll just copy / paste it here with a few modifications. Hope this helps
Code: ;-------------------------------------------------------------------------------
gfx_Sprite_NoClip:
; Places an sprite on the screen as fast as possible
; Arguments:
; hl: Pointer to sprite
; bc : X coordinate
; e : Y coordinate
; Returns:
; None
push hl
ld hl,vRam
add hl,bc
ld d,LcdWidth/2
mlt de
add hl,de
add hl,de
ex de,hl ; de = start draw location
pop hl
ld c,(hl) ; spriteWidth
inc hl
ld iyh,c
xor a,a
ld b,a
srl c
sbc a,.step - .evenw
ld (.step - 1),a
ld a,LcdWidth/2
sub a,c
ld iyl,a ; (LcdWidth/2)-(spriteWidth/2)
ld a,(hl) ; spriteHeight
inc hl
jr .start
.loop:
dec de ; needed if sprite width is odd
.evenw:
ld c,iyl ; (LcdWidth/2)-(spriteWidth/2)
ex de,hl
add hl,bc
add hl,bc
ex de,hl
.start:
ld c,iyh ; spriteWidth
ldir
dec a
jr nz,.loop
.step:
ret