PDA

Просмотр полной версии : Палитра 256 цветов



Black_Cat
20.02.2008, 17:32
Господа художники выскажите своё мнение по поводу побитовой раскладки цветов в байте для режима 256 color. Основной вопрос - это делать раздельные, независимые цвета, или общую яркость для rgb? Сейчас есть предложение:
g2 r2 g1 r1 b2 g0 r0 b1, а b0=b2&b1.
D7 - - - - - - - - - - - D0

или раскладка совместимая с 16 color режимом:
i1 i0 g1 r1 b1 g0 r0 b0

Обсуждение режима 256 color так же здесь: http://www.zx.pk.ru/showthread.php?p=120924#post120924
и здесь: http://www.zx.pk.ru/showthread.php?t=4767&page=7

DDp
20.02.2008, 18:34
Присоединяюсь к вопросу.
И сразу предлагаю по-тестировать различные варианты палитр (без ухода в технические разговоры). (RRRGGGBB. Различаются они в основном в линейности и в весе отчётов)
Какие палитры удобнее в использовании?

(Вообще, палитр можно насочинять много... на примете у меня есть ещё одна интересная)

Black_Cat
20.02.2008, 23:10
Не, тогда 8 уровней серого не получишь.

Тогда уж так (ненулевой критерий):
r0=((r2 or r1) and rb0) or (rb0 and not(r2 or r1 or b2 or b1))
b0=((b2 or b1) and rb0) or (rb0 and not(r2 or r1 or b2 or b1))

Правое в скобках нужно для учета ситуации, когда все старшие биты R=B=0. Кстати немножко наврал, для некоторых "чистых" цветов самый темный оттенок получится слегка "грязноватым", хотя вряд ли будет сильно заметно (2DDp: для gr0 - заметнее, просто ярче).
А вот чисто глобальный вопрос - а вообще какая 256я палитра нужна Спеку? А то чёт вас на серых оттенках зациклило.. а мож они вообще нафик нужны - для серого есть же режим W&3Greyscale per pixel или вообще Gigascreen+..

Lethargeek
21.02.2008, 01:19
На глобальный вопрос нужен глобальный ответ :)
(если меня на него хватит)

БК, ты че опять тем наплодил? одна как минимум лишняя!

Black_Cat
21.02.2008, 02:07
одна как минимум лишняянет, здесь о выборе палитры, в программировании об удобстве вычисления в зависимости от группировки битов в байте, в железе - о железной реализации всего этого, к тому же в железо художники и программисты не часто заглядывают..

fan
21.02.2008, 03:23
Всё , соченил накруткик палитры . А фиксированныю оставте как есть .

pulsar
21.02.2008, 21:23
поэкспериментировал с вот этой вот палитрой:


http://upload.wikimedia.org/wikipedia/en/9/93/256colour.png

делал картинки чтоб они максимально были похожи (как мне кажется) на то, что можно будет увидеть на спеке - т.е. со сканлайном увеличенные вдвое:


