PDA

Просмотр полной версии : От чёрного к белому (схема, код)



Hammer
27.06.2024, 19:21
Приветики!

Хочу поделиться с вами схемой, которая добавляет РК градации серого цвета.

Поскольку в РК ширина символа составляет 6 точек, остаётся два неиспользуемых бита. Эти биты подходят для реализации схемы градаций серого. В левом нижнем углу таблицы символов видно, как заполняются эти биты. В символе каждая линия может иметь свою градацию серого.

https://zx-pk.ru/attachment.php?attachmentid=80934&d=1719503047

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

https://zx-pk.ru/attachment.php?attachmentid=80936&d=1719503872

Младший бит приглушает яркость пикселей, старший бит повышает яркость фона. Принцип, как на Спектруме, на одно знакоместо две яркости для чернил, две яркости для бумаги. Тем не менее, имея две дополнительных яркости можно рисовать различимые портреты для разрешения 128х64.

https://zx-pk.ru/attachment.php?attachmentid=80938&d=1719504386

Конвертер картинок: https://vtub.me/86rk/grayscale.html - забирайте на свои сайты, это временный адрес.

Но картинки - не самая сильная сторона схемы, схема создавалась для улучшения графики в играх. Я точно буду писать под неё всякое.

Схема очень простая, в этом заключается её сильная сторона. Я смог собрать всё воедино не имея даже программатора, с аскетичным набором инструментов. Вместо ОЗУ в РК Киселёва втыкал энергонезависимую память DS1244Y, загружал шрифт с магнитофона, потом через переходник втыкал её вместо ПЗУ шрифта.

https://zx-pk.ru/attachment.php?attachmentid=80935&d=1719502197

В разработке активно помогали Барсик, Ведущий Специалист и Руслан Аликберов. Буду рад тестам, предложениям и дополнениям!

inozemcew
06.07.2024, 23:20
Каким образом переключаете половинки знакогенератора?

Hammer
06.07.2024, 23:24
У меня на РК Киселёва знакогенератор переключается атрибутом GPA0. В других схемах видел аналогичное переключение.

Hammer
13.08.2024, 18:50
Собрал схему на втором РК, уже с нормальным ПЗУ. Запустилась сразу, даже резисторы подбирать не пришлось. Шрифт изменил по результатам различных тестов на своих программах. Исправил ошибку в конвертере картинок.

https://zx-pk.ru/attachment.php?attachmentid=81122&d=1723564028

https://zx-pk.ru/attachment.php?attachmentid=81123&d=1723564103

81124

Hammer
29.08.2024, 23:17
Понемногу изучаю получившуюся железку и набор символов:

https://zx-pk.ru/attachment.php?attachmentid=81181&d=1724962513

Alex_LG
30.08.2024, 18:03
Что за "РК Киселёва"?

Если использовать биты 6 и 7 не просто как яркость "чернил" и "бумаги", а использовать как градации яркости пикселя, то получим 4-ре градации белого + черный:
https://i.postimg.cc/YhrNfQm0/Clipboard01.jpg (https://postimg.cc/YhrNfQm0)
В связке с теневым знакогенератором на ОЗУ https://zx-pk.ru/threads/20714-pomechtaem-ili-vopros-o-videovykhode.html?p=713206&viewfull=1#post713206 (схему растащили в новоделы и, изменив немного элементную базу, выдают за свою идею:confused: ) можно делать неплохую "раскраску" игр.

Hammer
30.08.2024, 18:37
Что за "РК Киселёва"?

https://github.com/skiselev/radio-86rk


Если использовать биты 6 и 7 не просто как яркость "чернил" и "бумаги", а использовать как градации яркости пикселя, то получим 4ре градации

