Код:
//организация спрайтов
//адреса даны примерно
sp_line1 equ #6000
//как организовано?
//сначала в кучку друг за другом все первые линии обьектов
//потом все следующие линии обьектов в следующем параграфе
//и тд
sub_beg equ #00 //8*5 =#38
mine_beg equ #38 //8*3=#18
gunl_beg equ #50 //8*3=#18
gunr_beg equ #68 //8*3=#18
stal_beg equ #80 //8*3=#18
//здесь начинаем рисовать строку спрайтов
beg_line
//вот здесь можно сделать проверку на необходимость отрисовки
//чтото вроде
ld (sprdraw_sp),sp
ld sp,(sprites)
ret
end_line
ld (sprites),sp
ld sp,(sprdraw_sp)
ret
sprites dw 0
//отрисовка обьекта шириной 1
draw_sp1
pop hl //адрес Y
pop de //адрес на экране
pop bc //B высота С координата X
ld (store_sp1),sp
ld sp,hl
loop_sp1
pop hl
ld a,c
add a,l
ld l,a
ld a,(de)
xor (hl)
ld (hl),a
pop hl
ld a,c
add a,l
ld l,a
ld a,(de)
xor (hl)
ld (hl),a
inc d
djnz loop_sp1
ld sp,0
store_sp1 equ $-2
ret
//отрисовка обьекта шириной 2
draw_sp2
pop hl //адрес Y
pop de //адрес на экране
pop bc //B высота С координата X
ld (store_sp2),sp
ld sp,hl
loop_sp2
pop hl
ld a,c
add a,l
ld l,a
ld a,(de)
xor (hl)
ld (hl),a
inc l
ld a,(de)
xor (hl)
ld (hl),a
pop hl
ld a,c
add a,l
ld l,a
ld a,(de)
xor (hl)
ld (hl),a
dec l
ld a,(de)
xor (hl)
ld (hl),a
inc d
djnz loop_sp2
ld sp,0
store_sз2 equ $-2
ret
//отрисовка обьекта шириной 2
draw_sp3
pop hl //адрес Y
pop de //адрес на экране
pop bc //B высота С координата X
ld (store_sp3),sp
ld sp,hl
loop_sp3
pop hl
ld a,c
add a,l
ld l,a
dup 2
ld a,(de)
xor (hl)
ld (hl),a
inc l
edup
ld a,(de)
xor (hl)
ld (hl),a
pop hl
ld a,c
add a,l
ld l,a
dup 2
ld a,(de)
xor (hl)
ld (hl),a
dec l
edup
ld a,(de)
xor (hl)
ld (hl),a
inc d
djnz loop_sp3
ld sp,0
store_sз2 equ $-2
ret
единственное - необходимо 2 раза сканировать спрайты выводимые на экран