http://dl.filehoster.ru/files/89c7f68a69916db221b9055fdbe95f8b96fd6c799f6a23/Glass_Apples_Furumaru_.png (http://dl.filehoster.ru/files/5365e4c5a8133d50e3fc45be284bddc7d1425e63ffdb83/Glass_Apples_Furumaru.gif) http://dl.filehoster.ru/files/78fd2d96a0fd5ce8788a5da2c4b314fbce31f7d9da9120/d7de3daf54_.png (http://dl.filehoster.ru/files/dbffe664cb1fb2eaf1aaa1b1a1b18fad363d4ebd6b9495/d7de3daf54.gif) http://dl.filehoster.ru/files/7c6b3a86aa29585655b14759c04dfb87d795bd2e9ffeea/BERS_.png (http://dl.filehoster.ru/files/52ffe7035c5e36eae63a10c129b17f0a854daf727cd9ef/BERS.gif) http://dl.filehoster.ru/files/fb7d2d907783de68f8820bc2423374f9e5cb1a78d3a70a/8715908466_.png (http://dl.filehoster.ru/files/786ee787b2185959e6bf4e98c1424e8fdf4ef462302a57/8715908466.gif) http://dl.filehoster.ru/files/6abd8c0d9f514ba8ab3553b231f33a0ecacff380327b17/96db26ce7e_.png (http://dl.filehoster.ru/files/60fb07d6caa843e676d1a60a33bd7e3337ff12dfdebc85/96db26ce7e.gif) http://dl.filehoster.ru/files/d6d29ddc55d5b9bd28cb295ca1e6143fba200d252a4e88/TIGR_.png (http://dl.filehoster.ru/files/787f4ebcf28a556a09fd8f0dcb31c7da1fb072508abdfe/TIGR.gif) http://dl.filehoster.ru/files/35d58fad558710c07e9829ff08dbf6e4ba804c2bc7dd11/wallpaper_.png (http://dl.filehoster.ru/files/7ffd2f42566259e8ce722a24cab3f74783be7ddfcdef8d/wallpaper.gif) http://dl.filehoster.ru/files/9dfd4f8f80ca7fe80eb57dd1ecb3f68fe9241282b80a3a/Inkscape0.45_.png (http://dl.filehoster.ru/files/e4ff5f4ac352c8ea3e4bbe8bb5b1074629293491db3f05/Inkscape0.45.gif) http://dl.filehoster.ru/files/6bf2ef6ad04448dd9ea7ac2131c6d6a23eb59f55c4d591/9b782a3b75_.png (http://dl.filehoster.ru/files/5def5ffd823733da5f257ff326c12611ef76256c3e78e5/9b782a3b75.gif) http://dl.filehoster.ru/files/fcfe5d15061dd3e9d806fb094ab2550a75ed08eb9ea6f4/44b334c933_.png (http://dl.filehoster.ru/files/5dd5ff39db7e3ac05e7891ad26db775106778130d6b91b/44b334c933.gif) http://dl.filehoster.ru/files/ffb3779b841cd69ef68279c14205defce86c922d342d68/HAJIME_.png (http://dl.filehoster.ru/files/fdfd777e0bc3dbe8d6ade6a84cb3aea670ea5eab0cc68a/HAJIME.gif) http://dl.filehoster.ru/files/f7ff9299e774d5e98d9d9b4641b243f515918f4f7a4b9b/214056165rz8_.png (http://dl.filehoster.ru/files/18effbcd22f9feda0afedec864c15ad64fbffd5e3adfb2/214056165rz8.gif) http://dl.filehoster.ru/files/3efd4bc0539217e8dafc2f8801b35acab8d9c867d2097e/Simoun_13b.png_.png (http://dl.filehoster.ru/files/27b75cd5dd3109a2ebdb903971f9d5380291f1d052c6d5/Simoun_13b.png.gif) http://dl.filehoster.ru/files/76adcf711b2653983ea4d7cacb0386aa4085b2c56d5240/infernobm5_.png (http://dl.filehoster.ru/files/35fd4b557b1b15e8fa49715102b3cab9e1f69626343949/infernobm5.gif)

если честно мне пока 16 color режим даже больше нравится:v2_neutr: все же цвет на 2 пиксела это как-то не то... а еще лучше 2х экранная технология:v2_smile: вон как у риски на раворжи получилось (и это еще далеко не предел технологии:v2_thumb:).

DDp
21.02.2008, 21:26
А, пока рождается накрутчик, мы продолжим обсуждать палитры :v2_biggr:

Ещё парочка палитр.
"v3" - помесь R2G2B2 (64colors) и GrayScale16.

fan
21.02.2008, 23:52
поэкспериментировал с вот этой вот палитрой:
Паллитра кривая , серого нет...

А, пока рождается накрутчик, мы продолжим обсуждать палитры .
Нет ! Мы сделаем сменные картриджи с ЦАПами ! :v2_lol: :v2_lol: :v2_lol:

Короче всё это бред (ранее писал печему) . Накрутчик палитры делается просто и решает все проблеммы .

Black_Cat
22.02.2008, 11:20
если честно мне пока 16 color режим даже больше нравитсякак видно из того что получилось наиболее хорошо этот видеорежим подходит для пёстрых картинок, так например пара футуристичных картинок получилась вполне приемлемо, а тигр - просто замечательно, а вот картинки с равномерной заливкой - просто отвратительные, а ведь большинство компьютерных картинок именно такие.. Боюсь, что про тупое конвертирование таких картинок в этот режим можно забыть, либо конвертор сделать нормальный..

Накрутчик палитры делается просто и решает все проблеммы .в трёх словах что это такое написано здесь: http://www.zx.pk.ru/showpost.php?p=121134&postcount=22
Но не смотря на ражужные переспективы применения конвертора палитры в будущем, всёж лучше исходить из реалий и для начала ограничиться одной базовой палитрой, по выбору которой и хотелось бы придти к какому-то консенсусу. Поэтому прошу высказывать ваши идеи..

pulsar
22.02.2008, 13:11
с использованием вот этой палитры (более равномерная с большим количеством оттенков...):


http://ipicture.ru/uploads/080222/4234/b8ULP46Bu2.png

получились вот такие вот результаты:


http://ipicture.ru/uploads/080222/4234/thumbs/NiP5V4sA7B.gif (http://ipicture.ru/uploads/080222/4234/NiP5V4sA7B.gif) http://ipicture.ru/uploads/080222/4234/thumbs/Vqt3lcApYs.gif (http://ipicture.ru/uploads/080222/4234/Vqt3lcApYs.gif) http://ipicture.ru/uploads/080222/4234/thumbs/CZf4RnY4Zw.gif (http://ipicture.ru/uploads/080222/4234/CZf4RnY4Zw.gif)