Я так изначально и сделал, но сразу же отказался от этой идеи т.к. в этом случае в знакоместе нельзя использовать одновременно две градации серого. Можно серый и черный. Из-за этого те же самые портреты уже не нарисовать. Либо придётся делать знакогенератор со всеми вариантами серого. От этой идеи я тоже отказался из-за "дороговизны" вычислений. Ну и я в далёком прошлом спектрумист, клэшингом меня не напугать.

В результате получился удобный для программирования ЗГ, очень простая схема, которая вполне могла появиться ещё на этапе разработки самого РК.

Про вашу схему:

https://i.postimg.cc/L6fyST9t/Clipboard01.jpg

Этой схеме всё равно нужен либо триггер, либо регистр, иначе "серить" будет не текущее знакоместо, а предыдущее. А значит уже надо будет два корпуса. Схема получится более громоздкая.


В связке с теневым знакогенератором на ОЗУ можно делать неплохую "раскраску" игр.

Я реально прям жду некую плату, которую можно легко прикрутить к РК. Самым простым вариантом была бы двухпортовая память, у которой один порт стандартный, а второй I2C. Заливать данные по I2C через ВВ55 я научился, даже ардуиновые экраны можно использовать. Если интересно обсудить, вэлкам в группу по QR коду на картинке со схемой.

Сложную схему не хочу, потому что многие полноцветные TFT экраны до сих пор имеют интерфейс i8080. Уж проще на них перейти, как на второй монитор.

Alex_LG
30.08.2024, 21:08
Я так изначально и сделал, но сразу же отказался от этой идеи т.к. в этом случае в знакоместе нельзя использовать одновременно две градации серого. Можно серый и черный.

Немного не понял. Почему нельзя в одном знакоместе использовать разные оттенки!? Можно задавать каждой строке в знакоместе свою градацию белого от 25% до 100%, черный - это отдельный цвет. Например, вот так будет в памяти записан квадрат с градациями от белого до черного по вертикали:


D7 D6 D5 D4 D3 D2 D1 D0

0 0 1 1 1 1 1 1 - 100% белая полоса
1 0 1 1 1 1 1 1 - 75% белая полоса
1 0 1 1 1 1 1 1 - 75% белая полоса
0 1 1 1 1 1 1 1 - 50% белая полоса
0 1 1 1 1 1 1 1 - 50% белая полоса
1 1 1 1 1 1 1 1 - 25% белая полоса
1 1 1 1 1 1 1 1 - 25% белая полоса
х х 0 0 0 0 0 0 - черная полоса

Конечно, если знакогенератор держать в ПЗУ, то нужно тысячи вариантов, а вот если вместо ПЗУ использовать ОЗУ, то проблем нет.




Я реально прям жду некую плату, которую можно легко прикрутить к РК. Самым простым вариантом была бы двухпортовая память, у которой один порт стандартный, а второй I2C.

Простая плата есть, ссылку на схему я дал, проще некуда, в самом РК практически ничего не переделывается - пару разрезов, всё остальное паяется сверху. Любую "некую плату", даже если делать по Вашему варианту (двухпортовая память и запись через ВВ55), все равно нужно как-то "прикрутить" вместо ПЗУ, а это нужно все равно паять...




Этой схеме всё равно нужен либо триггер, либо регистр

Не вопрос, триггер Вы уже поставили ;)
+1 корпус не сильно усложняет схему...

Hammer
30.08.2024, 22:04
Немного не понял. Почему нельзя в одном знакоместе использовать разные оттенки!? Можно задавать каждой строке в знакоместе свою градацию белого от 25% до 100%, черный - это отдельный цвет.


Конечно, если знакогенератор держать в ПЗУ, то нужно тысячи вариантов, а вот если вместо ПЗУ использовать ОЗУ, то проблем нет.

Не получится поставить белый (или серый, или чёрный) псевдопиксельный квадратик в углах знакоместа, если фон будет отличаться от черного. А для картинок нужно обязательно иметь такую возможность. Т.е. количество оттенков больше, но разрешение падает.


Простая плата есть, ссылку на схему я дал, проще некуда

