Вход

Просмотр полной версии : Img2Grf. Конвертор изображений в файлы формата GRF



tae1980
15.02.2019, 00:18
Конвертор изображений в файлы формата GRF
для версии 1.0.2

Данная программа разрабатывалась с целью подготовки изображений для дальнейшего использования на компьютере Spectrum Profi.

На текущий момент программа конвертирует не само изображение, а формат его хранения, адаптируя его для просмотра на расширенном экране Profi. Исходными данными являются 1, 4, 8, 24, 32 битные BMP. Но сама программ работает только с файлами с числом цветов не более 16. Изображения с большим количеством цветов приводиться к 16 из 256 цветов палитры 332RGB с использованием внешней программы «Image Magick». Такая форма работы была выбрана исходя из нескольких соображений:

* Формат BMP один из самых распространенных графических форматов, его легко получить в любом графическом редакторе. И с ним легко работать.

* Profi обладает скромным, по современным меркам, графическим разрешением 512x240 пикселей, то есть в 99.9% исходное изображение необходимо будет масштабировать и кадрировать. Для чего удобнее использовать такие программы как «Adobe Photoshop». Не вижу смысла, для реализации озвученных целей, писать очередной плохой графический редактор.

* Profi способен отобразить 16 из палитры в 256 цветов палитры 332RGB (GGGRRRBB). Приведение многоцветной графики (16М и более цветов) к 16 цветам - процесс сложный и трудоемкий. Есть большое количество программ, специализирующихся на этом. При создании рассматриваемой программы я стремился к сочетанию максимальной простоты решений с максимальной эффективностью. Поэтому для привидения изображения к 16 цветам было признано рациональным использовать сторонние программы.

Следует так же отметить, что цвета в расширенном экране Profi задаются не для каждой точки, а два цвета на каждые 8 точек. Это приводит к неизбежному ухудшению изображения при конвертации. В попытках сведения к минимуму влияния данного ограничения, было разработано несколько алгоритмов перевода. Для разных изображений нужно подбирать оптимальный алгоритм. Так же имеет большое значение методы приведения исходных изображений к 16 цветам, используемые во внешних программах. Опять же тут всё индивидуально.

Внешние программы для подготовки изображений

Основным инструментом для подготовки и предварительной обработки изображений является любой графический редактор. Я использую «Adobe Photoshop» так как неплохо его знаю, вы же можете использовать любой другой.

Дополнительными инструментами могут служить различные конвекторы изображения в формат экрана Spectrum’а и различных дополнительных аппаратно-программных экранных режимов, таких как Multicolor, Gigascreen и другие. А так же графические редакторы под эти режимы, как на IBM PC, так и на Spectrum’e. Качество перевода в таком случае будет выше, так как начальное число цветов значительно меньше и в той или иной степени есть учет того, что каждая точка не может иметь свой цвет. Но всё равно перенос один в один невозможен, так как у таких изображений число отображаемых цветов может быть более 16 (до 102 одновременно выводимых цветов). А также может быть иное строение экрана отличное от 2 цвета на 8 горизонтальных точек. То есть такие изображения все равно необходимо приводить к 16 из 256 цветов палитры 332RGB. Подробнее о подобных графических режимах можно прочитать в статье «ZX Spectrum Graphics FAQ» тут: http://hypr.ru/blog/graphics/320.html

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

* multiArtist - программа на IBM PC для создания мультигигаскрин-графики для ZX Spectrum (графический редактор). Она умеет работать с большим количеством графических режимов, а так же сохранять изображения в формат PNG. Подробное описание можно посмотреть тут: http://multiartist.untergrund.net/index.php

Использование программы «Image Magick»

Использование этой программы проходит прозрачно для пользователя. Конвертор сам перед конвертированием в формат Profi создаст запрос для приведения многоцветного изображения к 16 из 256 цветам палитры 332RGB, автоматически получит результат и отобразит его на экране. Главное что бы программа была установлена на компьютер. Если этого нет, то при попытке сформировать запрос обработки многоцветного изображения конвектор закроется по ошибке. Дистрибутив программы «Image Magick» для OS Windows 32-64 и OS/2 можно найти в архиве, для остальных OS можно скачать здесь: https://imagemagick.org/script/download.php

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

* Включение/отключение нормализации изображения.
* Выбора одного из трех алгоритма дизеринга.

Ни каких иных действий над изображением не производится. Результат обработки всегда будет отличным от результата обработки этого же изображения, в какой либо другой программе, например в «Adobe Photoshop». Хотя визуально это может быть незаметно. Что очень сильно влияет на результат конверсии. Поэтому для получения оптимальных результатов, рекомендуется подготавливать несколько вариантов изображений с использованием разных программ.

Адаптация изображения в «Adobe Photoshop»

Для «Adobe Photoshop» алгоритм подготовки изображения следующий:

* Загруженное изображение необходимо отмасштабировать и кадрировать под необходимый для ваших целей размер. При необходимости можно использовать инструмент «Свободная трансформация» (Edit/Free Transform) для изменения пропорций изображения. С учётом скромной разрешающей способности экрана Profi следует оставлять на изображении один главный объект, всё остальное лучше отрезать. Лишний фон и обстановка будут только отвлекать взгляд и ухудшать качество отображения действительно важных деталей.

Отмечу, что пиксель на расширенном экране Profi имеет не квадратную, а прямоугольную форму. Из-за чего изображение выглядит вытянутым по вертикали. Для минимизации этого эффекта рекомендую чуть-чуть ужимать пропорции изображения по высоте, максимум до 1/3. Для чего можно использовать инструмент «Свободная трансформация» (Edit/Free Transform) или просто изменять размер изображения под размер экрана без сохранения пропорций.

Расширенный экран Profi имеет размер 512х240 пикселей. Исходя из этого, для дальнейшей работы и просмотра наиболее удобны размеры изображения кратные экрану: по горизонтали 512 и 1024, по высоте 240, 480 и 720 пикселей.

* Теперь нужно проиндексировать цвет, то есть привести число цветов к 256 из палитры Profi. Для чего открываем окно инструмента «Индексация цвета» (Image/Mode/Indexed Color). В пункте «Palettе» нужно выбрать пункт «Local (Adaptive)», для пункта «Forced» открыть выпадающий список и в нём выбрать поле «Custom…». В открывшемся окне «Forced Colors», нажать кнопку «Load…» и загрузить файл «profi rgb.act» c 256 цветной палитрой Profi (он входит в комплект программы). Подтвердите действие, выбрав «OK». В пункте «Colors» у вас появиться цифра «256».

* Доступно четыре алгоритма уменьшая цветности изображения. Выбираются они в группе «Options», в пункте «Dither:». Это: None (без адаптации цветов), Diffusion, Pattern, Noise. Если стоит галочка у пункта «Preview», то «Adobe Photoshop» при выборе любого алгоритма автоматических применит его к текущему изображению, позволив тем самым быстро увидеть результат его работы, и, при необходимости, сменить алгоритм. Для большинства изображений обычно хорошо подходит алгоритм Diffusion, но лучше испробовать все имеющиеся и подготовить несколько файлов для дальнейшей работы.

* Теперь можно подтвердить действия, выбрав «OK». Число цветов на картинке уменьшается до 256 цвет из палитры Profi.

* Следующим действием выбираем инструмент «RGB Color» (Image/Mode/RGB Color). Мы возвращаем изображению 16М цветов, но так как на нем присутствуют только цвета палитры Profi, это чисто техническая операция. Её необходимость вызвана тем, что нельзя напрямую один индексированный цвет (256 цветов) конвертировать в другой (16 цветов из 256).

* Теперь снова открываем окно инструмента «Индексация цвета» (Image/Mode/Indexed Color). Так же в пункте «Palettе» нужно выбрать пункт «Local (Adaptive)», для пункта «Forced» открыть выпадающий список и в нём выбрать пункт «Black and White». Далее в пункте «Colors» вводим цифру 16. На этом этапе так же нужно выбрать один из четырех алгоритмов уменьшения цветности. Ставя/убирая галочку напротив пункта «Transparency», так же можно несколько влиять на получаемое изображение. Подтверждаем действия, выбрав «OK».

Теперь изображение состоит только из 16 цветов 256 цветной палитры Profi. Можно конечно его сразу приводить к 16 цветам, но в этом случае, на мой взгляд, качество перевода цветов хуже. Но загружать палитру из файла «profi rgb.act» нужно обязательно!

Сохраняем картинку в формат BMP. При сохранении, в окне параметров ставим галочку напротив «4 bit», в этом случай файл будет занимать в два раза меньше места.

Подготовку исходного изображения в программе «Adobe Photoshop» можно считать завершенной.

В «Adobe Photoshop» есть инструментарий по созданию макросов, только называются они «Actions» (Действия). Их использование позволяет значительно упростить и ускорить обработку изображения. Крайне рекомендую воспользоваться этим инструментом. Описывать его не буду, так как полное описание займете много места, а на практике всё просто и мало чем отличается от подобного инструмента в других программах.

Конверсия изображения в GRF

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

Для смягчения ограничения расширенного экран Profi, по которому восемь идущих подряд горизонтальных точек (1 байт) могут иметь только два цвета, была разработано несколько алгоритмов конверсии изображения, которые можно выбрать в соответствующем пункте:

1. По байту. Два самых частых цвета. - Тут я думаю всё понятно, берем за основу два наиболее часто встречающийся цвета.

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

3. Комбинированный, совместный учёт крайних. - Комбинация первых двух, если оба крайних цвета максимальные/минимальные по яркости в байте, то используется второй метод, иначе первый.

4. Комбинированный, раздельный учёт крайних. - То же, но крайние цвета оцениваться отдельно. Если какой либо из них самый светлый/темный цвет, он используется как один из основных, вторым использоваться самый частый. Так же есть контроль, что бы цвета ни оказались одинаковыми.

5. По байту. По крайним цветам. - Тут за основу берутся два крайних цвета в байте.

6. По полубайтам. Самый частый цвет. - Вот тут интересно. После общения в эхе (особая благодарность Lethargeek, за терпение) и чтения литературы, пришла мысль, что нужно как-то дробить информацию и работать с каждой частью в отдельности. А как это сделать в наших условиях? Только делить байт пополам. Что и было сделано. Байт делиться на два полубайта, для каждого из них определяться самый частый цвет. Которые и используются как основные. Проверяется частота появления у крайних цветов каждого полубайта, если она такая же, как и у признанного самым частым, то используется крайний цвет. Проводится контроль выбранных цветов, если одинаковые, берется следующий цвет из левого полубайта. Если цвета в нём кончились, начинаем их брать из правого полубайта. В результате получаем на изображении хорошую цветопередачу, но теряем часть мелких деталей.

7. По полубайтам. Самый темный и светлый цвет. - Алгоритм напоминает второй из перечисленных, только выборка цвета ведется по полубайтам. Для каждого из них подсчитываться значение средней серости цветов и определяться самый темный и самый светлый цвет. Далее находим, в каком полубайте самые темные цвета и из него берем темный цвет, а из второго берем светлый цвет. Субъективно, результат получается на 5-10% отличный от расчетов по байту.