много лучше вчерашних. что бы можно было как-то оценить палитру (^^^), можно индексировать относительно нее вот это изображение:


http://ipicture.ru/uploads/080222/4234/82DZVnLS4T.png

и еще, если использовать возможности накрутчика по максимуму можно получать, даже, такие изображения:


http://ipicture.ru/uploads/080222/4234/thumbs/OkUmClYb1K.gif (http://ipicture.ru/uploads/080222/4234/OkUmClYb1K.gif) http://ipicture.ru/uploads/080222/4234/thumbs/SEhPryg9n7.gif (http://ipicture.ru/uploads/080222/4234/SEhPryg9n7.gif) http://ipicture.ru/uploads/080222/4234/thumbs/Yvv4zgaZJc.gif (http://ipicture.ru/uploads/080222/4234/Yvv4zgaZJc.gif)

если рисовать в ручную, думаю все должно быть еще лучше, но нужно будет много эксперементировать. еще, не плохо бы придумать метод совмещения 256с режима и скажем стандартного спековского (хотябы на 2 части по горизонтали) - шрифты в этом (256c) режиме не очень хорошо будут смотреться и слишком мало символов в строку будет умещаться, а если продумать технологию (^^^) можно будет хотя бы текстовые гамы (аля "зеркало"/"звездное наследие" (на cd:v2_lol:)) делать...

Sinus
22.02.2008, 14:48
я думаю совместить можно без вопросов - типа как мультиколор делали, просто на нужной строке экрана отключить этот режи и включить, например, обычные 16colors.
только, конечно, надо какую-нибудь аппаратную поддержку этого, иначе такие плюшки будут отнимать всё процессорное время.

есть дикая идея по превращению спека в жалкое подобие амиги - берём RAM на 256 байт, первым 192 байтам памяти ставим в соответствие строки экрана, собственно каждый байт памяти будет хранить режим, в котором выводить строку.
ну а если взять памяти побольше, то можно там же хранить и базовый адрес строки экрана (для быстрых скроллов).
только надо чтоб это появилось хотя бы в Pentagon sl, иначе без аппаратной поддержки это не имеет смысла.

pulsar
22.02.2008, 14:53
я думаю совместить можно без вопросов - типа как мультиколор делали, просто на нужной строке экрана отключить этот режи и включить, например, обычные 16colors.
только, конечно, надо какую-нибудь аппаратную поддержку этого, иначе такие плюшки будут отнимать всё процессорное время.
вот, вот... сделать можно будет (почти точно если будет все это работать без тумблеров:v2_lol:), но метод аналогичный мультиколору не катит... надо что-то аппаратное!


только надо чтоб это появилось хотя бы в Pentagon sl, иначе без аппаратной поддержки это не имеет смысла.
:v2_thumb:

fan
22.02.2008, 17:19
с использованием вот этой палитры
Мэн ! Забей ! У нас всего восемь бит на всё , два канала можно кодировать тремя битами и один всего двумя . Попытки поменять "вес" от дефолтных накруток MSX , полнейшая бредятина , одно настроили = другое ушло . Бредово подгонять под любимые тона - у каждого свои любимые и каждый притащит тыщю картинок где его тона смотрятся круче .

Дитхеринг всёравно будет оптимально подбирать цвета для конвеченных картинок . Для одних хуже для других луче внезависимости от палитры .

Палитру в MSX не шланги делали . Она оптимальна для всего .



я думаю совместить можно без вопросов - типа как мультиколор делали, просто на нужной строке экрана отключить этот режи и включить, например, обычные 16colors.
Однозначно можно , хоть через строку . Но увы нельзя в середине экрана - проц стоит...


есть дикая идея по превращению спека в жалкое подобие амиги - берём RAM на 256 байт, первым 192 байтам памяти ставим в соответствие строки экрана, собственно каждый байт памяти будет хранить режим, в котором выводить строку.
Гы :D Ну ты просто гигамонстр ;) В рам есесно хронить ни чё не надо . Нужны какиенить регистры/компараторы которые бы следили бы за счётчиками и в нужный момент подтыкали бы нужный режим , можно даже запросто делать какое угодно окно ;)
Ну прям амижный копер получился :D
(Гы . Я такую хрень ещё под первую разновидость накрутчика палитры хотел сделать , чтоб при 16ц разные палитры подтыкать в разные части экрана).


только надо чтоб это появилось хотя бы в Pentagon sl, иначе без аппаратной поддержки это не имеет смысла.
Боюсь такая батва в матрицу Pentagon'а уже не влезит... Надо на девборды переходить .