Я подожду когда (если) её можно будет купить в готовом виде. Я попробовал программируемый ЗГ на Пальмире - восторг, страшной силы вещь! Хочу, но самостоятельно собрать пока не готов. Было бы здорово, если бы плата втыкалась в панельку родного ПЗУ, так сразу можно от кучи проводов избавиться.


+1 корпус не сильно усложняет схему...

Для кого как. Я две РКшки на покупных платах спаял с огромным трудом. Не у всех есть скилл, время и нужные инструменты.

Ведущий_специалист
30.08.2024, 23:24
В связке с теневым знакогенератором на ОЗУ https://zx-pk.ru/threads/20714-pomechtaem-ili-vopros-o-videovykhode.html?p=713206&viewfull=1#post713206 (схему растащили в новоделы и, изменив немного элементную базу, выдают за свою идею:confused: ) можно делать неплохую "раскраску" игр.

Прости дружище... но если прям копнуть историю, то ноги растут отсюда..http://radioliga.com/RL_1994/rl-1994-09.htm 6 7 страницы. Где то в 95-96 году с братом собирали в кр03 уже немного доработав, поствив ру10... Поэтому про "свою идею" абсолютно никаких разговоров.. А уж тем более каких то копирайтов ))).

Alex_LG
31.08.2024, 01:25
Не получится поставить белый (или серый, или чёрный) псевдопиксельный квадратик в углах знакоместа, если фон будет отличаться от черного.

Опять не понял. Как может фон отличатся от черного если он всегда черный.

- - - Добавлено - - -


Прости дружище... но если прям копнуть историю, то ноги растут отсюда..http://radioliga.com/RL_1994/rl-1994-09.htm 6 7 страницы. Где то в 95-96 году с братом собирали в кр03 уже немного доработав, поствив ру10... Поэтому про "свою идею" абсолютно никаких разговоров.. А уж тем более каких то копирайтов ))).

Я не про саму идею использования ОЗУ вместо ПЗУ в знакогенераторе, идея была давно и на основе этой идеи я и делал свое решение. И решения были до меня, но не очень простые - одно из них в Радиолюбителе (к стати, эту схему я увидел намного позже после публикации своей). Я имел ввиду именно реализацию - принцип работы, схемотехнику и простоту реализации. Я не претендую ни на копирайты ни на отчисления :) Ну хотя бы упомянули, что брали за основу, что ли...

Hammer
31.08.2024, 07:02
Опять не понял. Как может фон отличатся от черного если он всегда черный.

Ну вот у меня фон знакоместа может быть чёрным, а может быть серым. Поэтому на сером или черном фоне я могу рисовать белыми или не очень белыми пикселами. Благодаря этому так же можно использовать дизеринг и сглаживать гребёнку белых пикселей. Это видно на градиенте слева (белый пиксель/черный фон, серый пиксель/черный фон, серый пиксель/серый фон, белый пиксель/серый фон):

https://zx-pk.ru/attachment.php?attachmentid=81185&d=1725076907

Т.е. в вашей схеме можно только приглушать белый цвет на несколько ступеней, но всегда будёт чёрный фон. У меня можно приглушить белый на одну ступень, и осветлить черный фон на одну ступень. Тогда можно рисовать на сером фоне белым или приглушённым белым.

Hammer
31.08.2024, 09:18
Не вопрос, триггер Вы уже поставили ;)
+1 корпус не сильно усложняет схему...

Нашёл предыдущую схему и хороший пример. Вот те же затемнения белого без мультиплексора и уже без запаздывания раскраски:

https://zx-pk.ru/attachment.php?attachmentid=81186&d=1725084694

Детализация падает из-за невозможности рисовать на фоне, отличном от черного:

https://zx-pk.ru/attachment.php?attachmentid=81187&d=1725084991

В итоге переделал на две яркости для чернил, и две яркости для бумаги. С программируемым ЗГ детализация картинок ещё возрастёт.

