Dwa83, а у тебя бывают ситуации когда перекидывается весь экран без смещения и перерисовки столбцов?
- - - Добавлено - - -
Сообщение от
Dwa83
Получается, что медленнее не стало. Мне только казалось. Даже быстрее. Значим мой способ со стеком - кривой-косой, а я криворучка).
это пушо игры кидающие буфер стеком
хранят буфер вверх ногами
и там нет потерь на плюсовании 32
- - - Добавлено - - -
в общем я прикинул проще оставить с ldi
самый легкий вариант по весу будет жрать 15,785714285714285714285714285714 такта / байт
при этом потребуется 1 байт кода на 1 байт пересылки
то есть 6К на процедуру а их видимо тебе нужно 2...
- - - Добавлено - - -
слегка оптимизировал твою кидалку
теперь дето 114315
16,625218150087260034904013961606 такта на байт
Код:
ld (S_SRC1+1),hl ;16
ld (S_DST1+1),de ;20
ld (SAVE_SP+1),sp ;20
ld iyl,191 ;11
S_SRC1 ld sp,0 ;10
pop hl ;10
pop de ;10
pop bc ;10
pop af ;10
exx ;4
ex af,af' ;4
pop hl ;10
pop de ;10
pop bc ;10
pop af ;10
pop ix
ld (S_SRC2+1),sp ;20 =
S_DST1 ld sp,0 ;10
push ix
push af
push bc ;11
push de ;11
push hl ;11
ex af,af'
exx ;4
push af ;11
push bc ;11
push de ;11
push hl ;11
ld hl,36 ;10
add hl,sp ;11
ld (S_DST2+1),hl ;16 = 147 | +122 = 269
S_SRC2 ld sp,0
pop hl
pop de
pop bc
pop af
exx
ex af,af'
pop hl
pop de
pop bc
pop af
pop ix
ld (S_SRC1+1),sp
S_DST2 ld sp,0
push ix
push af
push bc
push de
push hl
ex af,af'
exx
push af
push bc
push de
push hl
ld hl,36
add hl,sp
ld (S_DST1+1),hl ;269 * 2 = 538
;551 * 214 + 546 = 118460
;+66 = 118526 (17,148 на байт)
dec iyl ;8
jp nz, S_SRC1 ;10
SAVE_SP ld sp,0
- - - Добавлено - - -
но для экономии времени и нервов лучше наверно оставить ldi