Lethargeek
23.02.2008, 01:07
Палитру в MSX не шланги делали . Она оптимальна для всего .
Ржунимагу, "для всего"!! fan, прочитай ты разок ну хотя бы вики-статьи по особенностям зрения и способам кодирования цвета. :) "Нешланги" видать не особо горели желанием заморачиваться... правда потом зачем-то еще добавили всякие YJK извращения. :rolleyes:

fan
23.02.2008, 19:56
Дык YJK и прочее уже из другой оперы , это всего лишь режимы для экономии памяти при юзанье очень цветных картинок (смотрится страшновато).

Что касаеся восприятия цветов , то я совсем не уверен что можно накрутить из 3 3 2 чтонить сверх естественное чемц прям каждый будет рад .

Lethargeek
24.02.2008, 05:57
Что касаеся восприятия цветов , то я совсем не уверен что можно накрутить из 3 3 2 чтонить сверх естественное чемц прям каждый будет рад .
Есть объективные критерии, связанные с особенностями зрения. Задача - так распределить цвета на доступные 256 индексов, чтобы ничего сильно не выпирало.

fan
24.02.2008, 19:31
Задача - так распределить цвета на доступные 256 индексов, чтобы ничего сильно не выпирало.
Пока результаты не радуют .

bigral
25.02.2008, 00:41
Пока результаты не радуют .

По-моему не в цвете дело - разрешение маленькое, под экран мобильника максимум покатит. А под телик даже если там будет каждая точка 24bit будет коряво.

fan
25.02.2008, 02:04
Я имел ввиду картинку с палитрой .
Разрешение вполне нормальное , аля комодор/атари (только слегка обрезанное %) (на матрицовом пентагоне можно и аналогичное сделать)).

bigral
25.02.2008, 13:53
Разрешение вполне нормальное

Может это мое субьективное восприятие НО! мне страшно бросаются в глаза точки в виде прямоугольников или овалов. А вот идиальные квадратики или круги (может даже шестиугольники или восьмиугольники? ) сливаются в мозаике очень хорошо. Так что скорее в данном режиме оптимальность палитры не будет иметь решающей роли. Это легко проверить - представте себе что там доступны 16 миллионов цветов и попробуте сконвертировать в этот режим фотографии.

breeze
25.02.2008, 14:16
Может это мое субьективное восприятие НО! мне страшно бросаются в глаза точки в виде прямоугольников или овалов.

Аналогично! именно по этой самой причине мне не нравится графика в C64 и ATARI, я не хочу такое на ZX хоть с 2 миллиардами цветов, и по этой самой причине даже не хочу принимать участие в обсуждении, как следствие поддерживать программно, сорри но не стану :dizzy_mad_old:

fan
25.02.2008, 17:11
Ну не знаю , основной касяк только со спрайтами (шибко низкая детализация), но для задних планов просто замечетельно и уж точно лучше чем мусор из пикселей 16ц при использовании/не использовании дитхеринга .

Sinus
25.02.2008, 19:49
breeze, позволю себе не согласится.
графика на комондоре просто изумительная,
а вот поганый дизеринг, хоть 2c, хоть 16c - это отстой.

Lethargeek
25.02.2008, 20:28
графика на комондоре просто изумительная,
Не в последнюю очередь благодаря хитрому подбору 16 фиксированных цветов (ряд не по яркости, а по насыщенности). Хотя он тоже неидеален - особенно достает отсутствие нормального красного цвета.

key-jee
25.02.2008, 22:41
Ну не знаю , основной касяк только со спрайтами (шибко низкая детализация), но для задних планов просто замечетельно и уж точно лучше чем мусор из пикселей 16ц при использовании/не использовании дитхеринга .

Вообще-то, основной косяк не со спрайтами, а с шрифтами.. Потому что любая системная программа без сообщений - это недоразумение, да и в играх появилась тенденция к увеличению текстовой информации.. А для демостроя проще уж тогда именно чанки/дизеринг использовать.. или тот же мультиколор.

Black_Cat
25.02.2008, 22:51
косяк не со спрайтами, а с шрифтами.. Потому что любая системная программа без сообщений - это недоразумение, да и в играх появилась тенденция к увеличению текстовой информации.. имхо режим не для каждой игры, и тем более совсем не для системных программ. Как я понимаю основное применение - заставки в играх и мож ещё некоторое подобие демок и чего-то подобного. На счёт возможности использования в разных жанрах игр судить не берусь, но во всяких тетрисах, колорлайнах, паззлах и прочих головоломках режим имхо вполне юзабельный.

fan
26.02.2008, 01:09
Вообще-то, основной косяк не со спрайтами, а с шрифтами..
Один чёрт , малаля детализация для маленьких объектов . (хотя на атари и комодоре люди живут). Но как раз ради шрифтов в играх можно переключаться обратно в 16с (на необходимых строках) .

