Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Программирование (http://zx-pk.ru/forumdisplay.php?f=14)
-   -   вывод буковочек шириной точечек (http://zx-pk.ru/showthread.php?t=2170)

fk0 10th January 2006 12:48

вывод буковочек шириной точечек
 
Известно, что их RRA: RRA: RRA: RLCA, сдвигать нужно. И маску
ещё. Потом XOR: AND: XOR. Всё это отнимает кучу тактов.
Некоторые умники сдвигают весь шрифт целиком. 2048*4=8КБайт,
а то и все 16. Жуть.

Имеется решение в 512 байт: таблица, где для каждого возможного
байта из шрифта будет храниться два байта сдвинутых на нужное расстояние. 4 инструкции в примерно 22 такта заменяют несколько
операций сдвига. Экономия. Но, наверное, небольшая.

Sinus 10th January 2006 13:14

ничего не понял :confused:
что за "вывод символов шириной точек" ???
это как ?

типа "а" - точки одной ширины "б" - другой а "в" - третьей ?

Vitamin 10th January 2006 15:49

Quote:

Originally Posted by Sinus
типа "а" - точки одной ширины "б" - другой а "в" - третьей ?

судя по всему, да %) пропорциональный шрифт типа.
я, например, делал по-другому. в 7 регистров считываем данные, потом 7 процедур, скроллирующих сколько надо и насколько надо. примерно так же быстро, как и табличный метод, памяти кушает примерно столько же. проверял на опыте.

Vitamin 10th January 2006 18:48

Quote:

Originally Posted by Знахарь
А классика жанра просто немного ускоряется и все Т.е. проверяем смещение, которое в А если оно >4 то дергаем такую же печать, но с прокруткой влево. Т.е. если смещение 6-7 то это +1 знакоместо и 2-1 ротации.

угу. плюс если вывод идет строго по границе байта, выводить можно один байт, а не два (хвост). плюс оптимизация вывода двухбайтовых сдвиговых составляющих- первый байт по OR, следующий по PUT.
мне алко както "нафукал" про мой баян из процедур и ветвления. попробовал таблицу- еще хуже стало! как по памяти, так и по быстродействию. так что....

Знахарь 10th January 2006 19:04

PUT это имеется ввиду просто байтик вывел и всё ?

М-да... Так что, выходит только классика ???

captain cobalt 10th January 2006 19:12

Если у отрезанных букв много элементов повторяется, то почему бы при отрисовке одной буквы её наиболее частый элемент не положить в регистр и писать из регистра?...

Знахарь 10th January 2006 19:35

Увы, регистров тут фонарь... Это на амиге 16 штук :( Были попытки делать типа кеширование или умную печать и другие страшно умные слова... Т.е. при после ротации байты сохраняются и сохраняется код полосочки. Дальше все печатается и тп. а при следующем цикле проверяем, не повторяется ли эта полосочка. Для того, чтоб не ротировать, а просто взять сохраненное.

Ну дык тоже в итоге медленнее :(

Vitamin 10th January 2006 19:39

Quote:

Originally Posted by Знахарь
PUT это имеется ввиду просто байтик вывел и всё ?

М-да... Так что, выходит только классика ???

выходит так (с) Винни Пух %)

ну я так делал у себя в QHTV. довольно шустро летает все. особенно если учесть, что сначала печать идет в буфер, а потом выводится на экран. притом что буфер еще предварительно очищается (не полностью правда)

captain cobalt 10th January 2006 20:41

Буквы -- это в некотором смысле чанки. :)

В чанковых демах изображение сначала рендерится в чанковый буфер, а потом перерисовывается в пиксели на экран.

Наиболее злые c2p способны отрисовать экран менее чем за 2 инта. Может быть некоторые идеи оттуда будут полезны?

lvd 10th January 2006 20:54

Quote:

Originally Posted by Знахарь
Увы, регистров тут фонарь... Это на амиге 16 штук :(

Таки у Z80 16 тоже регистров! А если индексы на половинки разбить то и вообще 18 =)


All times are GMT +4. The time now is 21:09.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.