tiboyse/render_ram.z80
Brendan Fletcher 6482429a81 Initial commit
2020-03-04 02:05:06 -05:00

136 lines
No EOL
1.6 KiB
Z80 Assembly

spriteloop_gray:
ld a,(de)
xor (hl)
and iyh
xor (hl)
exx
ld c,a
ld a,(bc)
sprite_palette_smc_gray = $+1
call 0
ld e,a
ld a,(de)
exx
ld c,a
xor (hl)
and iyl
xor (hl)
ld (hl),a
ld a,(de)
xor c
and iyl
xor c
ld (de),a
dec e
dec l
spriteloop:
ld a,(de)
xor (hl)
and iyh
xor (hl)
exx
ld c,a
ld a,(bc)
sprite_palette_smc = $+1
call 0
sprite_flip_smc:
inc l
inc l
ld e,a
ld a,(de)
exx
ld c,a
xor (hl)
and iyl
xor (hl)
ld (hl),a
ld a,(de)
xor c
and iyl
xor c
ld (de),a
dec de
dec hl
sprite_loop_smc = $+1
djnz spriteloop
sprite_next_smc = $+1
jp draw_next_sprite
;Input: DE = pointer to first tile, DE' = pointer to buffer, B = row within tile, C = rows to draw, B' = columns to draw, C' = mask
rasterlines:
ex de,hl
ld a,8
sub b
ld b,a
rasterloop0:
push bc
push hl
exx
bufferHeight = $+1
ld hl,128 + 15
add hl,de
ex de,hl
push de
exx
ld a,16
sub b
sub b
rasterloop1:
ld e,(hl)
ld d,tileLUT >> 8
ex de,hl
add a,(hl)
rastersmc1:
inc h
ld h,(hl)
ld l,a
ld a,c
sub b
jr nc,_
ld b,c
xor a
_
ld c,a
rasterloop2:
nop \ nop \ nop \ nop \ nop ;allow room for palette mod
nop \ nop \ nop \ nop ;allow room for rotation mod
dec l
exx
ld (de),a
xor (hl)
and c
xor (hl)
ld (hl),a
inc e
inc l
exx
nop \ nop \ nop \ nop \ nop ;allow room for second palette mod
nop \ nop \ nop \ nop ;allow room for second rotation mod
inc l
exx
ld (de),a
xor (hl)
and c
xor (hl)
ld (hl),a
inc de
inc hl
exx
djnz rasterloop2
ld a,e
add a,$20
ld l,a
ld a,d
jr nc,_
inc a
xor d
and %00000011
xor d
_
ld h,a
ld b,8
xor a
cp c
jp nz,0 ;rasterloop1
jp 0 ;rastercolumnend