Что касается игр аля комодор/атари то товарищ Lethargeek наверное лучше меня снабдит примерами вменяемых спрайтов . А я однозначно советую глянуть Creatures 2: Torture Trouble (http://www.lemon64.com/?mainurl=http%3A//www.lemon64.com/games/details.php%3FID%3D561). Задники и спрайты просто чудо :) С большим количеством оттенков будет ещё лучше ;)

bigral
26.02.2008, 01:23
Задники и спрайты просто чудо :) ;)

задний план был бы просто супер если бы точки были квадратиками а так "растянутый ужас" а спрайты как раз нормальные и не растянутые. dithering тут конечно супер.

fan
26.02.2008, 02:47
Дык спрайты как раз такие же ;) Хотя местами используется "хайрес".
(Ещё крупные картинки - http://www.mobygames.com/game/c64/creatures-2-torture-trouble/screenshots)

breeze
26.02.2008, 10:02
а вот поганый дизеринг, хоть 2c, хоть 16c - это отстой.

ну дезеринг по дефолту отстой ;) хотя грамотно расставленные пикселя, формирующие оттенки, смотрятся сносно... просто не вижу смысла долбаться столько времени, что бы сделать то что было у других лет 15 назад :( что-то я не припомню что бы на AMIGA была система сдвоенных пикселей при 256 цветах...

просто из тех картинок что тут выкладывались в качестве примера, что-то не очень впечатлило... :dizzy_mad_old: уменьшенное казалось суперским, а открываешь нормальный размер и... :sleep:

ну в любом случае отговаривать никого не хочу, вам интересно, почему бы нет... :rolleyes:

Sinus
26.02.2008, 14:47
просто не вижу смысла долбаться столько времени
уже давно сделано :)
1 (одна) микросхема если мне память не изменяет.

breeze
26.02.2008, 15:29
уже давно сделано :)
1 (одна) микросхема если мне память не изменяет.

круто :) а я пока пофаную от 16 колорз ;)

DDp
26.02.2008, 20:51
(Мой "пять копеек" в пользу режима)
Режим может оказаться востребованным при работе с видео.
Как минимум - ремейк TimeGal под этот режим.

Клип (http://zxpk.untergrund.net/downloads.php?id=99) (~5Mb) AVI; сжатие без потерь; кодек MS Video 1 (msvc).
(Это конечно только чтоб прикинуть - нужно конвертировать из исходного клипа)

P.S. Палитра от Lethargeek-а.

Black_Cat
26.02.2008, 21:20
Режим может оказаться востребованным при работе с видео.
Как минимум - ремейк TimeGal под этот режим.
класс.. понравилось :) шикарная палитра!

pulsar
26.02.2008, 22:12
класс.. понравилось :) шикарная палитра!
если уж смотреть:


http://ipicture.ru/uploads/080226/4234/thumbs/TBsZU5ltU1.png (http://ipicture.ru/uploads/080226/4234/TBsZU5ltU1.png) http://ipicture.ru/uploads/080226/4234/thumbs/rMQY3R62CK.png (http://ipicture.ru/uploads/080226/4234/rMQY3R62CK.png) http://ipicture.ru/uploads/080226/4234/thumbs/kt1KTVvC1E.png (http://ipicture.ru/uploads/080226/4234/kt1KTVvC1E.png) http://ipicture.ru/uploads/080226/4234/thumbs/paR94E44NJ.png (http://ipicture.ru/uploads/080226/4234/paR94E44NJ.png)

все так же нравится?!:v2_conf2:

Lethargeek
26.02.2008, 22:13
Кстати реальное преимущество именно фиксированной палитры - видео можно пожать похитрее (тогда как накрутчик в данном случае только все усложняет).

pulsar
26.02.2008, 22:15
с картинками почти ничего не делал (увеличил в двое и добавил сканлайн) чтоб на спек похоже стало, а исходную мелкотню увидеть будет все равно почти не реально:v2_neutr:

Добавлено через 2 минуты

видео.

видео
:v2_jawdr: в железе какая-то поддержка планируется? а иначе все это мечты мечты...

Lethargeek
26.02.2008, 22:39
в железе какая-то поддержка планируется? а иначе все это мечты мечты...
21MHz Z80? ;)

А вообще АТМ-ка же вон худо-бедно в окошке тянет... а там ведь из-за палитры можно жать только целыми кадрами емнип.

pulsar
26.02.2008, 22:59
21MHz Z80? ;)
как вроде затевалось чтоб на дефолтном спеке было, а так это дальше опытного образца пожалуй не пойдет:v2_conf2:, да, что-то не очень то слышал чтоб 21MHz проц к спеку цепляли...

