Этот сайт — моя персональная записная книжка. Интересны мне, по большей части, программирование, история и события из моей жизни.

«МК-61s»: графика на текстовом экране

У меня давно вертится в голове идея попробовать вывести графику на алфавитно-цифровом экране «МК-61s». Он хоть и алфавитно-цифровой, но у него, как я уже неоднократно писал, есть восемь программируемых символов. В теории можно было бы разбить графику на эти восемь символов, но это будет куцо смотреться — экран-то рассчитан на 32 символа.

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

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

Это — «Пакман», гоняющийся за привидением.

Следующая идея была сложнее: первым проходом показывать максимум общих точек, а последующими — «добивать» оставшиеся, также перепрограммируя символы «на лету». Идея могла бы сработать, тем более, что на фрагменте эталонного изображения Лены Сёдерберг вместо четырёх кадров, по нашим с нейросетью расчётам, потребовалось бы всего три.

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

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

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

Не уверен что мне с этим всем делать, но пока оставил реализацию в экспериментальном режиме.