Alex_LG
31.08.2024, 18:20
Детализация падает из-за невозможности рисовать на фоне, отличном от черного:
У Вас при любом раскладе всего 3-ри оттенка белого и черный, я же предложил схему где 4-ре оттенка белого и черный: установленный бит (D5-D0) в символе - это уже белый, а старшие биты (D7-D6) задают градации этого белого. Если какой-то бит D5-D0 в нуле - это черный, т.е. просто темный фон. Таким образом больше сглаживания по вертикали, а по горизонтали можно использовать дизеринг размером в 1 пиксель.

Hammer
31.08.2024, 18:40
Теперь я не могу понять, чем ваш метод лучше. Хорошо бы примеры картинок увидеть.

Alex_LG
01.09.2024, 00:30
Я же написал, что лучше тем, что 4-ре градации белого против 3-х. Примера нет, так как это теория, да и живого РК нет. Картинку, разве что, в фотошопе могу сделать как пример. ;)

Hammer
07.09.2024, 22:18
Схема дорабатывается для более точных таймингов, а пока рисуется настроечная таблица:

https://zx-pk.ru/attachment.php?attachmentid=81222&d=1725736669

Hammer
28.09.2024, 12:47
Схема с более точными таймингами. И два варианта видеовыхода, которые точно не глючат на современных телевизорах/мониторах. Нет срывов синхронизации, изменения яркости, повышаются контраст и резкость.

Но надо убедиться тестером, что в мониторе стоит терминатор 75 Ом. Я пользуюсь первым вариантом, перепаял прям на плате. С тремя мониторами и картой захвата работает отлично, с телевизором возможны флуктуации. Но для телека можно настроить второй вариант, возможно придётся подобрать резистор 470 Ом +/- 30 Ом.

https://zx-pk.ru/attachment.php?attachmentid=81400&d=1728841905 https://zx-pk.ru/attachment.php?attachmentid=81316&d=1727516627

Shumadan
29.09.2024, 12:19
Схема с более точными таймингами. И два варианта видеовыхода, которые точно не глючат на современных телевизорах/мониторах. Нет срывов синхронизации, изменения яркости, повышаются контраст и резкость.

Но надо убедиться тестером, что в мониторе стоит терминатор 75 Ом. Я пользуюсь первым вариантом, перепаял прям на плате. С тремя мониторами и картой захвата работает отлично, с телевизором возможны флуктуации. Но для телека можно настроить второй вариант, возможно придётся подобрать резистор 470 Ом +/- 30 Ом.


охренеть!
вот бы эти доработки тогда, в 86 году

Alex_LG
11.10.2024, 04:21
Если изменить диодную "матрицу" и использовать инверсные выходы триггера (для того, чтобы при стандартном шрифте когда D6 и D7=0 была максимальная яркость), то можна получить 5 градаций, включая белый и черный, отдельно для каждой линии символа.
https://i.postimg.cc/zLc3SxcX/Gray.jpg (https://postimg.cc/zLc3SxcX)

CodeMaster
12.10.2024, 15:29
то можна получить 5 градаций, включая белый и черный
Интересно, а в стародавние времена об этом никто не думал, в масштабах индустрии бытовых компьютеров, или просто к цвету быстро перешли?

Alex_LG
12.10.2024, 18:40
Интересно, а в стародавние времена об этом никто не думал, в масштабах индустрии бытовых компьютеров, или просто к цвету быстро перешли?

Я думаю, что в данной ситуации делать теневой знакогенератор значит усложнить схему, а Радио хотели сделать простым... Соответственно "зашивать" в ПЗУ симолы с разными оттенками было бессмысленно. Цвет на ВГ75 пытались делать на атрибутах, но как-то не прижилось, скорее всего из-за расхода памяти да и цвет в тексте не особо нужен. Использование ВГ75 для вывода цветных "спрайтов" уже началось намного позже, например, в Арго. Для РК, я считаю, цвет излишне, а вот градации серого вполне подойдут для "раскраски" старых игр, новые не пишутся. :)