fan
27.02.2008, 00:07
21MHz Z80?
Рецептов конечно под каждый конкретный клон никто сочинять не будет .
Тады уж лучше DMA контроллер прицепить или какуюнить хрень выполняющую его функцию . Ибо цеплять такую штуку можно к любому спеку (так же как и видео контроллер :D ).

Black_Cat
27.02.2008, 00:11
в железе какая-то поддержка планируется? а иначе все это мечты мечты...
о какой поддержке речь? Принцип подключения к 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&not(r2+r1+b2+b1));
b0=((b2+b1)&rb0)+(rb0&not(r2+r1+b2+b1));

или:

r0=rb0&((r1+r2)+not(b1+b2));
b0=rb0&((b1+b2)+not(r1+r2));

Ниже слева RB плоскость из 64 ячеек, а справа - та же плоскость после выкалывания 32 дырок:

Lethargeek
27.02.2008, 00:49
1) берём две плоскости 8х8 и располагаем одна над другой;
2) на нижней по двум координатам откладываем значение R и B, на верхней - по обеим координатам значение G.
Чавой-то ты БК намудрил, не пугай народ, :) это три обыкновенных координатных оси GRB, или кубик из 8 нарисованных дырчатых плоскостей RB0-RB7, расставленных по возрастанию уровня зеленого (на данном конкретном рисунке - RB0, зеленый выключен).

Black_Cat
27.02.2008, 00:52
это три обыкновенных координатных оси GRB, или кубик из 8 нарисованных дырчатых плоскостейкубик дырчатый не нагляден, его труднее представить чем две плоскости дырчатые :)

Lethargeek
27.02.2008, 00:52
А побитовая раскладка - отдельный вопрос, мож правда кому нагляднее GGGRRBB(rb), хотя GRBGRBG(rb) удобнее, если например надо быстро яркость оценивать.

Добавлено через 3 минуты

кубик дырчатый труднее представить, чем две плоскости дырчатые
Я ваще не смог представить, зачем на верхней плоскости по обеим осям G откладывать??? :v2_wacko:

Добавлено через 5 минут
Кубик нагляден, если просто 8 квадратиков рядом нарисовать ;)

Black_Cat
27.02.2008, 00:58
мож правда кому нагляднее GGGRRBB(rb), хотя GRBGRBG(rb) удобнее, если например надо быстро яркость оценивать.во-во-во.. с этого места, и с примерами максимально быстрого кода пожалуйста.. при каккой раскладке можно сочинить наиболее быструю процедурку..
..господа программеры-демописатели примените свои навыки к пользе дела - выдайте варианты наиболее оптимального кодинга!!

Добавлено через 2 минуты

Я ваще не смог представить, зачем на верхней плоскости по обеим осям G откладывать???
в верхней G плоскости имеем две одинаковые половины, расположенные симметрично относительно диагонали. Т.е. над более красной и над более синей половинками RB плоскости фактически находятся идентичные G палитры, а суммируя нижнюю и верхнюю плоскости получаем результирующий цвет :)

fan
27.02.2008, 23:34
... DMA контроллер ...
Ответ на мыло (на счёт DMA для 16ц/256ц).

Готовая схема как не странно есть , и даже есть хоть какая то поддержка . Тема уже была в железе , Velesoft предлагал юзать уже стандартную примочку из MB02+ http://velesoft.speccy.cz/data-gear.htm . Подключение в стиле муз сопра , без всякой резни . Ацкий компаратор можно заменить на рассыпуху . Пулять можно хоть в мозг , хоть в порт .

Итого 865 килобайт за кадр (1/50) !!!

Кстати там уже появились не убитые ацким пожатием ролики всяких дёмок и сами дёмки , а так же есть куча портретов Z80-DMA .

Sinus
28.02.2008, 00:36
Итого 865 килобайт за кадр (1/50) !!!

865 кб за секунду, за фрейм всего лишь 17, но все равно круто.
сайт внимательно не читал, но вдруг там возможно составлять списки для 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


...

то в общем можно было бы делать всяко-разно фреймовые скроллы и еще кучу полезностей
хотя я наверное опять мечтаю...

fan
28.02.2008, 00:46
865 кб за секунду
Упс , опять я разбежался :D

Добавлено через 2 минуты

за фрейм всего лишь 17
Значит с турбой на DMA уже жить можно :)

Добавлено через 5 минут

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

Добавлено через 7 минут
Единсственный облом -

В www.chip-dip.ru Z84C1008PEG
Норма отпуска: 10 шт.
Цена в розничной сети, руб.: 290.00

И ещё ждать хе зе сколько...

key-jee
28.02.2008, 01:01
865 кб за секунду, за фрейм всего лишь 17, но все равно круто.
сайт внимательно не читал, но вдруг там возможно составлять списки для 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,AN : ld de,BN : call dmaTransfer : call waitDma


...

то в общем можно было бы делать всяко-разно фреймовые скроллы и еще кучу полезностей
хотя я наверное опять мечтаю...

