А знает кто-нибудь быстрый способ поскроллить строчку на экране на 2 пиксела в одном цикле перебора байтов? Ну, вернее, есть ли способ быстрее, чем 2 раза подряд на 1 пиксел?
А знает кто-нибудь быстрый способ поскроллить строчку на экране на 2 пиксела в одном цикле перебора байтов? Ну, вернее, есть ли способ быстрее, чем 2 раза подряд на 1 пиксел?
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Так определись, чего именно скролить... потом уже процедуру придумывай.
Взносы в призовой фонд конкурса "Твоя игра 5" принимаются с помощью PaуPal, ЯндексДенег или перевода на карту Сбербанка (см. http://ti5.retropc.ru)
с табличками это примерно так
по алгоритмуКод:ld bc,head_table dup nn ld a,(de) ldi ld l,a ld h,b ld h,(hl) edup
данный скроллер позволяет скроллить на расстояние от 1 до 6 бит без изменения программы
и соответственно таблицы занимают от (2+1)*256 до (64+1)*256
как это работает:
у нас есть так называемая head_table где прописаны адреса таблиц скролла откуда мы уже берем сдвинутые данные для следующего байта.
генератор головной таблицы
генератор таблиц скроллаКод:ld hl,head_table ld de,roll_table ht0 ld a,l and #03 ;размерность таблицы 2 бита (сдвиг на 2) add a,d ld (hl),a inc l jr nz,ht0
Код:ld hl,roll_table ld bc,#0400 ;размерность таблицы (2 бита *2 значения) rt0 push bc rt1 ld b,2 ; на сколько битов скролл ld a,c ld (hl),l rt2 rra rr (hl) djnz rt2 inc l jr nz,rt1 inc h pop bc inc c djnz rt0
С уважением,
Jerri / Red Triangle.
dimidus (14.12.2020)
Сразу скажу - такты не считал.
Но попробуй - может так быстрее будет ?
pop hl
rr h
rr l
ex af,af'
rr h
rr l
ex af,af'
push hl
dec sp
dec sp
(или INC sp - смотрю куда крутить ну и RR или RL)
Последний раз редактировалось Hacker Grey; 16.12.2013 в 15:38.
"introspec" читается как "интроспек". некоторые читают как "интроспец", но я никакой не спец. я спек.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)