Hammer
12.10.2024, 18:49
новые не пишутся

Пишутся, как минимум три игры появилось в этом году. Хоть простецкие, но мы не останавливаемся, может и получится что-нибудь интересное.

ПЗУ можно заменить одной КП13, схема Аликберова-Барсика, но я её ещё не спаял, поэтому не выкладываю.

Так же получилось сделать аппаратный бордюр на АГ3 в режиме 64 символа в строке, что немного высвобождает процессорного времени.

Пока изобретаем, как можно увеличить разрешение без провала по скорости.

Пока вот + три корпуса.

Alex_LG
12.10.2024, 23:18
ПЗУ можно заменить одной КП13, схема Аликберова-Барсика, но я её ещё не спаял, поэтому не выкладываю.
Так же получилось сделать аппаратный бордюр на АГ3 в режиме 64 символа в строке

Имете ввиду ПЗУ знакогенератора заменяется одной кп13? Честно говоря не представляю как можно одной кп-шкой скоммутировать почти десяток адресных линий...
А бордюр зачем?

Hammer
12.10.2024, 23:39
Бордюр чтобы уменьшить количество пересылаемых ПДП данных, а значит оставить больше времени процессору.

CodeMaster
13.10.2024, 15:35
Я думаю, что в данной ситуации делать теневой знакогенератор значит усложнить схему, а Радио хотели сделать простым...
Одна ТМ2 и горстка резисторов и диодом это такое прям усложние? И я не конкретно про РК конкретно, а про его предков и наследников на базе ВГ75 (а может и не только) в целом для применения в неигровой сфере, где оттенки серого предпочтительней цвета.

Hammer
13.10.2024, 16:04
Одна ТМ2 и горстка резисторов и диодом это такое прям усложнение?

Я думаю да, потому, что в журнальном варианте РК не подключены даже подсветка символов и инверсия.

Hammer
13.10.2024, 20:34
Схема с более точными таймингами.

Не могу картинку заменить почему-то. В схеме ошибка, должен быть транзистор 3904 коллектором на плюс.

cy6
14.10.2024, 14:27
Интересно, а в стародавние времена об этом никто не думал, в масштабах индустрии бытовых компьютеров, или просто к цвету быстро перешли?
Имхо, всем надоели ч/б телеки, довольно быстро )))

"Цветная" схема на ч/б мониторе/телевизоре, это разве не тоже самое?
2 бита - черный, белый и два серого, 3 бита - уже шесть серых. :rolleyes_std:

Hammer
10.12.2024, 15:20
Если изменить диодную "матрицу" и использовать инверсные выходы триггера (для того, чтобы при стандартном шрифте когда D6 и D7=0 была максимальная яркость), то можна получить 5 градаций, включая белый и черный, отдельно для каждой линии символа.
https://i.postimg.cc/zLc3SxcX/Gray.jpg (https://postimg.cc/zLc3SxcX)

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

Осталось альтернативный заливатор шрифтов придумать, потому, что не все любят и умеют паять :v2_dizzy_botan:

Alex_LG
11.12.2024, 00:54
При эмуляции Пикселтрона с заливатором шрифтов выявилась интересная особенность! Можно линию символа окрашивать в две градации серого т.к. есть именно подсветка фона. Эту фишку уже не хочется менять на что-либо т.к. ну очень существенное улучшение графики происходит. Очень много деталей добавляется в спрайты!

Не понял про ДВА оттенка... Я предложил схему на ПЯТЬ оттенков и простой схемой, которая не сильно усложняет переделку Вашей схемы... :confused:

Hammer
11.12.2024, 08:52
Ну вот если ничего не менять в моей схеме, то получаем два оттенка серого на линию, причём в любом месте линии. Потому, что можно делать подсветку фона.