Ну вообще-то написано, что инкремент и декремент у источника или цели возможен, то есть перекинуть заранее сгенеренную табличку в порт вроде можно.
Вот только (кажись) дма ни в одном эмуляторе на данный момент не эмулируется.. Хотя мне кажется что применение ей найдётся и без расширенных экранов..

А на счёт фреймовости.. Даже при скорости 17кб/фрейм сложновато перекинуть 24 кб (размер экрана при режиме 256 цветов) за этот же фрейм..

fan
28.02.2008, 01:05
Собсно есть DMA контроллеры более доступные 8237 82C37 (КР1810ВТ37) (Более древний вариант I8257 (КР580ВТ57 , КР580ИК57)) , но не совместимые с зилоговскими .

В www.chip-dip.ru
P8237A-5_____________- 19,00 (на заказ)
(8257P-5 (КР580ВТ57) ____ - 75,00)

Иифа по 8237 82C37 (КР1810ВТ37) на русском есть в нете , а так же в описании DMA USC .
Добавлено через 3 минуты

Даже при скорости 17кб/фрейм сложновато перекинуть 24 кб (размер экрана при режиме 256 цветов) за этот же фрейм..
Думаю это скорость для не разогнаного DMA , если юзать клок на 7(8)мгц , то как раз получится в два раза больше .

VELESOFT
28.02.2008, 20:56
А на счёт фреймовости.. Даже при скорости 17кб/фрейм сложновато перекинуть 24 кб (размер экрана при режиме 256 цветов) за этот же фрейм..

DMA transfer speed of my DATA-GEAR interface is 17kB/sec for Z80 CPU at 3.5MHz. Clock for DMA chip is used from Z80CPU socket. If turbo mode is used, DMA transfer speed is accelerated too. In 7MHz turbo mode (if your ZX support turbo) can be transfer 34kB/frame. But ZX Spectrum and other ZX clones slow-down CPU when memory operations is used with videoram.

fan
29.02.2008, 00:00
Если ещё учитывать что при данной реализации 16ц/256ц проц стоит , то пулучается ещё веселей %)

fan
02.03.2008, 20:23
Случйно наткнулся на дизи в 128х192 - http://www.cpczone.net/index.php?game=286
Раскраска жудкая (но веселей чем на С64), но спраты нормально смотрятся .
Ещё за компанию -
http://www.lemon64.com/?mainurl=http%3A//www.lemon64.com/games/details.php%3FID%3D671 Demon's Kiss и спратики и задники не плохо сделаны
http://www.lemon64.com/?mainurl=http%3A//www.lemon64.com/games/details.php%3FID%3D669 Demon Blue не чё так задники нарисованы (палитра шибко кислотная)
http://www.lemon64.com/?mainurl=http%3A//www.lemon64.com/games/details.php%3FID%3D693 Defenders of the Earth чисто для сравнения с
http://www.simcoupe.org/images/screens/defendersoftheearth.png (тут цвета конечно повеселей)
http://www.lemon64.com/?mainurl=http%3A//www.lemon64.com/games/details.php%3FID%3D618 Dan Dare III: The Escape Спрайты не плохо сделаны .

Black_Cat
02.03.2008, 20:35
..да уж.. картинки лучше не увеличивать.. режим явно не приспособлен для мелких изображений

VELESOFT
03.03.2008, 00:27
If R,G,B,BRIGHT signals from ULA is connect to adress bus A0-A3 on sram memory with palette, data output from SRAM is possible use as new ZX palette. SAM COUPE use same resolution 256x192/16 colours, but each ZX colour can be set as 7bit RGB value. This palette interface can be used on any ZX clone.:v2_yahoo:
I can make this palette interface.

examples of SAM COUPE graphics(256x192/16 colour per pixel with palette):
http://www.worldofsam.org/flexinode/termstable/3/5
http://www.worldofsam.org/files/active/0/EFTPOTRMmain.png
http://www.worldofsam.org/files/active/0/DoEboss.jpg
http://www.worldofsam.org/files/active/0/klax.jpg
http://www.worldofsam.org/files/active/0/lemrun.png
http://www.worldofsam.org/files/active/0/snap0024.png
http://www.worldofsam.org/files/active/0/Sophistry%20-%20loading%20screen.png
http://www.worldofsam.org/files/active/0/snap0087.png

SAM COUPE: ZX mode with hardware multicolour + palette:
http://www.worldofsam.org/files/active/4/snap0005.png

videos:
http://www.youtube.com/results?search_query=sam+coupe&search_type=

VELESOFT

tae1980
11.10.2019, 09:34
Вопрос по палитре 256 цветов RGB 773.
Как правильно изменять яркость цвета в такой палитре?
Есть цвет, например 050, нужно получить цвет ярче или темнее него.

