Тебе именно всегда срезать 5 знакомест сверху и 6 снизу или могут изменяться? Можно конкретно для этих цифр написать жесткую быструю процедуру.
Вид для печати
Вообще процедура PUTIMAGE1 c проверкой намного ли быстрее спрайтовой с проверкой ?
Прост у меня большинство тайлов квадратные, и было бы рациональнее их выводить не спрайтами, а PUTIMAGE-ми. Но вот насколько будет выигрыш в скорости.
- - - Добавлено - - -
Да, в основном именно такая область рабочая.
Быстрее намного, потому что вычисляется только первое знакоместо в каждой линии и далее ldir всей линии, а в выводе спрайтов - каждое знакоместо вычисляется и выводится.
- - - Добавлено - - -
Таблица адресов всех пиксельных строк экрана ниже, можешь нужные строки отлдирить тупо :)
Код:table_addr_scr defw #4000,#4100,#4200,#4300,#4400,#4500,#4600,#4700
defw #4020,#4120,#4220,#4320,#4420,#4520,#4620,#4720
defw #4040,#4140,#4240,#4340,#4440,#4540,#4640,#4740
defw #4060,#4160,#4260,#4360,#4460,#4560,#4660,#4760
defw #4080,#4180,#4280,#4380,#4480,#4580,#4680,#4780
defw #40a0,#41a0,#42a0,#43a0,#44a0,#45a0,#46a0,#47a0
defw #40c0,#41c0,#42c0,#43c0,#44c0,#45c0,#46c0,#47c0
defw #40e0,#41e0,#42e0,#43e0,#44e0,#45e0,#46e0,#47e0
defw #4800,#4900,#4a00,#4b00,#4c00,#4d00,#4e00,#4f00
defw #4820,#4920,#4a20,#4b20,#4c20,#4d20,#4e20,#4f20
defw #4840,#4940,#4a40,#4b40,#4c40,#4d40,#4e40,#4f40
defw #4860,#4960,#4a60,#4b60,#4c60,#4d60,#4e60,#4f60
defw #4880,#4980,#4a80,#4b80,#4c80,#4d80,#4e80,#4f80
defw #48a0,#49a0,#4aa0,#4ba0,#4ca0,#4da0,#4ea0,#4fa0
defw #48c0,#49c0,#4ac0,#4bc0,#4cc0,#4dc0,#4ec0,#4fc0
defw #48e0,#49e0,#4ae0,#4be0,#4ce0,#4de0,#4ee0,#4fe0
defw #5000,#5100,#5200,#5300,#5400,#5500,#5600,#5700
defw #5020,#5120,#5220,#5320,#5420,#5520,#5620,#5720
defw #5040,#5140,#5240,#5340,#5440,#5540,#5640,#5740
defw #5060,#5160,#5260,#5360,#5460,#5560,#5660,#5760
defw #5080,#5180,#5280,#5380,#5480,#5580,#5680,#5780
defw #50a0,#51a0,#52a0,#53a0,#54a0,#55a0,#56a0,#57a0
defw #50c0,#51c0,#52c0,#53c0,#54c0,#55c0,#56c0,#57c0
defw #50e0,#51e0,#52e0,#53e0,#54e0,#55e0,#56e0,#57e0
Яжламер :v2_dizzy_coder:
Так-то я в курсе, что такое LDIR и что он гоняет блоки данных.
Но как сделать так, чтоб он опирался именно на таблицу в качестве входных параметров, этого я пока не умею.
- - - Добавлено - - -
Что касается логики ЯВУ, что быстрее работает последовательность if else или switch case ?
case
Можно тупо в лоб, если не жалко нескольких сотен байтов, зато быстродействие будет максимальное:
Код:copy_virt_to_scr ld hl,#4080+addr_virt_scr-#4000 ; остаток первой трети экрана с 5-й строки
ld de,#4080
ld bc,32
ldir
ld hl,#4180+addr_virt_scr-#4000
ld de,#4180
ld bc,32
ldir
...
ld hl,#4800+addr_virt_scr-#4000 ; вся вторая треть
ld de,#4800
ld bc,2048
ldir
ld hl,#5000+addr_virt_scr-#4000 ; часть третьей трети до 6-й строки снизу
ld de,#5000
ld bc,32
ldir
ld hl,#5100+addr_virt_scr-#4000
ld de,#5100
ld bc,32
ldir
...
ld hl,#5740+addr_virt_scr-#4000
ld de,#5740
ld bc,32
ldir
ret
Не... На данный момент putimage у меня касается вывода тайлов (как альтернатива спрайтам), а не в качестве переброски виртуального экрана на реальный.
Переброску я пока ещё не трогал. Пока ещё она фуллскриновая, тормозная.
- - - Добавлено - - -
Хотя можно как вариант отрисовывать тайлы в более узком диапазоне, не заходя за края. А сами края захайдить атрибутами. Но не хочется урезать обзор.
А вот это не оно? Уже обсуждали
- - - Добавлено - - -
Края не получится проверять в выводах линий. Нужно сначала вычислять длину линии тогда.