Написал процедуру вывода спрайта в линейный буфер, возможно кто-нибудь предложит вариант оптимизации по скорости выполнения
Процедура состоит из 8 почти идентичных блоков, различие в величине смещения. Все показывать смысла нет, вот самый медленный кусок, смещение = 4
Код:;смещение 4 ;HL - адрес в буфере экрана vscreen ;DE - данные спрайта [байт маски, байт данных] ;B - ширина спрайта в символах ;C - высота спрайта в пикселях ;vscreen.len - ширина строки в буфере экрана drw_sprite_sm4 ld a,b ld (drw_sprite_sm4_loop1+1),a neg add a,vscreen.len ld (drw_sprite_sm4_offsetx+1),a ld a,c exx ld c,a exx drw_sprite_sm4_loop1 ld a,0 ld bc,#ff00 drw_sprite_sm4_loop2 exa ld a,(de) inc de dup 4 rr b rra edup rr b and (hl) ld (hl),a ld a,b dup 4 rrca edup ld b,a ld a,(de) inc de dup 4 rr c rra edup rr c or (hl) ld (hl),a ld a,c dup 4 rrca edup ld c,a inc hl exa dec a jp nz,drw_sprite_sm4_loop2 ld a,b dup 4 rrca edup or #0f ld b,a ld a,c dup 4 rrca edup and #f0 ld c,a ld a,(hl) and b or c ld (hl),a drw_sprite_sm4_offsetx ld a,0 add a,l ld l,a jp nc,$+4 inc h exx dec c exx jp nz,drw_sprite_sm4_loop1 ret





Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 