NEO SPECTRUMAN
19.10.2019, 18:27
Вопрос по палитре 256 цветов RGB 773.
Как правильно изменять яркость цвета в такой палитре?
Есть цвет, например 050, нужно получить цвет ярче или темнее него.
тут проблема что один цвет 2-х битный
и лучший результат будет ручками

второй вариант забить на младшие биты 3 битных цветов
и делать
+2 +2 +1
-2 -2 -1
по таблице проще всего
при этом не будет меняться оттенок
но количество градаций весьма сократиться


если нужно плавное затемнение\осветление
можно попробовать затемнять осветлять как то так
*-1 *** **
*** *-1 **
*-1 *** **
*** *-1 **
*** *** -1
*-1 *** **
*** *-1 **
*-1 *** **
*** *-1 **
*** *** -1
опять же
проще будет по 3-м таблицам

оттенки будут слегка играть при этом в процессе
но градаций получиться много
и если делать быстро (думаю не больше 2\3 фреймов на каждую "якрость")
то должно прокатить

для большей скорости можно 4 таблицы (если не палитра а 1 байт на пиксель например)

*-1 *** ** таблица 2
*** *-1 ** таблица 3
*-1 *** ** таблица 2
*** *-1 ** таблица 3
*** *** -1 таблица 4
*** *-1 ** таблица 3
*-1 *** ** таблица 2
*** *-1 ** таблица 3
*-1 *** ** таблица 2
*** *** -1 таблица 1


а так еще нужно смотреть как интерпретируется младший (3-й хардварный бит (если он есть))
2-х битного цвета
тк вариантов может быть много

tae1980
20.10.2019, 00:41
NEO SPECTRUMAN, Вроде нашел решение, но заточенное под мой случай.
У меня кроме палитры 8bpp (rgb 773) есть исходная палитра 24bpp. Цвет из палитры 24bpp переводим в формат YCbCr, изменяем яркость и переводим обратно в RGB.
Но решение считаю частичным, так что продолжаю поиск изменения яркости внутри палитры 8bpp.
Минусом данного решения является необходимость наличия палитры 24bpp, и более того если необходимо последовательное изменения цвета, то цвет в палитры 24bpp должен оставаться оригинальным (незатронутый конверсией в 8bpp).


Y=Trunc( 0.299 * rrr + 0.587 * ggg + 0.114 * bbb) /* канал яркости */
Cb=Trunc(-0.1687 * rrr - 0.3313 * ggg + 0.5 * bbb + 128.0)
Cr=Trunc( 0.5 * rrr - 0.4187 * ggg - 0.0813* bbb + 128.0)

if ?bright=1 then Y=Y+36 /* Светлее */
else Y=Y-36 /* Темнеее */

rrr=Trunc(Y + 1.402 * (Cr - 128.0))
if rrr>255 then rrr=255
else if rrr<0 then rrr=0
ggg=Trunc(Y - 0.34414 * (Cb - 128.0) - 0.71414 * (Cr - 128.0))
if ggg>255 then ggg=255
else if ggg<0 then ggg=0
bbb=Trunc(Y + 1.772 * (Cb - 128.0))
if bbb>255 then bbb=255
else if bbb<0 then bbb=0

rrr8=format(rrr*(7/255),,0) /* 24bpp в 8bpp */
ggg8=format(ggg*(7/255),,0) /* format - округление до целого */
bbb8=format(bbb*(3/255),,0)

так же обращу внимание, что в "идеальном" случае получается только 9 шагов смещения. "Идеальным" случаем это когда составные R и G равны. А вот если внести поправку = 16 в 24bpp в одну из составляющих, получиться 18 шагов (в 8 Bpp).

NEO SPECTRUMAN
20.10.2019, 01:04
есть исходная палитра 24bpp. Цвет из палитры 24bpp переводим в формат YCbCr, изменяем яркость и переводим обратно в RGB.
раз у тебя есть 24 бит цвет
проще тогда повышать понижать яркость просто умножением каждой компоненты на один и тот же коэфициент...

можно просто отнимать\прибавлять к каждой компоненты одно и то же число
тоже интересный эффект


а так я думал тебе нужно яркостить прям на спектруме...

tae1980
20.10.2019, 10:57
а так я думал тебе нужно яркостить прям на спектруме...
Это тоже нужно. Но уже как самостоятельная задача. Например, изменение освещения "на лету". Здесь можно выделить особенность в том, что "шагов" в будет мало (1 или 2). И эту задачу можно решать "в лоб".
Хотя универсальный вариант всё равно буду подбирать и внедрят в программах (пока хочу вставить в свой вьювер "sea").
Кроме того появилась возможность на основе карт изменения цветов при работе с 24bpp (получается несколько вариантов), подбирать значения для решения узких задач.