ZXNet эхоконференция «code.zx»
тема: вывод буковочек шириной точечек
от: jtn
кому: All
дата: 15 Jan 2006
Hello, lvd
в #z80-06 76кб текста, музыка, гора таблиц, фонт 4x7 и
пропорциональный Xx7 развернутый 8 раз.
декранчится код на горизонтальную строку - вызывается 8 раз.
вывод экрана push'ми (в push'евом буфере +2 строки - след. верхняя и нижняя,
сначала строится весь новый экран потом декранчится в буфер новая строка -
чтобы луч не резало).
ускорение фиг знает сильное ли получилось но в турбомоде весь экран без верхних
трех знакомест успевает (24 текст строки), без турбо - строк 9 (с вкл. музыкой
вроде) - строки 7 пикс выстотой
от: lvd
кому: All
дата: 15 Jan 2006
Hello, captain cobalt
cap> А правда, что буквы моноширинного шрифта 6 пикс. могут занимать
cap> только 4 различных положения относительно знакоместа? ;)
А правда, что ты не знаешь, о чём конкретно я говорил? Выйдет хостагес от
3умф+майхем - узнаешь.
от: lvd
кому: All
дата: 15 Jan 2006
Hello, Знахарь
> Увы, регистров тут фонарь... Это на амиге 16 штук :(
Таки у Z80 16 тоже регистров! А если индексы на половинки разбить то и вообще
18 =)
от: van Yu Shinn
кому: All
дата: 15 Jan 2006
Hello, fk0
lvd> 8 процедур вывода буковки. Из них 3 выводят в 1 байт, остальные в 2
lvd> байта (фонт 6 точек шириной).
А правда, что буквы моноширинного шрифта 6 пикс. могут занимать только 4
различных положения относительно знакоместа? ;)
от: van Yu Shinn
кому: All
дата: 15 Jan 2006
Hello, fk0
Буквы -- это в некотором смысле чанки. :)
В чанковых демах изображение сначала рендерится в чанковый буфер, а потом
перерисовывается в пиксели на экран.
Hаиболее злые c2p способны отрисовать экран менее чем за 2 инта. Может быть
некоторые идеи оттуда будут полезны?
от: van Yu Shinn
кому: All
дата: 15 Jan 2006
Hello, fk0
Если у отрезанных букв много элементов повторяется, то почему бы при отрисовке
одной буквы её наиболее частый элемент не положить в регистр и писать из
регистра?...
от: Владимир Кладов
кому: All
дата: 15 Jan 2006
Hello, jtn
если выводить символ за символом, то это будет очень медленно. Hо почему-то все
идут именно этим путем. Традиционное мышление.
Что есть изменить порядок вывода? Для вывода страницы сначала текст
просматривается и помечаются буковки, которые можно вывести без маски, просто
"положить" в память, и для каждой буковки считается смещение. Смещение кстати
может быть и переменным, если шрифт не моноширинный, например для широких
буковок 5, а для поуже 4, а i та вообще 2 занимать может. Таблица сдвигов для
максимальной ширины 5 (т.е. 6 с зазором) займет 32х8 = 256 байт. Ее надо
разместить по границе блока 256 байт. Hа втором проходе печатаются оставшиеся
буковки, уже с маской. Если делать через буфер, то на одном кадре надо
заполнять буфер, а на втором перебрасывать его двигаясь позади луча.
от: Гаврилов Виталий
кому: All
дата: 15 Jan 2006
Hello, Vladimir Kladov
Vla> Что есть изменить порядок вывода? Для вывода страницы сначала текст
Vla> просматривается и помечаются буковки, которые можно вывести без
Vla> маски, просто "положить" в память, и для каждой буковки считается
Vla> смещение.
ага. а сколько будет "стоить" первоначальный просмотр строки с подсчетом
позиции текущего символа (я про пропорциональный шрифт говорю), потом вывод
(обязательно по OR/XOR) оставшихся со сдвигом?
от: Гаврилов Виталий
кому: All
дата: 15 Jan 2006
Hello, Знахарь
> PUT это имеется ввиду просто байтик вывел и всё ?
>
> М-да... Так что, выходит только классика ???
выходит так (с) Винни Пух %)
ну я так делал у себя в QHTV. довольно шустро летает все. особенно если учесть,
что сначала печать идет в буфер, а потом выводится на экран. притом что буфер
еще предварительно очищается (не полностью правда)
от: Знахарь
кому: All
дата: 15 Jan 2006
Hello, Vitamin
PUT это имеется ввиду просто байтик вывел и всё ?
М-да... Так что, выходит только классика ???
от: Знахарь
кому: All
дата: 15 Jan 2006
Hello, captain cobalt
Увы, регистров тут фонарь... Это на амиге 16 штук :( Были попытки делать типа
кеширование или умную печать и другие страшно умные слова... Т.е. при после
ротации байты сохраняются и сохраняется код полосочки. Дальше все печатается и
тп. а при следующем цикле проверяем, не повторяется ли эта полосочка. Для того,
чтоб не ротировать, а просто взять сохраненное.
Hу дык тоже в итоге медленнее :(
|