Спек128 - испанская выдумка, навязанная Сэру Клайву. © Shaos
REAL HARDWARE MUST LIVE ! - http://SBLive.narod.ru/ZX-Spectrum/
о какой поддержке речь? Принцип подключения к Pentagon 1024SL v2.2 уже продуман, шикарная палитра выбрана.. правда не до конца пока ясно как сгруппировать биты в байте, чтоб было удобней считать при необходимости цвет - активность кодеров не очень высокая в предложении наиболее оптимальных и быстрых процедурок расчёта цвета..
Но палитра просто классная, и главное - интуитивно понятная.
Модель представления предложенной Lethargeek'ом равномерной палитры.
1) берём две плоскости 8х8 и располагаем одна над другой;
2) на нижней по двум координатам откладываем значение R и B, на верхней - по обеим координатам значение G.
В результате получаем на обеих плоскостях из самых тёмных в самые светлые углы две диагонали равных уровней интенсивности, снизу RB - диагональ, а сверху аналогичную G - диагональ. При их сложении получим 8 оттенков серого, которые располагаются строго по диагонали, а с обеих сторон от диагонали будут цветные поля - с одной стороны с преимуществом красного, а с другой стороны от диагонали - с преимуществом синего, зелёный же распределён симметрично-равномерно в обеих половинах. Всё просто и интуитивно понятно. Правда если посчитать разрядность такой палитры, то она будет превышать на один бит палитру, которую можно адресовать байтом, т.е. фактически на плоскость RB отдаётся 64 комбинации из 32 возможных комбинаций ограниченных разрядностью 8bit-3bitG=5bitRB. Чтоб это выправить в плоскости RB равномерно сделаны 32 дырки - теперь количество оставшихся ячеек соответствует разрядности 5bit. Посколько дырки распределены равномерно на плоскости, то при конвертации полноцветного изображения даже если цвет попадает на дырку - всегда можно взять взамен любой из соседних вокруг дырки восьми оттенков, что позволяет максимально приблизить результат к оригиналу.
Сами места дырок автоматически формируются с помощью элементов жёсткой логики схемы цифро-аналогового преобразователя. Формулы вычисления разрядов r0, b0 в зависимости от композитного разряда rb0 и значений r2r1, b2b1 приведены ниже:
r0=((r2+r1)&rb0)+(rb0¬(r2+r1+b2+b1));
b0=((b2+b1)&rb0)+(rb0¬(r2+r1+b2+b1));
или:
r0=rb0&((r1+r2)+not(b1+b2));
b0=rb0&((b1+b2)+not(r1+r2));
Ниже слева RB плоскость из 64 ячеек, а справа - та же плоскость после выкалывания 32 дырок:
Последний раз редактировалось Black_Cat; 27.02.2008 в 00:47.
Прихожу без разрешения, сею смерть и разрушение...
А побитовая раскладка - отдельный вопрос, мож правда кому нагляднее GGGRRBB(rb), хотя GRBGRBG(rb) удобнее, если например надо быстро яркость оценивать.
Добавлено через 3 минуты
Я ваще не смог представить, зачем на верхней плоскости по обеим осям G откладывать???
Добавлено через 5 минут
Кубик нагляден, если просто 8 квадратиков рядом нарисовать
Последний раз редактировалось Lethargeek; 27.02.2008 в 00:57. Причина: Добавлено сообщение
Прихожу без разрешения, сею смерть и разрушение...
во-во-во.. с этого места, и с примерами максимально быстрого кода пожалуйста.. при каккой раскладке можно сочинить наиболее быструю процедурку..
..господа программеры-демописатели примените свои навыки к пользе дела - выдайте варианты наиболее оптимального кодинга!!
Добавлено через 2 минуты
в верхней G плоскости имеем две одинаковые половины, расположенные симметрично относительно диагонали. Т.е. над более красной и над более синей половинками RB плоскости фактически находятся идентичные G палитры, а суммируя нижнюю и верхнюю плоскости получаем результирующий цвет
Последний раз редактировалось Black_Cat; 28.02.2008 в 00:04. Причина: Добавлено сообщение
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Ответ на мыло (на счёт DMA для 16ц/256ц).
Готовая схема как не странно есть , и даже есть хоть какая то поддержка . Тема уже была в железе , Velesoft предлагал юзать уже стандартную примочку из MB02+ http://velesoft.speccy.cz/data-gear.htm . Подключение в стиле муз сопра , без всякой резни . Ацкий компаратор можно заменить на рассыпуху . Пулять можно хоть в мозг , хоть в порт .
Итого 865 килобайт за кадр (1/50) !!!
Кстати там уже появились не убитые ацким пожатием ролики всяких дёмок и сами дёмки , а так же есть куча портретов Z80-DMA .
Спек128 - испанская выдумка, навязанная Сэру Клайву. © Shaos
REAL HARDWARE MUST LIVE ! - http://SBLive.narod.ru/ZX-Spectrum/
865 кб за секунду, за фрейм всего лишь 17, но все равно круто.Итого 865 килобайт за кадр (1/50) !!!
сайт внимательно не читал, но вдруг там возможно составлять списки для DMA, типа
а не трансферить по-очереди, типаКод:ld hl, dmaList call loadListToDma call waitDma dmaList: db 1: dw A1, B1 ; db 1 - copy mem , dw A1,B1 - from A1 to B1 db 1: dw A2, B2 .... db 1: dw AN, BN db 0 ; db 0 - list end
...Код:ld hl,A1 : ld de,B1 : call dmaTransfer : call waitDma ld hl,A2 : ld de,B2 : call dmaTransfer : call waitDma .... ld hl,AN : ld de,BN : call dmaTransfer : call waitDma
то в общем можно было бы делать всяко-разно фреймовые скроллы и еще кучу полезностей
хотя я наверное опять мечтаю...
Упс , опять я разбежался
Добавлено через 2 минуты
Значит с турбой на DMA уже жить можно
Добавлено через 5 минут
Думаю верно мыслишь , качни ролики , там явно ван фрем .
Добавлено через 7 минут
Единсственный облом -
В www.chip-dip.ru Z84C1008PEG
Норма отпуска: 10 шт.
Цена в розничной сети, руб.: 290.00
И ещё ждать хе зе сколько...
Последний раз редактировалось fan; 28.02.2008 в 01:06. Причина: Добавлено сообщение
Спек128 - испанская выдумка, навязанная Сэру Клайву. © Shaos
REAL HARDWARE MUST LIVE ! - http://SBLive.narod.ru/ZX-Spectrum/
Ну вообще-то написано, что инкремент и декремент у источника или цели возможен, то есть перекинуть заранее сгенеренную табличку в порт вроде можно.
Вот только (кажись) дма ни в одном эмуляторе на данный момент не эмулируется.. Хотя мне кажется что применение ей найдётся и без расширенных экранов..
А на счёт фреймовости.. Даже при скорости 17кб/фрейм сложновато перекинуть 24 кб (размер экрана при режиме 256 цветов) за этот же фрейм..
Последний раз редактировалось key-jee; 28.02.2008 в 01:06.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)