Alex_LG
11.12.2024, 09:36
Т. е. в одной линии могут отображаться одновременно два оттенка серого?

Hammer
11.12.2024, 11:00
Да, серый фон и либо белый цвет, либо приглушённый белый.

Сразу картинки становятся более весёлыми:

https://zx-pk.ru/attachment.php?attachmentid=81660&d=1733903961

Alex_LG
11.12.2024, 17:01
Да, серый фон и либо белый цвет, либо приглушённый белый.

Я правильно понимаю: по Вашей схеме биты D6 и D7 в паре с битом изображения кодируют оттенки "карандаша" и "бумаги", т.е. "стандартный" белый (лог. 1) кодируется двумя старшими битами и "черный" (лог. 0) тоже кодируется ими же? Кажется, я понял, наконец-то, что Вы имели ввиду - двумя старшими битами задается не только оттенок 1, но и 0, т.е. старшие биты становятся как бы кодом палитры... Надо подумать...

Hammer
11.12.2024, 17:34
Да, оттенок фона можно поднять на одну ступень. Младший бит - приглушение белого, старший бит - подсветка фона. И одновременно тоже работает.

Alex_LG
11.12.2024, 20:07
Теоретически, два старших бита дают 4ре оттенка, где при значении 00 должен быть или 100% белый (для 1) или черный (для 0, он же - фон), это стандартные значения для совместимости с оригиналом. Схему можно изменить так, что бы на "карандаш" и "фон" было не по 2 значения, а по 4ре. Схема усложнится, но и количество оттенков в строке тоже... Примерно понимаю как сделать, но надо подумать еще...

- - - Добавлено - - -

Если сделать оттенки для "карандаша" отличными от оттенков "фона", то можно поднять количество оттенков до 8ми...

- - - Добавлено - - -

Т. е. у "карандаша" своя "палитра", а у "фона" - своя...

Hammer
11.12.2024, 20:41
Если сделать оттенки для "карандаша" отличными от оттенков "фона", то можно поднять количество оттенков до 8ми...

Я пробовал увеличивать количество оттенков. Не имеет смысла. Портреты чуть лучше становятся, но не хватает для полного счастья памяти знакогенератора.

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

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

Hammer
23.12.2024, 20:15
Имете ввиду ПЗУ знакогенератора заменяется одной кп13? Честно говоря не представляю как можно одной кп-шкой скоммутировать почти десяток адресных линий...

Примерно так получается:

https://zx-pk.ru/attachment.php?attachmentid=81742&d=1734973566

Схема даёт апогеевский псевдошрифт 3х2 + один бит снижения яркости.

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

Не могу пока придумать переключалку между ПЗУ и этим имплантом. Наверняка и тайминги придётся подгонять.


А бордюр зачем?

Про бордюр подробно здесь: https://zx-pk.ru/threads/36010-skhema-pravilnogo-ssi.html

Hammer
26.12.2024, 18:54
В связке с теневым знакогенератором на ОЗУ https://zx-pk.ru/threads/20714-pomechtaem-ili-vopros-o-videovykhode.html?p=713206&viewfull=1#post713206 (схему растащили в новоделы и, изменив немного элементную базу, выдают за свою идею:confused: ) можно делать неплохую "раскраску" игр.

Руслан Аликберов придумал, как заливать шрифт, используя адрес, который генерирует ВГ75. Очень компактная схема, но у меня мозгов не хватает её понять.

Поэтому такая схема прорабатывается:

https://zx-pk.ru/attachment.php?attachmentid=81757&d=1735228160

Заливатор шрифтов работает, как порт. Сажаем его на адрес. Мультиплексором выбираем линию символа. Адрес символа генерирует ВГ75. Для этого делаем буфер ПДП длиной в один байт. Инкрементируем этот байт, пока не заполним всю РУ10.

Схему не проверял пока.