8. По полубайтам. Частые цвета с учетом серости. – Это гибрид 6 и 7 метода, он уравновешивает их недостатки, хотя не ликвидируют полностью. Если в байте до трёх цветов применяться шестой метод с самыми частыми цветами. Если более трех то значения бит графики рассчитываться по крайним цветам по серости, как в 7 методе, а цвета накладываться самые частые, как в методе 6. При таком подходе видно больше деталей, чем в 6 методе, но меньше чем в 7 методе, а цвета искажаются меньше чем в 7 методе, но больше чем в 6. Так же в ряде мест может появиться дополнительная линейность, отсутствующая в 7 методе. Несмотря на, это итоговый результат получается весьма сбалансированный.

9. Самый частый цвет и контрастный к нему. – Находится самый частый цвет в байте. Определяем, в каком полубайте его больше всего и вторым цветом берем самый контрастный цвет к нему из другого полубайта.

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

После конверсии изображения в GRF откроется окно с результатом работы, заполняются информационные поля, а так же выведется палитра используемых 16 цветов.

Сохранить результат можно нажатием в блоке команд «Сохранить» на кнопку «GRF для Profi». Там же кнопкой «Обзорная BMP» можно сохранить результат в формате BMP.

Запустить автоматическую обработку всех файлов в директории с установленными параметрами можно по кнопке «Конвертировать каталог».

Работа с палитрой

Реализован небольшой функционал работы с палитрой 16 цветов для GRF. В ней можно изменять цвета на любые другие из 256 цветов палитры Profi. Для чего нужно мышкой выбрать цвет в 16 цветной палитре изображения и в открывшемся окне с полной палитрой Profi (256 цветов) указать желаемый цвет. Это же окно можно открыть, кликнув правой кнопкой мыши в окне с результатом конверсии в GRF, это позволит изменить цвет под курсором.

В блоке команд «Действия с палитрой GRF», можно сохранить текущую палитру в файл, а так же загрузить ранее сохраненную палитру. Здесь же кнопками «Темнее», «Светлее» можно изменить яркость всех цветов в палитре. Исходные цвета не сохраняться, но всегда можно загрузить раннее сохраненные палитры или повторить конвертирование исходного изображения. Яркость отельных цветов можно изменить в окне с полной палитрой Profi.

Состав дистрибутива

Программа написана на языке программирования Rexx с использованием оконной библиотеки «RexxDW». По сути, представляет собой исполняемый текстовый файл в кодировке 886. Его можно открыть, просмотреть и исправить в любом текстовом редакторе.

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

Критика класса «код фуфло» не принимается совсем. Если считаете, что сможете сделать лучше – вперед, исходники открыты. А если будут конструктивные предложения, с большим удовольствием их выслушаю.

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

Использование языка Rexx делает программу кроссплатформенной. Она без изменений будет работать в таких OS как Windows 32-64, OS/2, Unix, MacOS. Нужно только установить соответствующую версию интерпретатора «Regina Rexx» и библиотеки «RexxDW».

Rexx интерпретируемый язык, а значит далеко на самый быстрый. Отсюда и невысокая скорость работы. Но это мои любимый язык программирования, и мне просто приятно на нем писать. А скорость в данном случае не самый важный фактор. Можно попробовать упаковать программу в запускаемый файл (.exe), но он создается под конкретную OS и кроссплатформенность будет потеряна.

Установочные пакеты для OS Windows 32-64 и OS/2, можно найти в дистрибутиве программы. Для остальных OS их можно скачать здесь:
* Интерпретатор «Regina Rexx»: https://sourceforge.net/projects/regina-rexx/files/
* Библиотека «RexxDW»: https://sourceforge.net/projects/rexxdw/files/

При инсталляции в OS Windows 32-64, в окне выбора ассоциируемых файлов «File Associations», нужно выбрать все типы кроме «cmd». А в окне «Regina Stack Service», нужно выбрать оба пункта «Install Regina Stack Service» и «Start Regina Stack Service».

При инсталляции в OS OS/2 нужно либо распаковать архивы в директории, которые прописаны в LIBPATH и PATH, либо распаковать в любое место и прописать эти пути в LIBPATH и PATH. Я так же создаю новый тип файлов для расширения «rexx», параллельно стандартному расширения «cmd», для которого прописываю запуск файлов через «pmregina». Это гарантирует запуск библиотеки «RexxDW» через интерпретатор «Regina Rexx», а не через стандартный интерпретатор OS.

В состав дистрибутива программы входят следующие файлы:

Img2grf.rexx - Собственно сам конвертор. В OS Windows 32-64 можно запускать его напрямую, но тогда будет открываться дополнительное текстовое окно. Оно ни как не влияет на работу программы и ни как не используется в процессе её работы.
Start.bat - файл для запуска конвертора в OS Windows 32-64 без текстового окна.
Start.cmd - файл для запуска конвертора в OS OS/2, без создания нового типа файлов для расширения «rexx».
profi rgb.act - Палитра Profi 332RGB для «Adobe Photoshop» и других графических программ.
colormap_332.png – Файл с палитрой Profi 332RGB, необходимый для работы программы «Image Magick».
Help.doc - Описание программы в формате WORD.
/Distrib - Установочные пакеты интерпретатора «Regina Rexx», библиотеки «RexxDW» и «Image Magick» для Windows 32-64 и OS/2.
multiArtist/*.bmp – изображения, взятые с сайта графического редактора «multiArtist» и приведенные к 16 цветам.
*.bmp – черно-белые, 16 цветные и многоцветные изображения, подготовленные в «Adobe Photoshop».

Благодарности

* Валентину Кузнецову 2:5053/51, за многочисленные советы и терпения меня уже 20 лет, включая ночные телефонные звонки.
* Вадиму Черткову (Vadim), за многолетнюю поддержку и развитие Spectum Profi в целом и разработку Q-Dos в частности.
* Олега Стариченко (solegstar), за многолетнюю поддержку и развитие Spectum Profi, за разработку платы Profi 5.06 и согласие собрать экземпляр для меня. Что собственно и подвигло меня на написание сей программы.
* Lethargeek, за советы по обработке изображения и терпение моей слабой подготовки по данному вопросу.

Координаты для связи

Все замечания, пожелания и предложения можно высылать на адреса:

Email: tae@azimut21.ru
Fido: 2:5053/57 Aleksey Tarasow
Форум https://zx-pk.ru/
ВК: Группа поддержки компьютера Profi (https://vk.com/profi1024)

Лицензионное соглашение

1. Все авторские права на программу принадлежат Тарасову А.Е. (ТАЕ);
2. Данная версия распространяется бесплатно;
3. Программа поставляется по принципу "AS IS" ("как есть"). Никакие гарантии не прилагаются и не предусматриваются. Вы используете данное программное обеспечение на свой страх и риск. Автор программы не будет отвечать ни за какие потери или искажения данных, нарушения работоспособности других программ и системы, а также за любую упущенную выгоду в процессе использования или неправильного использования данного программного продукта;
4. Установка и использование программы означает, что вы понимаете положения настоящего лицензионного соглашения и согласны с ними;


Ссылка для скачивания IMG2GRF версии 1.0.2 (https://yadi.sk/d/qd36Jdj8UdeFzA)


698096980769805698086980670309

Djoni
15.02.2019, 15:00
Спасибо , очень нужная утилита:v2_dizzy_roll:

tae1980
12.08.2019, 21:16
Выяснил, что ссылки битые и пропали примеры. Всё подправил.

NEO SPECTRUMAN
12.08.2019, 22:36
16 из палитры в 256 цветов палитры 332RGB (GGGRRRBB)
шыттаААА???!?!?!?!!!!!11111oдинoдинo дин о_О

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

а почяму я только об этом узнал?
и ниоднапедевикия не пишот об этом?

tae1980
12.08.2019, 23:55
О Профи вообще мало информации, и часть из нее не верна в принципе. В плане обзора он незаслуженно обделен, хотя был одним из самых популярных клонов и пожалуй самым продвинут. Часть вины в таком положении лежит на разработчиках, так как они просто плыли по течению, не особенно занимаясь своим детищем.
Вот например среда разработки Profi Vision, разрабатывалась с 1994 года, силами одного человека. Имеет поразительные характеристики, как по оформлению, так и по наполнению. Например: это объектно ориентированная среда, имеет полноценную многозадачность, и удивительный графический интерфейс в котором реализованы почти все формы которые присутствуют в современных языках. А часть возможностей круче чем у вин311, например окна таскаются целиком, а не рамками. К сожалению, проект не был доведен до логического конца.

698106981169812698136981469815

Sayman
13.08.2019, 09:47
Profi Vision
может быть есть собранный образ с запускаемой PV?

tae1980
13.08.2019, 11:06
может быть есть собранный образ с запускаемой PV?
Есть образы с демкой (калькулятором) и одна программ копировщик. На всё есть исходники. Отдельные элементы я уже активно использую, но вот для полноценного использования нужно научится компилировать то что есть. А вот этом не пока не удаётся. :( Использоваться какая-то сложная система программа, писал человек код на ПС и использовал эмулятор CP/M, который сейчас уже не работает. Так же проблема в том что PV использует свои драйвера клавиатуры и консоли. Значительно ускоренными и улучшенными относительно стандартных (например консоль цветная), но не совместимых с ними.
В общем потихоньку разбираемся.

NEO SPECTRUMAN
14.08.2019, 11:25
А где можно почитать про палитру?
Оно хоть эмулируется? (мало ли)

tae1980
14.08.2019, 14:18
А где можно почитать про палитру?
Посмотреть материал можно в статье в последнем номере 3arulem
https://zx-pk.ru/threads/466-3arulem-pechatnoe-slovo.html?p=1021813&viewfull=1#post1021813

Оно хоть эмулируется? (мало ли)
Эмулируется, но как правило не правильно (и в Унреале и в ZXMAK). Цвета обрезаются по значению 6, то есть используются только два бита из трёх. Мне кинули версию Унреала в которой цвет верный, но с ней ещё не работал (не успеваю).
Разработчиков эмуляторов начну активно пинать по этому вопросу как мой Профик вернётся из ремонте, что бы было с чем сравнивать.

NEO SPECTRUMAN
14.08.2019, 16:30
мда...
с таким описанием :v2_dizzy_facepalm:
https://jpegshare.net/images/6c/0f/6c0febac5a8acbcdbf18d84f1e87b017.png
https://jpegshare.net/images/d1/31/d13167dda7c140c2d8e9989b253ca73e.png

унылейшее описание с жеванием соплей на 6 страниц
все давно известное повторено
про то что нигде нет опять ни слова...

а только неразборчивый пример

на вид
чем то похоже на работу с палитрой в АТМ

неясно порт палитры хх7Е или хх7F

несказано почему нужно делать
out ($FE),a
когда вроде бы
out (c),d
одновременно и выставляет номер цвета и сам цвет в старшем адресе порта

изза out ($FE),a
возникает вопрос
палитру можно менять только когда луч на бордюре?



https://jpegshare.net/images/a3/71/a37133fd826badd5c6f2eb3d6b2bae8b.png
...
на фоне литья воды на протяжении всей статьи :v2_dizzy_facepalm:
статья не то что ничего не прояснила
а наоборот вызвала еще кучу вопросов...
сколько этих *****х версий профи? о_О (науке известно)
и какие в чем режимы...

хотя строение расширенного экрана усердно разжевано и даже с картинками как надо :v2_dizzy_indy:

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


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

tae1980
14.08.2019, 16:51
NEO SPECTRUMAN, за качество, уже высказал редакции, обещали исправить в следующем номере.
Были обнаружено ряд некритичных отпечаток, так что будем исправлять. Готовим, публикации на форуме и в вк.
На счёт "унылейшее описание с жеванием соплей на 6 страниц все давно известное повторено".
1. Писал так что бы лично сам понял всё (и рассчитываю что большинство), если бы читал в первый раз. Уж извини если у тебя другое восприятие, писалось для всех, а не только для технарей.
2. Материал специально (о чем есть упоминание в первых абзацах) подан с нуля, так как не видел единого описания всех аспектов работы с экраном, всегда рассказывают о чём-то одном. От сюда и повторения, да бы собрать всё в одно место.


сколько этих *****х версий профи? о_О (науке известно)
Если бы внимательно прочитал то увидел бы абзац в начале статьи.
"За всё время существовали версии компьютера «Profi» с черно-белым экраном (цвет не реализован), цветные в двух вариантах: 8 цветов с 2 двумя градациями яркости и 16 цветные машины, а так же с расширенной палитрой 16 из 256 цветов. Работа с экраном у цветных машин и с расширенной палитрой идентична."


а наоборот вызвала еще кучу вопросов...
Задавай. Если что-то реальное, из ответов подготовим ещё одну статью.


палитру можно менять только когда луч на бордюре?
Да, есть такое неудобство. Но такие вопросы лучше задавить Вадиму.

NEO SPECTRUMAN
14.08.2019, 18:23
2. Материал специально (о чем есть упоминание в первых абзацах) подан с нуля, так как не видел единого описания всех аспектов работы с экраном, всегда рассказывают о чём-то одном. От сюда и повторения, да бы собрать всё в одно место.
написано так
будто для тех кто вообще только вылез с бейсика
но зачем им нужны рвсширенные возможности профика непонятно



Если бы внимательно прочитал то увидел бы абзац в начале статьи.
"За всё время существовали версии компьютера «Profi» с черно-белым экраном (цвет не реализован), цветные в двух вариантах: 8 цветов с 2 двумя градациями яркости и 16 цветные машины, а так же с расширенной палитрой 16 из 256 цветов. Работа с экраном у цветных машин и с расширенной палитрой идентична."
Предложение построено не очень хороше и смысл его трудно понятен
да и читабельней перечислять в столбик
с 3-й попытки вник
и сделал вывод чето
машин с расширенным цветным видео режимом 3
с хардварным мультиколором
с хардварным мультиколором и с раздельным брайтом
с хардварным мультиколором и палитрой



да и принято считать цвета с брайтом и без
отдельными цветами (тот же 16с)
а не 8

из статьи можно понять
что у нас по 4 бита на ink и paper
а тут нам вкидывается вот такое
https://jpegshare.net/images/22/46/22460f8aefc7fe35aba7eee75a46406a.png
что вообще можно трактовать как
раздельная палитра для paper-a ink-a (как например это в ula+) o_O

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


Задавай. Если что-то реальное, из ответов подготовим ещё одну статью.
да пока вроде примерно вьехал

из
http://dev.speccy.info/index.php?title=%D0%A1%D1%82%D0%B0%D0%BD%D0%B4%D0% B0%D1%80%D1%82%D1%8B_%D1%83%D0%BF%D1%80%D0%B0%D0%B 2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%9E%D0%97%D0%A3
было в упор не ясно про D3 #DFFD

D3 #DFFD
0 - ZX Spectrum 128, окно CPU3,
страница RAM5 установлена по умолчанию в окно CPU1
1 - CP/M, окно CPU1,
страница RAM7 установлена в окно CPU3

а в статья по русски сказано
что это просто перемещение переключаемого окна
а не та херня что навикипид*рирована в девспекопедивикии

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


Если бы внимательно прочитал то увидел
тогда получается что у профи с палитрой
пзу-шка поправлена для инициализации палитры при включении?

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


несказано почему нужно делать
out ($FE),a
когда вроде бы
out (c),d
одновременно и выставляет номер цвета и сам цвет в старшем адресе порта

судя по
https://jpegshare.net/images/13/0c/130c9372f8ae02bdbcd62c42add86c41.png
выбираем заменяемый цвет выставлением его на бордере
а значение выставляем старшим байтом номера порта
что именно пишется в порт походу все равно?

в профи случаем не тоже 16 цветов на бордюре как в АТМ?

solegstar
14.08.2019, 19:44
выбираем заменяемый цвет выставлением его на бордере

что именно пишется в порт походу все равно?
это и есть запись в порт. когда ты пишешь что-то в порт хх7E, то откликается и порт FE на запись. в него пишется значение (можно сказать номер цвета), который ты хочешь поменять на хх. то есть если ты напишешь out 017E,0 , то код цвета 0 (RGBY=0) заменится на 01, и уже при выставлении кода RGBY=0 при чтении из РУ2 будет выдаваться код 01.

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


несказано почему нужно делать
out ($FE),a
когда вроде бы
out (c),d
одновременно и выставляет номер цвета и сам цвет в старшем адресе порта
я кажется понял, о чем ты. это сделано для того, чтобы данные успели выставиться в регистре бордюра. у Профи дешифратор сделан так, что импульс записи в тм8 регистра бордюра происходит после возвращения сигнала /wr или /iorq в единицу. запись в порт происходит по переднему фронту сигнала С_BORD, НО он по умолчанию в 1це находится, а не как в пентагоне в 0, где запись в порт FE получается значительно быстрее. т.е. когда даем команду записи в порт FE, сигнал С_BORD сначала переходит в 0, записи данных в порт пока не происходит, но при переходе C_BORD в 1цу данные уже точно есть на шине данных и происходит непосредственная запись в регистр по переднему фронту сигнала. из-за этого у Профи, даже с поправленным синхрогенератором под 320 строк, всё равно смещен бордюр при выводе мультиколора.

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


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

Vadim
14.08.2019, 20:30
унылейшее описание с жеванием соплей на 6 страниц
все давно известное повторено
про то что нигде нет опять ни слова...

Что известное? И кому? Про устройство палитры, как выяснилось не все знают. О палитре писал я, для одного человека, ещё несколько лет назад, в 14-м или 15-м году. Что бы было предельно понятно, что это такое и как работает. Кратко люди не понимают. Кратко скажешь - плохо. Подробно - тоже плохо, так что же тебе надо?


про то что нигде нет опять ни слова...
Чего нет нигде? Что именно?



неясно порт палитры хх7Е или хх7F

несказано почему нужно делать
out ($FE),a
когда вроде бы
out (c),d
одновременно и выставляет номер цвета и сам цвет в старшем адресе порта

TAE конечно этот вопрос обошёл, а в моём тексте, в том, что я писал ранее я не заострял внимание именно на физическом программировании палитры.



изза out ($FE),a
возникает вопрос
палитру можно менять только когда луч на бордюре?

именно так. И выше твои догадки верны. Если ты читал внимательно всю статью, в самом начале было указано, что особенности и цвета и палитры в том, что делалось это минимальными вмешательствами в схему. Если делать по уму, то количество корпусов увеличилось бы не на 3-4, а на 10. Согласись, это уже показатель. Да, мне тоже такой вариант программирования не нравится, но имеем то, что имеем. И палитра появилась на Профике ещё в 1994г. Где она была в то время ещё?

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


изза out ($FE),a
возникает вопрос
палитру можно менять только когда луч на бордюре?

код цвета при программировании берётся из регистра, в котором хранится цвет который в данный момент выводится на экран. Это может быть и область пикселей, но сам понимаешь гораздо проще выставить цвет бордера и в момент его отображения, с начала экрана залить палитру. Это самый простой и надёжный вариант. И да, данные 8 бит выставляются на 8-и старших адресах порта, запись ведется в 7E, но записываемые данные, скажем командой out (c),a из регистра А запишутся просто в порт бордера, но цвет задаваемой ячейки не установят, нужно установить до этого. Уродство, согласен, но зато в схеме сделан минимум изменений для реализации этого.

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


по идее, можно выставить следующее значение кода цвета, которое нужно поменять.
да, можно. И оно сработает 100%. Т.е. в out (c),a зададим код следующей программируемой ячейки, которую зададим в следующем цикле. Процедуру записи палитры можно упростить, но на реале проверить ессно.

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


написано так
будто для тех кто вообще только вылез с бейсика

Вот представляешь, есть люди, кто на бейсике не писал, но что такое палитра - не понимает. И таких тут на форуме явно больше чем один. Слышать - слышали, а как оно и для чего точно, внятно не понимают.

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


что вообще можно трактовать как
раздельная палитра для paper-a ink-a (как например это в ula+)

Нет, нельзя. Не написано что "разными палитрами".

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


в профи случаем не тоже 16 цветов на бордюре как в АТМ?
нет, в Профи, на бордере 8 цветов, к сожалению.

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


с хардварным мультиколором и с раздельным брайтом
с хардварным мультиколором и палитрой

На самом деле, flash - мигание, в Профи, на расширенном экране даже в первой схеме не было. Бит flash использовался как второй bright. И уже потом к этому всему в платах версии 5 появилась палитра. Её можно было и не ставить,т.е. схема компа построена так, что можно отдельные элементы не устанавливать: палитра, третий кварц для расширенного режима (без него в турбе 7Мгц), часы, ком порт, ВВ55, ide, AY-3910 или 8912, ПЗУ или 27512 или две 27256. Можно было ставить 2, 3 или 4 линейки ОЗУ и ещё вариации ИР22/ИР23 в одном месте. Согласись, такая вариативность очень удобна?

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


а в статья по русски сказано
что это просто перемещение переключаемого окна
Всё верно, окно или в C000 или в 4000. И я всегда, во всех доках рисовал 2 варианта адресного пространства. В цитате, что ты привёл просто указано, что если окно с 4000, то с С000 сидит страница 07.

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


тогда получается что у профи с палитрой
пзу-шка поправлена для инициализации палитры при включении?

Разумеется. И версия теста 1.02 вроде, года 3 уже назад, я её декомпилировал, почти всё прокомментировал. После включения питания или ресет идёт запуск всегда в ПЗУ тест, независимо нажата кнопка on/off или нет. Там идёт инициализация ОЗУ, какие-то сумасшедшие тесты на пересечение страниц (нелепые), затирка нескольких страниц и заливка палитры, что бы получить цвета ZX-Spectrum. Потом идёт проверка кнопки on/off. Если она нажата - переход в меню бейсик 128, если отжата попытки загрузки дискеты ЦПМ, причем только с диска А. Если дискеты нет или она не загрузочная, проверяется - "может она трдос"? Если да - переход в ТРДОС, если нет - переход в меню тестов.

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


да и принято считать цвета с брайтом и без
отдельными цветами (тот же 16с)
а не 8

Вот тут ты не прав. Помнишь же, что в 90х при описании компов указывалось количество отображаемых цветов? У Спектрума их 8. С градациями яркости. Есть красный и ярко-красный. Цветность цвета не меняется. На ПЦ, можешь попробовать заливать палитру или картинку, когда красный цвет будет меняться от 0 до FF. Цветность его не поменяется, будет меняться только яркость этого цвета. А вот на атарях и на С64 было 16 цветов, реально разных. Там были и коричневые и бирюзовый. В литературе по спектруму в 90х местами несведущие люди писали, что на спектруме 16 цветов или 15 (кто проверял, что яркого черного нет). Но если честно всё принять, то цветов 8 и 7 из них имеют яркость.

NEO SPECTRUMAN
14.08.2019, 23:02
Помнишь же, что в 90х при описании компов указывалось количество отображаемых цветов? У Спектрума их 8.
с таким же успехом встречается и 16 цветов

И С ТАКИМ ПОДХОДОМ
КАКИЕ ТОГДА? НАФИК ИЗ 256 ЦВЕТОВ
там тоже есть одни и те же цвета с разной яркостью
тоесть по вашей логике максимум там 236...

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

не выдумывайте херню
везде яркость считается отдельным цветом

этот идиотизм наверно и вводит в заблуждение об раздельной палитре...

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


Что известное? И кому? Про устройство палитры, как выяснилось не все знают. О палитре писал я, для одного человека,

Чего нет нигде? Что именно?
про палитру ничего и не известно
а в статье расказано про работу с памятью про строение экрана
но это и так описано

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




Да, мне тоже такой вариант программирования не нравится, но имеем то, что имеем. И палитра появилась на Профике ещё в 1994г. Где она была в то время ещё?
в 91 у АТМ :)
и тоже нужно выставлять меняемый цвет на бордер

Vadim
15.08.2019, 05:37
не выдумывайте херню
везде яркость считается отдельным цветом

Везде это где? Я выше привёл пример, и уже из-за них не "везде".

NEO SPECTRUMAN
15.08.2019, 12:04
Везде это где? Я выше привёл пример, и уже из-за них не "везде".
плохой это пример
или мне начать перечислять платформы?
и сколько в них заявленно цветов


ну для примера 64 цвета палитры ега
https://upload.wikimedia.org/wikipedia/commons/0/02/EGA_Table.svg
никто из нормальных людей не говорит что там 20 с чем то цветов...


везде это везде
по моиму в инструкции робика тоже говориться про 8 цветов
но зачем оринтироваться на фиг знает что?
у нас в некоторых источниках можно встретить такую ахинею что...

ладно
например в тех жо старых рекламах спекрума такое можно встретить...
...

Vadim
15.08.2019, 13:54
по моиму в инструкции робика тоже говориться про 8 цветов
но зачем оринтироваться на фиг знает что
Во всех описаниях ZX-Spectrum говорят о 8-и цветах и только редкие ламеры и профаны кричали о 16-и (т.к. не понимали о чем речь). Хотя, как я сказал и это ложь, есть 15 комбинаций разных. Про VGA/EGA/CGA. Говорят палитра X из Y цветов. Да, это просто такой устоявшийся термин. Хотя если ты почитаешь доки на видеорежимы, на теорицю цвета и подобное, там тебе скажут, что это название "цветов" неправильное. Цветов всего 7, а всё остальное (из 16 млн.) - оттенки. И среди них, да, будут одной и той же цветности (chroma), но отличающейся яркости (luma). Спорить с этим глупо.

NEO SPECTRUMAN
15.08.2019, 14:19
Цветов всего 7,
с таким же успехом цветов всего 3

ладно у меня нет желания
холиварить еще и про цвета

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


просто такой устоявшийся термин.
так в этом и суть
что этот термин или давно заменил некие 16к оттенков
или же сразу применялся в этом смысле...

это примерно как повсеместное
"украсть канализационный люк"
хотя люк украсть нельзя (по крайней мере в здравом уме :) )
можно украсть крышку люка

и так же как и килобайты
все клали на эти мерские кибибайты высосанные из пальца

Vadim
15.08.2019, 19:38
с таким же успехом цветов всего 3
Исходных или чистых, да, три. Ты прав. Остальные это смеси. Семь если в равных пропорциях смешивать и получаем семь цветов радуги. И ты это знаешь.


это примерно как повсеместное
"украсть канализационный люк"
Согласен.

NEO SPECTRUMAN
15.08.2019, 19:58
Исходных или чистых, да, три.
только это с точки зрения компьютера\монитора
с точки зрения физики нет никаких цветов
есть некий различимый диапазон частот 400...800ТГц
да и в самих глазах нет никакого rgb :)

а rgb это жалкая попытка с эмитировать спектр света...
вместо настоящего желтого они нам нагло подсовываеют смесь зеленого и красного
называя это желтым :)

и с таким жо успехом есть бесконечное количество спектральных цветов
а не 7
и еще бесконечная куча их помесей...

Vadim
16.08.2019, 06:57
да и в самих глазах нет никакого rgb
Есть. Отправной точкой является то, что в глазах есть свточувствительные элементы которые и различают три разных диапазона, красный зелёный и синий. Было бы 4 диапазона мы бы видели всё красочнее и лучше.


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

Reobne
16.08.2019, 08:49
Было бы 4 диапазона мы бы видели всё красочнее и лучше.
На самом деле их 4 и есть. :)https://upload.wikimedia.org/wikipedia/commons/thumb/6/6e/Spectre_absorption_des_cones.svg/360px-Spectre_absorption_des_cones.svg.png
Это нормализованный график, на самом деле чувствительность палочек в сто раз больше.
Так что, нет преграды настроить наши нейросети, чтобы они всегда отличали лазурный от смеси голубого с зелёным.
Но обычно этого не происходит. Наши простые краски, окрашивающие бытовые объекты, не способствуют такой тренировке. И мониторы-телевизоры, принявшие концепцию RGB тем более.

Sayman
16.08.2019, 09:34
Отлично! Тема про конвертор картинок плавно превратилась в теорию о свете, фотонах, волнах. Давайте теперь про кванты поговорим, как они влияют на полёт фотонов в вакууме.
----
и при этом тут отдельные товарищи говорили, что это Я тут тролль и флудер... да да...

NEO SPECTRUMAN
16.08.2019, 16:03
На самом деле их 4 и есть.
не помню точно
но дет читал про сомнения на счет 4-х
и про то что у палочек? 2 режима работы
с пиком в районе синего при ярком свете
и с пиком в районе зеленого при "ночном режиме"
и что дельтонике не видящие синий
всегда за одно и не видят в темноте...

утверждать в достоверности этого не могу
щас статьи не нагуглил...

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


Отлично! Тема про конвертор картинок плавно превратилась в теорию о свете, фотонах, волнах.
НУ ВООБЩЕТО
для конвертера изображений
это НУ ОЧЕНЬ актуально

особенно проблема встает когда нужно перевести цветное изображение в чернобелое...
тк часто происходит ВНЕЗАПНО и яркость местами подскакивает там где ее небыло

да и гама при конвертации в 8 цветов чета задирается
хотя по цифрам все правильно...

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

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

https://upload.wikimedia.org/wikipedia/commons/thumb/6/6e/Spectre_absorption_des_cones.svg/360px-Spectre_absorption_des_cones.svg.png
они прям такие сочные RG нарисовали :v2_dizzy_facepalm:

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


хотя фон сам правильный
сходу не рассмотрел


интересно LMS мониторы
были бы с лучшой цветопередачей чем RGB?

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


они прям такие сочные RG нарисовали
кстате они забыли про второй пик в районе фиолетового у L колбочек...:v2_dizzy_facepalm:
изза него фиолетовый мы видим как фиолетовый (красный+синий)
а не как просто синий...

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

сходу лучшо не нашел
умя было по красивей дето
https://upload.wikimedia.org/wikipedia/commons/thumb/2/26/Cone-response-en.svg/825px-Cone-response-en.svg.png
что примечательно
умя есть подозрение что между двумя пиками "красного" натуральная квинта
и что все эти пики это уже 2-е гармоники частоты цвета
то есть второй пик "красного" дето на длине волны 376 нм

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

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


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

и что примечательно
результат как то даже работает (matanpower)

Sayman
16.08.2019, 18:55
NEO SPECTRUMAN, хватит бредить.

Vadim
16.08.2019, 19:23
особенно проблема встает когда нужно перевести цветное изображение в чернобелое...
тк часто происходит ВНЕЗАПНО и яркость местами подскакивает там где ее небыло

Значит это ошибки конвертации, однозначно. Для перевода в чб есть же формула, в ТВ она же. Но профике смотри формирователь чб сигнала - та же самая история.

tae1980
13.10.2019, 16:50
Решил выложить версию программы «Img2Grf» v1.0.2 с текущими изменениями. Их не так много, но они могут быть полезны.

* Незначительно переработан интерфейс. Подправлен файл с описанием.

* Увеличил число файлов примеров в архиве.

! Добавлен новый метод формирования байта «Самый частый цвет и контрастный к нему». Находим самый частый цвет в байте. Определяем, в каком полубайте его больше всего и вторым цветом берем самый контрастный цвет к нему из другого полубайта. На текущий момент это метод даёт самый лучший результат переноса графики. Хотя потери качества всё-таки есть.

! Для удобства, окно выбора цвета из 256 цветов Profi теперь можно вызвать щелчком правой кнопки мыши на изображении GRF, что позволит изменить цвет под курсором. Это избавляет от поиска нужного цвет в палитре изображения.

! Дополнен функционал работы с палитрой. Появилась возможность изменения яркости, как отдельного цвета, так и всей палитры изображения (16 цветов). Хотя общее число цветов весьма ограничено (256 цветов), но положительные результаты работа с яркостью может дать. Приведу пару примеров.

Скачать полный архив можно по этой ссылке https://yadi.sk/d/qd36Jdj8UdeFzA

Подправил первый пост.

7030770308

NEO SPECTRUMAN
27.02.2020, 04:01
* Увеличил число файлов примеров в архиве.
это конечно хорошо
но чот не видно grf примеров....

tae1980
27.02.2020, 09:19
но чот не видно grf примеров....
Программа предназначена для их создавать. Предполагалась, что просто нужно использовать её по прямому назначению.
Если если мнение, что стоит добавить пару grf, то можно реализовать в следующей версии.
А так много примеров в группе https://vk.com/profi1024
В частности вот календарь на текущий год https://vk.com/profi1024?z=album-106100273_272007829

NEO SPECTRUMAN
27.02.2020, 09:54
Если если мнение, что стоит добавить пару grf, то можно реализовать в следующей версии.
ну до
тк иногда ВНЕЗАПНО может понадобится раздобыть где нибудь какой нибудь grf для проверки
а вот где его быстро раздобыть...

а конвертилка из песочницы сходу не захотела взлетать...
и была сильно подозрительной :)

tae1980
27.02.2020, 14:30
а конвертилка из песочницы сходу не захотела взлетать...
Если правильно установили Regina Rexx и RexxDW (редактор Image Magick, просто для удобства, я им не пользуюсь, так как на мой взгляд, после Фотошопа результат переноса лучше), то проблем быть не должно. Если они всё же возникли, просьба сообщить и прислать скриншоты.
Полноценный архив grf планироваться в группе ВК, подготовлено уже более 200 файлов.

Dec
02.12.2020, 12:32
Хочу попробовать создать конкурента твоей программе ) - планирую добавить в DaDither конвертацию в GRF. Но не могу найти информацию о pixel aspect ratio в режиме 512*240. Не подскажешь, какое правильное соотношение между шириной и высотой пикселя на Profi?

tae1980
02.12.2020, 13:41
Dec, для Профи сейчас соотношение 1/3. На практике ужимаю высоту картинки на 40%. Но это условие будет дополнительно проверяться, как приедет реал.
Кроме того сейчас поддержка формата GRF реализована в "GMX PIC VIEW" https://zx-pk.ru/threads/32246-gmx-pic-view.html У них соотношение 1/2, то есть по высоте нужно жать на 50%.
Это будет учтено в релизе программы который сейчас готовлю.

Dec
03.12.2020, 00:42
соотношение 1/3
Я не очень понял это соотношение. Выходит, что 512*240 на экране выглядит как 512x720. Т.е. высота экрана больше его ширины. Так и есть?

NEO SPECTRUMAN
03.12.2020, 00:49
1/3 нелогично
скорей всего там 1/2 очепяталось
обычно при 512 на спектрумах пиксели 0.5х1

чтоб сделать 1/3 понадобилось бы где то выкопать 21МГц для пикселей...

tae1980
03.12.2020, 15:58
1/3 нелогично
скорей всего там 1/2 очепяталось
обычно при 512 на спектрумах пиксели 0.5х1
"за что купил, за то продал" вот скриншот программы "GIF-viewer" 1993 года. В верхних трёх строчка указано именно это соотношение. Эта же цифра фигурирует и в ряде иных мест.
Сам соотношение не проверял, так как не было возможности, но в планах это стоит на первом месте.
https://imageup.ru/img288/thumb/2018-12-04_23-44-533682369.jpg (https://imageup.ru/img288/3682369/2018-12-04_23-44-53.png.html)

Dec
03.12.2020, 22:12
Он отключает включенное по умолчанию расширение точек по горизонтали на 1/3.

Как понимаю эту фразу. Есть базовая ширина точки по горизонтали со значением X. Она расширяется на 1/3 до значения Y. Т.е. Y = X + X/3. Преобразуем в X = (3Y)/4. Принимаем Y равным 512. Отсюда X = 384. Т.е. базовое разрешение 384x240. Соотношение между сторонами экрана равно 1.6. 512/1.6 = 320. и получаем визуальные 512x320 соответствуют внутренним 512x240.

Dec
04.12.2020, 01:34
Я добавил в программу DaDither (https://zx-pk.ru/threads/32400-dadither-eshche-odna-programka-dlya-dither-ga-kartinok.html) конвертацию в GRF.

https://jpegshare.net/images/3b/a7/3ba7f5c1f81a101207b225fac8587eb5.png

Поддерживаются ч/б и цветные картинки. Буду благодарен за любую обратную связь.

tae1980
04.12.2020, 07:38
Поддерживаются ч/б и цветные картинки. Буду благодарен за любую обратную связь.
1. По какому алгоритмы ты приводишь цвет к байту?
2. Поддерживатся GRF только с палитрой? Или со стандартными цветами то же?
3. Почему в программе нет русского языка?

Dec
04.12.2020, 14:24
По какому алгоритмы ты приводишь цвет к байту?Обычным дизерингом на двух выбранных цветах.


Или со стандартными цветами то же?Я не смог понять всех деталей того, как кодируется байт со стандартными цветами. Яркости для paper/inc независимы? Расположение бит в цветовом байте по схеме стандартного спектрума или по схеме Profi? Если пояснишь, то добавлю и стандартные цвета.


Почему в программе нет русского языка?Лень делать поддержку смены языка. Может быть позднее.

NEO SPECTRUMAN
04.12.2020, 16:29
3. Почему в программе нет русского языка?
НАХРЕНА он те нужен?
чего там такого непонятного написано что требует перевода?

tae1980
04.12.2020, 19:21
НАХРЕНА он те нужен?
чего там такого непонятного написано что требует перевода?
1. Для меня много не знакомых терминов. Лазить постоянно в переводчик не фонтан.
2. Я русский человек, и мне просто не приятно видеть язык врага. Не уж-то англосаксы мало убивали наших предков?
3. Как прикажите продвигать русский язык в странах эксСССР, если сами используем язык противника?

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


Я не смог понять всех деталей того, как кодируется байт со стандартными цветами. Яркости для paper/inc независимы? Расположение бит в цветовом байте по схеме стандартного спектрума или по схеме Profi? Если пояснишь, то добавлю и стандартные цвета.
У Профи были машина как 8 цветные (общая яркость + мигание), так и 16 цветные (яркость раздельная, мигания нет). Но 8 цветных машин не сохранилось, по крайне мере я ни знаю про такие.
Расположение цветов стандартное. В 25 номере журнала "За рулём" есть статья на эту тему. https://vk.com/doc-69042740_512235664

NEO SPECTRUMAN
04.12.2020, 20:07
Я русский человек, и мне просто не приятно видеть язык врага.
это международный универсальный язык и язык компьютерной техники

не нравится ну бери переводи свои сяпаскали на русский
и один в них кодь врагу на зло


а русский для говорения между русскими

а потом после горе переводчиков
хрен что поймешь в переведенной софтвари

мануалы не пригодные к использованию
каждвая новая версия перевода со своими косяками и старое описание уже не подходит

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


Я русский человек, и мне просто не приятно
ну до
а потом дети из жополандий в 3-м классе говорят на инглише
а 40 летние русские не могут связать двух слов на вражеском языке

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

tae1980, и вообще с излишним патриотизмом не к месту можно и до такого докатитсо :v2_lol:

якщо (ґиґи == ї++)
{
геть_москалів = 1;
}
інакше
{
геть_москалів = 0;
}

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

ах да
еще больше патриотизма

$FE = ₴ДҐ
по русски наверно ₽ЕД (умя символ не отображается так что хз как оно видно у других)

Dec
04.12.2020, 20:12
У Профи были машина как 8 цветные (общая яркость + мигание), так и 16 цветные (яркость раздельная, мигания нет).
А как эти режимы обозначаются в заголовке GRF файла?

NEO SPECTRUMAN
04.12.2020, 20:13
"за что купил, за то продал"
кстате если вернуься к пропорциям
думаю достатачно найти любую 1 фотку расширенного режима с реала (с 4x3 экраном)
и сравнить ее с эмулятором

tae1980
04.12.2020, 20:42
это международный универсальный язык и язык компьютерной техники
Рад за него.


не нравится ну бери переводи свои сяпаскали на русский
и один в них кодь врагу на зло
А за чем?
Тебе нужно переводить дорожные знаки? Нет? А почему? Так вот для меня английский язык - не язык, а набор картинок, как дорожные знаки.
Например: "save" - всё что связано с записью на внешний источник, а как конкректно переводиться это слово, какая мне разница? Или "LD", запись данных в регистр. Да и не переводиться он ни как. Знать язык врага, ой, извини "международный универсальный язык и язык компьютерной техники"(с) вообще не обязательно. И в переводе условных знаков, на русский язык я так же смыла не вижу. Так как теряется чёткое деление на "код" и "комментарии".


с излишним патриотизмом
Мои слова выходят из довольно глубокого знания философии и методологии вопроса. Я да же писал научную работу на тему "славянофилы и западники в конце 19 века".
Россия это империя, и существовать она сможет только как империя. Да, в неё входят многие народы, со своими языками и культурой, но есть единый, объединяющий языка - и это русский язык. Как только начнётся его подмена, империя начнётся шататься. Используя, а главное - оправдывая использования, языка врага, ты выбиваешь кирпичик (пусть и маленький) из фундамента империи, а значит работаешь на уничтожение своей Родины. Нравиться тебе это или нет, понимаешь ты это или нет - значение не имеет. Прими это как факт.

Я не против много языковой поддержки где либо, когда её цель продвижение продукта на другие рынки. Не зря же в древности купцы, прокладывая новые маршруты кроме товара всегда несли и свою культуру, в том числе язык. Сейчас это называется "мягкой силой". Вон в Сирии, в школах начали преподавать русский язык, чем не дополнительный рынок для наших товаров? И простое продвижение языка, позволяет не только появиться там, но и удержаться на нём.
Ситуация: мы "заходим" куда либо с нашими программам на русском языке, через какое-то время местное население к ним привыкают, и тут наши вра..,ой, конкуренты, предлагают свои программы на своём языке. Думаю не сложно догадаться, что при прочих равных, будут выбраны наши программ (и товары). А теперь изменим ситуацию, и предположим, что мы зашли с программами на "международном универсальным языке и язык компьютерной техники"(с). Как измениться общее состояние модели, при появления программ с противной стороны?

NEO SPECTRUMAN
04.12.2020, 20:46
Ситуация: мы "заходим" куда либо с нашими программам на русском языке
а там программы на понятном английском
и вы выходите с рынка

tae1980
04.12.2020, 20:47
А как эти режимы обозначаются в заголовке GRF файла?

+9 = 0 стандартный файл, без палитры.
Есть планы расширить формат, информация об этом будет здесь.



Формат Profi GRF:+0 слово DW HSIZE горизонтальный размер картинки в точках
+2 слово DW VSIZE вертикальный размер в строках растра
+4 байт DB BPP бит на точку или точек в байте (в зависимости от AMOD)
+5 байт DB AMOD 1 - цвет на каждую точку,
0 - байт аттрибутов на байт точек
+6 слово DW BPS длина образа одной строки растра в байтах
+8 байт DB HLEN длина заголовка в записях по 128 байт (и 0, и 1 соответствует 128 байт)
+9 байт DB 0 признак стандартного формата ( если формат будет изменяться, изменится и этот байт )
+10 118 х DB 0 резерв
или палитра (при +9=19($13)). 16 байт по 1 байту на цвет в формате GGGRRRBB


BPP AMOD режим хранения информации
--- ---- -----------------------------------------
8 0 PROFI-mono
4 0 PROFI-color (байты точек и аттрибутов чередуются, точки раньше аттрибутов)
2 1 CGA (4 цвета, байт описывает 4 точки)
4 1 EGA (16 цветов, байт описывает 2 точки)
5 1 VGA (32 цвета, байт описывает 1 точку)
8 1 VGA (256 цветов, байт описывает 1 точку)

NEO SPECTRUMAN
04.12.2020, 20:49
Ситуация: мы "заходим" куда либо с нашими программам на русском языке, через какое-то время местное население к ним привыкают, и тут наши вра..,ой, конкуренты, предлагают свои программы на своём языке. Думаю не сложно догадаться, что при прочих равных, будут выбраны наши программ (и товары). А теперь изменим ситуацию, и предположим, что мы зашли с программами на "международном универсальным языке и язык компьютерной техники"(с). Как измениться общее состояние модели, при появления программ с противной стороны?
я посмотрю на твою реакцию
когда ЛИЧНО к тебе скоро зайдут кетайцы с программами на своем языке (пушо они тоже не любители инглишов)
мне то все равно
но тебя это явно не обрадует :)

tae1980
04.12.2020, 20:53
а там программы на понятном английском
и вы выходите с рынка
Нет - с программами, с много языковой поддержкой - и выходят на рынок.
Но по умолчанию, нужно включить русский язык, и использовать другие инструменты "манипулирования выбором людей".

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


кстате если вернуься к пропорциям
думаю достатачно найти любую 1 фотку расширенного режима с реала (с 4x3 экраном)
и сравнить ее с эмулятором
Отослал Олегу файл в котором нарисовал два квадрата 200х200 и 100х100 пикселей. Попросил вывести на реале, и замерить длины сторон линейкой. После задача решается простой пропорцией.
Пока жду ответ.

Dec
04.12.2020, 20:57
+9 = 0 стандартный файл, без палитры.
Это я понял. А как мне различить, что файл создан для 8 цветной (общая яркость + мигание) или 16 цветной (яркость раздельная, мигания нет) машины?

tae1980
04.12.2020, 21:09
я посмотрю на твою реакцию
когда ЛИЧНО к тебе скоро зайдут кетайцы с программами на своем языке (пушо они тоже не любители инглишов)
мне то все равно
но тебя это явно не обрадует

Да, меня это не обрадует. И я буду работать над тем, что бы было на оборот. Много сделать не могу, но пару кирпичиков в фундамент империи положу.
Точно так я стараюсь, что сделать для спекка.

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


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

NEO SPECTRUMAN
04.12.2020, 21:27
И я буду работать над тем, что бы было на оборот.
нет я забыл
кетайцы позаботятся о тебе
и переведут переводчиком с алиекспресс :v2_lol:
что ты сам выберешь в с трудом найденных настройках инглишь
чтоб хоть что то понять :v2_lol:



Много сделать не могу, но пару кирпичиков в фундамент империи положу.
а еще можно делать чтоб твоя программа запускалась только под русской локалью :v2_lol:
почему нет?

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

NEO SPECTRUMAN
04.12.2020, 22:01
Можно внедрить новый код расширения
может поменять само расширение для "старого" варианта?

tae1980
04.12.2020, 22:09
Плохо. Ты же вроде позиционируешь GRF как некий универсальный формат, а в итоге в контейнере не различить его содержимое. Просто мои алгоритмы выдают разную картинку в зависимости от режима. Но читатель файла не сможет понять, что ему отображать.
Не вопрос. Назначаем для "+9" новое значение и различаем по нему.
Как вариант предлагаю идти по порядку, и назначит формату "8 цветов" значение 1.
0 - 16 цветов
1 - 8 цветов
19 - палитра 256 цветов

выше 19 (раз у так сложилось исторически), присваивать значения для форматов с палитрами, например
20 - две и более палитры.

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


может поменять само расширение для "старого" варианта?
GRF-STAR? GRS :))
Не думаю что из-за одного бита, значение которого не имеет значение на 16 и более цветных машинах, стоит придумывать новое расширение.

NEO SPECTRUMAN
04.12.2020, 22:16
0 - 16 цветов
1 - 8 цветов

и все таки понятней когда
раздельный брайт
общий флеш и брайт

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


значение которого не имеет значение на 16 и более цветных машинах
на на менее цветных же имеет?
в придачу всегда проще переименовать старую картинку
чем выдумывать левые бинарные фиксеры

по расширению МАТЬ ЕГО видно что внутри
и не надо в hex редакторе высматривать под что оно...

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


GRF-STAR?
звезданутые грф?

GRO

GR8 - 8 цветов
GRF - как раз 15 цветов :)
GRP - с пол литрой

никакого то F нето в слове графика
тк graph

хотя русские давно перестали различать Фсякие Ф
им что F что PH что TH один хрен :)
а раньше дажо были отдельные буквы

tae1980
04.12.2020, 22:20
по расширению МАТЬ ЕГО видно что внутри
и не надо в hex редакторе высматривать под что оно...
Рано или поздно наступит момент когда число расширений превысит все разумные придела. Ни кому хорошо от этого не будет.
GR1, GR2, GR3, ... GR0 или G01, G02, ... G99.
Не думаю что обывателю будет дело до разницы между форматами G15 и G87 - ему нужно просто просмотреть картинку.

NEO SPECTRUMAN
04.12.2020, 22:28
Рано или поздно наступит момент когда
это интересно когда? :v2_lol:

а так я огитирую за

GR8 - 8 цветов
GRF - 15 цветов (яж надесь в профи нет черного брайта?)
GRP - с пол литрой

не надо плодить очередные rsid-ы и psid-ы под одним расширением

...хотя опять же 8 и 16 цветов это только у профигистов
другим вообще не ясно о чем идет речь
тк цветов и там и там 15

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


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

tae1980
04.12.2020, 22:36
это интересно когда?
Я не умею ванговать. Так что не знаю когда это наступит.


не надо плодить очередные rsid-ы и psid-ы под одним расширением
GRF имеет чётко выраженную структуру хранения данных. Моё мнение, всё что в неё вписывается должно иметь общее расширение и различаться по заголовку.
Мне например нужны, GRF с двумя и более палитрами, для создания палитровых эффектов и иных издевательств над палитрой. И таких форматов может быть много.
В заголовок можно внести дополнительные поля, например автора, дату создания, редактирования и прочее. А так же иные данные, например иконку, или даже превъющку.
Можно выводить текст поверх картинки.
Всё это будет вписываться в структуру формата GRF.

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

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


ну а патчить картинку чтоб она соответствовала новому стандарту он ее тем более не будет
Вот тут не понял. Зачем нужно патчить картинку если она соответствует стандарту? Не нужно делать плохой стандарт и вначале думать, это да.

Dec
04.12.2020, 22:48
В заголовок можно внести дополнительные поля, например автора, дату создания, редактирования и прочее. А так же иные данные, например иконку, или даже превъющку.
Можно выводить текст поверх картинки.
А чем это будет лучше, чем, например, tiff?

tae1980
05.12.2020, 06:29
А чем это будет лучше, чем, например, tiff?
А почему оно должно быть лучше или хуже?
В чем особенность GRF от других форматов? В его ориентированность на байтовое хранение данных и чередование данных графики-цвет. Всё.
Много это или мало? Достаточно, что говорить о нём как о самостоятельном формате.

Я пищал от восторга когда разбирался с GIF, все думают это графический формат в котором можно хранить анимацию. Но это не более 1% от его возможностей. По сути сам файл контейнер, в котором могут быть блоки совершенно любого назначения, в них может быть даже выполняемый код. Например, он может можно не просто хранить отдельные кадры, а кадры произвольного размера, можно указывать в какое место экрана их выводить, с какой задержкой, можно вывести текст поверх изображения и менять его. Можно проиграть музыку. Можно просто хранить внутри кусок текста, например описание или инструкцию. И т.п. При этом любая программа просмотра GIF возьмёт из него только то что её нужно, проигнорируя не нужные или не известные для неё данные.

Вот GIF я бы и брал за основу.

Dec
05.12.2020, 07:11
Просто куча спектрумовских форматов напоминает такую картинку:

https://xkcd.ru/i/927_v4.png

Чем условный bmp был плох для хранения растровой графики? В BITMAPINFOHEADER есть чудненькое поле Compression. Делов то было - выбрать свое значение, которое будет использоваться внутри zx-комьюнити. 1000h - multicolor с раздельным хранением точек/цветов, 1001h - с последовательным хранением, и т.д. Но в жизни каждого разработчика стоит великая цель - разработать свой самый лучший и удобный формат хранения данных.

izzx
05.12.2020, 13:40
У меня просмотрщик GRF на расширение файла не смотрит, только по заголовку или размеру определяет тип файла. Поэтому идея с разными расширениями мне не нравится ).

tae1980
05.12.2020, 16:38
Чем условный bmp был плох для хранения растровой графики?
Идеология BMP - описываем один пиксель, от 1 до 4 байт. Может и есть что-то внутри, но это уже костыль. И не факт что при использовании этого костыля, сохраниться обратная совместимость.

На самом деле на спектруме два формата с которым я имел дело в 99.9%? это grf и файлы в формате стандартного экрана (в CP/M - *.ctr). Был ещё pcx, как первый источник для формирования grf.

Как уже писал выше, общая особенность grf и ctr, изначально байтная ориентированность на хранение данных. Но если ctr это просто сохранный кусок памяти и данные в нём железо-зависимые, то в grf данные уже расположены во внутренней системе, что позволят выводить их на любом железе.

Использование форматов с иных машин (с того же IBM PC), так же упирается в то что в своей основе они организованы с оглядкой на пиксельное хранение данных. Так же не стоит забывать про то что у нас железные ограничения значительно выше чем на других машинах, как по объёму памяти и работе с ней, так и по скорости проца. А значит прямой перенос готовых решений как правило невозможен. Тот же bmp при прочих равных, будет грузиться у нас в 2-4 раза дольше. Вернёмся к этому вопросу когда у нас появится видеокарта.

Я планирую использовать следующие форматы:
grf - для хранения одиночных картинок. Но возможны множественные палитры.
scr - данные в формате физических экранов. Так же планируется заголовок по которому можно будет определить для какой машины этот файл. Для Профи 32кб.
xx1 - формат похожий на gif, но способный хранить несколько картинок. Возможно тут можно использовать grf с хитрым заголовком.
xx2 - формат открытки. Интерактивный формат. Отличие от xx1 в том что тут уже может быть музыкальное оформление и минимальное взаимодействие с пользователем (например, ожидание нажатия любой клавиши). Возможно это стоит объединить с xx1 или даже grf.

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

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

уточнение формата - 3 байта - содержит расширение, во избежании.
целевое железо - 3 байта - для какой машины создавался файл, будет иметь значение для железо-зависимых данных, для остальных информационное.
дата создания - 8 байт - формат ддммгггг.
время создания - 6 байт - формат ссммчч.
дата редактирования - 8 байт - формат ддммгггг.
время редактирования- 6 байт - формат ссммчч.
автор - 16 байт - текст
примечание - 32-64 байт - текст, комментарии и т.п.
Или так, единое поле автор.примечание - 32-64 - разделитель "0". Снимает ограничение на длину поля "автор", правда за счёт длины поля "примечание". Минус 1 байт на разделитель.

Даты можно хранить в 3 байтах и сохранять сколько прошло дней с Рождества Христова, на сегодня это 737763 дней. Или выбрать иную дату, поближе, тогда можно уложиться в 2 байта, их хватит примерно на период в 179 лет.
Время так же можно хранить в 3 байтах и сохранять число секунд прошедших с полуночи, максимальное значение 86400.
Эти форматы удобны тем, что для переход между дата/временем, нужно просто прибавить или вычесть нужное значение. Нет проблемы высокостных годов, месяцев 30 или 31 день (про февраль, вообще молчим), переходом между часами/минутами и прочее.

Dec
05.12.2020, 17:04
Идеология BMP - описываем один пиксель, от 1 до 4 байт
Повторюсь, внутри bmp может все что угодно, метод кодирования описан в поле Compression.


И не факт что при использовании этого костыля, сохраниться обратная совместимость.
Обратная совместимость с чем?


Тот же bmp при прочих равных, будет грузиться у нас в 2-4 раза дольше
За счет чего произойдет увеличение, если данные внутри bmp ничем не будут отличаться от обычных данных обычных спектрумовских файлов?


Так как grf был первым, придется взять его за основу
Не вижу причинно-следственной связи между "был первым" -> "придется". У grf даже сигнатуры файла нет, что бы определить, что файл действительно grf.

tae1980
05.12.2020, 19:21
Обратная совместимость с чем?
С иными програмами, в том числе на иных платформах.
Сделать можно "что угодно", и на назвать это "как угодно". Но что от этого измениться?
Тут всё просто, проводим натурный эксперимент. В чём смысл использования чужих стандартов? Получить совместимость. Если её не будет, за чем городить огород?
Для проверки теории нужно вручную подготовить один BMP в котором информация хранится по байтно. И давайте пробуемым открыть этот файл в разных программах. Например, в том же Фотошопе. Откроется - я готов рассмотреть этот вариант, нет - не вижу смыла даже говорить о нём.
Касаемо GRF, мы имеем совместимость со всеми программами под CP/M и как минимум две под Тырдос. Тогда как для работы с предлагаемым форматом BMP, нет ни одной программы (как минимум на Профи).

А чем формат BMP с по байтным хранением данных будет отличаться от GRF? Только заголовком? Как ты собираешься хранить данные о графике и цвете?


Не вижу причинно-следственной связи между "был первым" -> "придется". У grf даже сигнатуры файла нет, что бы определить, что файл действительно grf.
Это было предложение, не так нет. Смысл предложения в стандартизации, если GRF выпадает, значит предложение распространяется на оставшиеся форматы.

Dec
05.12.2020, 19:48
И давайте пробуемым открыть этот файл в разных программах. Например, в том же Фотошопе
Так и grf не откроется в Фотошопе.

Схему с использованием bmp я описал как вариант, который я бы использовал (много лет назад), если бы у меня была необходимость создать новый формат хранения растровой графики для zx. Насколько это актуально сейчас - я не знаю.


Как ты собираешься хранить данные о графике и цвете?
Если поле Compression = N+0, то сначала линейно идут все байты точек, затем идут все байты цвета.
Если поле Compression = N+1, то линейные байты точек и цвета чередуются.
Если поле Compression = N+2, то сначала по столбцам идут все байты точек, затем идут все байты цвета.
Если поле Compression = N+3, то байты точек по столбцам и цвета чередуются.

Я бы сделал как то так.


Это было предложение, не так нет.

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

tae1980
06.12.2020, 15:07
Так и grf не откроется в Фотошопе.
А GRF должен в нём открываться? А вот BMP должен.


На самом деле, если ты хочешь что-то сделать на основе grf - то делай.
То же самое могу сказать про несовместимый ни с чем BMP. Будет время и желание - поддержу, но пока его нет.
Сейчас есть два графических редактора которые работают с GRF, один с исходниками. Несколько вьюверов, набор разных утилит и прочее.
Ты предлагаешь вариант того же самого GRF, но не совместимый ни с чем. В чём логика? В том что "ты хочешь это сделать"? Но тогда при чём тут другие?

Я привёл несколько предложений по существу, а "в ответ тишина". Нет реакции, так нет, сделаю так как посчитаю нужным.
У любого действия должна быть "конечная цель". У меня это "унификация всего софта". Но вот в чём цель замены букв GRF на BMP с потерей совместимости с чем либо, я ни как не пойму. Несколько раз спрашивал на прямую, но и ты молчишь.

izzx
06.12.2020, 16:26
Я привёл несколько предложений по существу
Я посмотрел, пока возражений нету. Дело это сложное и ответственное. Думаю дату лучше в формате 8 байт, так проще и высчитывать ничего не надо потом.
Расширение в заголовке тоже полезное дело.
Код машины - вот тут скользкая тема. Так можно наплодить вариантов. Модификаций машин же много бывает. Может достаточно версии самого формата картинки.

Dec
06.12.2020, 19:03
А вот BMP должен.
Я сейчас глянул на текущие методы сжатия в bmp и обнаружил, что помимо BI_JPEG и BI_PNG, о которых я знал, добавились BI_CMYK, BI_CMYKRLE8, BI_CMYKRLE4. Откроет ли такие файлы условный Фотошоп? Сомневаюсь. Обратная совместимость - это когда старые форматы открываются в новом ПО, а не когда новые форматы открываются в старом ПО.


Ты предлагаешь вариант того же самого GRF, но не совместимый ни с чем.
На самом деле я ни чего не предлагаю. Я лишь критикую текущие решения.


У меня это "унификация всего софта"
Т.е. создание некого универсального формата, основанного на grf? Старое ПО сможет с ним работать?

tae1980
06.12.2020, 19:38
Код машины - вот тут скользкая тема. Так можно наплодить вариантов. Модификаций машин же много бывает. Может достаточно версии самого формата картинки.
Данный пункт относиться к формату SCR, который представляет собой просто кусок экранной памяти. Предположительно будут такие форматы:
* стандартный экран ZX.
* расширенный экран Профи.
* экран GMX.
Ну и другие машины со своими экранами. Можно кончено для каждого случая использовать своё расширение (как вариант: szx, spr, sgm) и вообще отказаться от заголовка. Но смысловая нагрузка тут одинаковая, а мой опыт показывает, что такую информацию лучше объединять.

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


Т.е. создание некого универсального формата, основанного на grf? Старое ПО сможет с ним работать?
Старое ПО будет работать с соответствующими версиями файлов, а новый версии могут быть открыты с частичной потерей информации. Например: без проблем будут открываться много палитровые файлы, но только с первой палитрой или в много страничных файлах, будет открыта только первая страница и т.п.

Подобные проблемы есть и под виндой, например далеко не все вьюверы знаю,что tiff может быть много страничным и содержать геоинформацию.

Нужно это или нет? Я думаю, что нужно, особенно на начальном этапе. Да и внедрять новое проще (и правельнее) постепенно, чем переписывать "всё и сразу".
Простой пример. Есть на Профи редактор музыки SM, у него есть возможность загрузить картинку на рабочий стол, но во внутреннем формате. Для перевода картинок во внутренний формат есть специальная утилита, которая в качестве источника использует черно-белые GRF.

izzx
06.12.2020, 21:09
Данный пункт относиться к формату SCR, который представляет собой просто кусок экранной памяти. Предположительно будут такие форматы:
* стандартный экран ZX.
* расширенный экран Профи.

А для профи разве достаточно копии экранной памяти? А палитру загрузить? Или в заголовке будет?

Dec
06.12.2020, 21:12
Данный пункт относиться к формату SCR, который представляет собой просто кусок экранной памяти
А для чего вообще пихать дампы памяти в какой-то контейнер? Ты так много говоришь о совместимости, но при этом заставляешь читателя файла знать о подробностях устройства каких-то конкретных машин. Все, что нужно знать читателю - как кодируется цвет в файле.


Да и внедрять новое проще (и правельнее) постепенно, чем переписывать "всё и сразу".
Вот только твой эволюционный путь от текущего grf формата к некому идеальному формату приведет к тому, что этот формат будет набором костылей. Я тебя спросил "А как мне различить, что файл создан для 8 цветной (общая яркость + мигание) или 16 цветной (яркость раздельная, мигания нет) машины?". Твой ответ - "Ни как. GRF это не предусматривает. Назначаем для "+9" новое значение и различаем по нему." Т.е. просто берем и добавляем еще один маленький костылек. И в конце развития твой формат превратиться в кучу этих костылей.

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

tae1980
07.12.2020, 20:31
Думаю дату лучше в формате 8 байт, так проще и высчитывать ничего не надо потом.
Замечание. Вычислять что нибуть нужно будет при любой форме хранения. Например, для сравнения двух дат, в случае с 3 байтным хранением, идёт простое сравнение двух чисел, в случае с 8 байтным довольно сложная процедура. То же самое с вычисление разницы между датами и т.п. Единственный плюс 8 битного хранения быстрая подготовка к выводу.

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


А для профи разве достаточно копии экранной памяти? А палитру загрузить? Или в заголовке будет?
Да, точно, совсем забыл про палитру. То есть заголовок нужен.

NEO SPECTRUMAN
07.12.2020, 20:45
Данный пункт относиться к формату SCR,
к которому по моему тоже пришлепывают палитры
только уже сзади а не в заголовках


A 6912 byte .SCR file contains a standard Spectrum screen.

A 6976 byte .SCR file contains a standard Spectrum screen followed by 64 colour registers.

A 12288 byte .SCR file contains a Timex hi-colour screen.

A 12352 byte .SCR file contains a Timex hi-colour screen followed by 64 colour registers.

A 12289 byte .SCR file contains a Timex hi-res screen.

A 12353 byte .SCR file contains a Timex hi-res screen followed by the hi-res colour information that was dumped from port 255, followed by 64 colour registers.

и детектитсо все по длине размерам

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

так что может можно хранить *****е экраны от профей и гмх-ов в обычном scr и не морочить голову
(ну кроме тех неотличимых вариантов с 8\16 цветами)

tae1980
07.12.2020, 21:18
А для чего вообще пихать дампы памяти в какой-то контейнер?
Как напомнили мне выше, как минимум для того что бы разместить в нем палитру. Ну и за одно кучу информации о которой я писал выше. Так и хочется спросить, ты чужие сообщения вообще читаешь?


Ты так много говоришь о совместимости, но при этом заставляешь читателя файла знать о подробностях устройства каких-то конкретных машин.
Не "читателя", а "программиста". И много я говоря не просто про эфемерную "совместимость", а про совместимость "среды ZX" в целом. При чём прозрачно для пользователя.
Примером этого служит возможность просмотра картинок подготовленных для Профи на GMX и на оборот. Или возможность просмотра картинок под стандартный экран на расширенном экране Профи. Не понимаю почему это плохо. Для формата SCR на "не родных" машинах/режимах, нужно всего лишь написать разбор перед выводом. Чем это отличается от вывода BMP формата?


Назначаем для "+9" новое значение и различаем по нему." Т.е. просто берем и добавляем еще один маленький костылек.
Ты бредишь! "+9" это признак не стандартного формата, то есть расширения. Это же в инструкции написано "черным по белому". Ты понял, что заголовок у GRF может быть любой длины, а не только 128 байт? У тебя не возникло вопроса "а за чем это понадобилось?", при столь "лаконичном" заголовке?

Что за двойные стандарты? Ты в курсе, что BMP может содержать упакованные данные? Но ни где это не использоваться. Наличие такой возможности - это костыль?
И создать из BMP уродца, которого не сможет прочитать ни одна из существующая программ, ни на одной плат форме - это не "использовать костыли"?

Подобный образ мысли преобладает у группы "НЕДО"что угодно. Из-за чего итоговый результат их работ "немножко с душком".

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


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


*****е экраны от профей и гмх-ов
Не нравиться - не пользуйся. Только вот ты в теме про программу для формования подобных экранов.

izzx
07.12.2020, 21:39
Я думаю для начала можно добавить метку стандартных цветов ZX. Которые с общей яркостью. Чтобы как выше писали, отличалось от 16 цветов. Такое и на гмх можно будет просто открыть и на стандартном экране.

upd. Но правда не решён вопрос с разными пропорциями пикселей.

Dec
07.12.2020, 22:23
Как напомнили мне выше, как минимум для того что бы разместить в нем палитру.
NEO SPECTRUMAN описал ULAPlus файлы. Какую палитру ты хочешь добавлять к стандартным SCR файлам?


Не "читателя", а "программиста".
Под читателем я подразумевал программиста, который будет писать код для поддержки твоего формата для своей платформы.


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


Для формата SCR на "не родных" машинах/режимах, нужно всего лишь написать разбор перед выводом. Чем это отличается от вывода BMP формата?
Тем, что для bmp не нужно знать аппаратных особенностей той платформы, на которой он был создан.


Ты бредишь!
Ок, позиция ясна.


Но ни где это не использоваться.
То, что ты или условный фотошоп не используют сжатие в bmp не обозначает, что эта возможность нигде не используется.


И создать из BMP уродца, которого не сможет прочитать ни одна из существующая программ
Что так привязался к bmp? Я ведь тебе пишу "cоздай нормальный продуманный формат", а не "непременно используй bmp". "Так и хочется спросить, ты чужие сообщения вообще читаешь?"
Твой новый формат (точнее планируемое тобой расширение) точно также не сможет прочитать ни одна из существующая программ.


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


Но правда не решён вопрос с разными пропорциями пикселей.
Можно просто добавить еще один костыль дополнительный флаг в файл.

tae1980
08.12.2020, 20:11
Dec, у меня такое ощущение, что говорю со стеной. На 70% вопросов и тезисов в последнем сообщения я отвечал выше. Ты либо не читаешь мои сообщения, либо не понимаешь. В частности ты не понимаешь за чем вообще нужен формат SCR и какова его функция. Я устал от безоконного переливания "из пустого в порожнее". Реальных предложения от тебя было только одно и то высказанное под моим давлением.
Делай, что и как хочешь. Данный диалог с тобой я заканчиваю. Удачи!

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


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

уточнение формата - 3 байта - содержит расширение, во избежании.
целевое железо - 3 байта - для какой машины создавался файл, будет иметь значение для железо-зависимых данных, для остальных информационное.
дата создания - 8 байт - формат ггггммдд.
время создания - 6 байт - формат ччммсс.
дата редактирования - 8 байт - формат ггггммдд.
время редактирования- 6 байт - формат ччммсс.
автор - 16 байт - текст
примечание - 32-64 байт - текст, комментарии и т.п.
Пропорции пикселя - 1 байт - тут либо хранить процент (50, 70, 100), либо отношение целое (1, 2, 3, читается как 1:1, 1:2, 1:3), либо отношение дробное в каком либо виде (1.0, 0.5, 0.7). Я не планировал вводить данный пункт, собираясь получать данные аналитически из ходя анализа поля "целевое железо".
На практике реализовывать два пути решения вопроса пропорций: 1) игнорировать, выводить как есть 2) подстраивать изображения путем пропуска или дублирования пиксельных линий.

Скорее всего нужно ввести поле: формат палитры - 1 байт - Пока у нас один тип палитры: 1 байт на цвет, но в будущем это может измениться. Так что тут пока значение 1, потом может появиться 3.

NEO SPECTRUMAN
08.12.2020, 20:27
2) подстраивать изображения путем пропуска или дублирования пиксельных линий.
при этом все дизеринги и штриховки идут таким лесом что...

вопрос когда может это понадобится?
при отображении 640х200 на 6912?

так же
больше ~448 пикселей в строке быть не может физически
любые размеры больше имеют пропорции пикселя 0,5х1
1:3 непонятно вообще от куда может взяться

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

кстате если нужно отображать 1:2 на 6912
можно делать 2х зум сохраняя пропорции
и отображать перемещаемым окном
как это во многих других виеверах на спектруме

Dec
08.12.2020, 21:11
у меня такое ощущение, что говорю со стеной
У меня такое же ощущение.


Данный диалог с тобой я заканчиваю
Согласен, наш диалог относительно твоего формата стоит закончить, как бессмысленный.

Но все же прошу ответить на мой вопрос, который не имеет отношения к развитию твоего формата: А каков на данный момент алгоритм, позволяющий отличить grf файл от случайного набора байт?

tae1980
09.12.2020, 10:56
при этом все дизеринги и штриховки идут таким лесом что...
Что есть то есть. Но всё таки результат должен быть премлемый. Но другого пути я не вижу.
Если есть реальный иной путь, прошу указать.


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


1:3 непонятно вообще от куда может взяться
Олег уже выслал мне Карабас-Про. Как придёт проведу замеры.

NEO SPECTRUMAN
09.12.2020, 18:23
Например, перед печатью на принтере,
перед мифической печатью на принтере

tae1980
09.12.2020, 21:08
перед мифической печатью на принтере
У меня принтер были и есть. Восстановил его и отвез его на дачу специально для подключения к спекку. Если у тебя чего нет и ты этим не пользуешься, то говори только за себя.
Кроме того в планах есть написание виртуального принтера. Как минимум у меня эта вещь будет весьма востребована.

NEO SPECTRUMAN
09.12.2020, 21:40
Если у тебя чего нет и ты этим не пользуешься, то говори только за себя.
с таким же успехом если у ТЕБЯ что то есть
это не значит что это есть у всех других

*****е принтеры даже в эмуляторах хрен найдешь
что как бы намекает на то на сколько они кому либо нужны

tae1980
10.12.2020, 09:25
Вернусь к вопросу хранения даты и времени в заголовке файла. Я предлагал текстовое хранение. Что удобно при выводе, но при работе нужно превращать в цифровое значение. Тут подумалось что данные можно сразу хранить в цифровом виде.
Время выглядит так: 24 часы 60 минуты 60 секунды. То есть без проблем лезут в байт, и нужно всего 3 байта. А если отказаться от секунд, уложимся в два. Что позволит проводить сравнение двух байтных чисел напрямую, когда конкретные значения не важны.
С датами почти то же самое: день, месяц лезут в байт, а вот год в два байта. Только год можно хранить как число "2020" или как два числа "20", "20".
Будут мысли по этому поводу?

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


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

NEO SPECTRUMAN
10.12.2020, 09:41
Время выглядит так: 24 часы 60 минуты 60 секунды. То есть без проблем лезут в байт, и нужно всего 3 байта. А если отказаться от секунд, уложимся в два. Что позволит проводить сравнение двух байтных чисел напрямую, когда конкретные значения не важны.
С датами почти то же самое: день, месяц лезут в байт, а вот год в два байта. Только год можно хранить как число "2020" или как два числа "20", "20".
Будут мысли по этому поводу?
можно хранить в двоично десятичном виде
это будет удобней для вывода итд
...ну например человеко читаемо из нёх редактора

$24 $60 $60

день и месяц в байт не влезут
так что проще не экономить биты а тоже выделить под все 4 байта
$12 $31 $20 $20

9999 годов хватит всем :v2_lol:
так же как 99 месяцев по 99 дней на случай чего :)
так же как и 99 минут на случай перехода на правильное времяисчисление

только вопрос нахрена это нада?

izzx
10.12.2020, 13:11
так что проще не экономить биты а тоже выделить под все 4 байта
$12 $31 $20 $20
...
только вопрос нахрена это нада?
Тоже думаю что сильно экономить не надо. И формат даты предложен интересный.
И я забыл уже для чего затевалась переделка формата и к чему в итоге хочет прийти автор ).
Я думал может аккуратно добавить пару меток не ломая заголовок в целом. Но для чего вообще всё, в том числе дата... Наверное под cpm это имеет смысл... Но автору виднее.

tae1980
11.12.2020, 10:44
Я думал может аккуратно добавить пару меток не ломая заголовок в целом. Но для чего вообще всё, в том числе дата... Наверное под cpm это имеет смысл... Но автору виднее.
Моя цель максимально расширить существующий формат без потери совместимости. При этом создать несколько новых или форматов, или расширений имеющихся форматов. Окончательно решение будет принято позже, на основе практики. Пока же стоит более узкая задача, определиться с составом полей, которые должны стать общими для всех (или большинства) форматов. Конечный состав полей может и отличаться от обсуждаемого набора, так как тут только первый этап обсуждения.

Думаю не корректно говорить о "нужно полей в какой либо ОС", нужно обговорить практическую необходимость разных полей. Например поля даты, и времени нужны для отслеживания изменений в процессе работы. Да на Профи есть микросхема реального времени, но это уже не такая редкая вещь и для других клонов. И работа может происходить на ПС.
Когда идет работа над чем либо, всегда будут промежуточные версии результата работ, в них так же нужно как-то ориентироваться. Только имени файла часто бывает недостаточно, особенно в случае физических проблем. В этом и помогут эти поля. А поле "комментарии" позволит записать или номер версии, или напоминалку для себя (при конверсии картинки сюда можно писать имя исходного файла).

Я бы разделить все поля на категорий:
1. Технические. Описывают формат и иные особенности содержания файла.
2. Информативные. Дающие дополнительную информация. Например, дата, время и прочее.
3. Вспомогательные. Сюда бы отнёс поле "комментарии" и подобные.

Sayman
11.12.2020, 11:44
Сожрал ни одну пачку попкорна наблюдая за темой.
tae1980, ты так и используешь описание формата, что я тебе высылал? Поднял старый док. по смещению +9 версия файла. 0 = старый (оригинальный формат) и 1.9 (19dec) для моей тогдашней версии с поллитрой.
заголовок 128 байт. признака, что файл GRF никогда не было. при разработке версии 2.0 по смещению +10, вместо палитры разместить 3 байта - GRF, как признак формата. тогда новая гляделка спокойно погрузит заголовок 128 байт, проверит версию файла - если там 0 или 19, тогда работать как со старым файлов. если 2.0 и выше, то проверить на всякий случай признак GRF. Если есть, то продолжать работу, иначе выход с ошибкой.
128 байт весьма не мало для такой машины, как Профи. Таймштамп в файле - хорошая задумка. BCD формат давно существует, его и использовать.
если размер заголовка не будет меняться, то даже GrandCroix мезозойской эпохи сможет показывать более новые файлы, но без палитры.
Дамп экрана Профи тоже неплохая тема. Вот только нужно различать 3 версии машины - ЧБ, с цветом и с цветом+палитра. тогда можно простыми ldir`ами данные кидать из файла в экран или даже сразу грузить в экран.

а вообще да, машины обделённые цветом вынуждены извращаться с форматами, палитрами и прочими костылями...

tae1980
11.12.2020, 17:08
tae1980, ты так и используешь описание формата, что я тебе высылал?
Да. Иной есть только в описании GrandCroix, но они идентичны.

Предложение по GRF очень интересные, думаю так и нужно сделать.


BCD формат давно существует, его и использовать.
А нужно ли использовать нестандартные для Z80 форматы? Просто цифр в десятичном виде, кажется будет достаточно.
Но формат BCD я использую в другом месте :) Спасибо, что напомнил от нём.