PDA

Просмотр полной версии : Про маску



Soplik
22.02.2006, 16:19
Насколько можно ускориться,
если заранее определить, какие знакоместа выводятся по маске,
а какие просто так?
Спасибо.

Sinus
22.02.2006, 16:26
смотря как определять.
если заранее раздекрянчить выводилку спрайта, то можно ускорится сильно.

а если выводить спрайт познакоместово, беря из таблички "по маске" или "не по маске" то может и тормознее станет.

на самом деле имеет смысл если спрайты достаточно большие и мест "не по маске" больше чем "по маске"

Soplik
24.02.2006, 00:55
Файтинги, то есть.
И гоночки - если бы под Спек писали гоночки.

А, и попиксельно по горизонтали так не повыводишь.

Vitamin
24.02.2006, 02:55
Обычная выводилка:
;hl->de
spr:
ld c,height
push de
ld b,width
row:
call putzn
inc e
jr z,$+6
ld a,d
sub 8
ld d,a
djnz row
pop de
call d_de_zn
dec c
jr nz,spr

оптимизированная:
ld a,(hl)
inc hl
exx
ld c,a
ld b,8
exx
ld c,height
spr:
push de
ld b,width
row:
exx
rr c
djnz $+9
exx
ld a,(hl)
inc hl
exx
ld c,a
ld b,8
exx
call nc,put_zn
call c,put_zn_msk
inc e
jr z,$+6
ld a,d
sub 8
ld d,a
djnz row
pop de
call d_de_zn
dec c
jr nz,spr


put_zn:
dup 8
ld a,(hl)
ld (de),a
inc hl
inc d
edup
ret

put_zn_msk:
dup 8
ld a,(de)
and (hl)
inc hl
or (hl)
ld (de),a
inc hl
inc d
edup
ret

просьба не пинать если где накосячил или не соптимизировал, писалось на лету. Общий принцип работы с битовой маской думаю понятен %)