*sarcasm mode on* Если цвета с этих Ч/Б картинок без переделки (т.е. "искаропки") совпадут с их цветными аналогами, тогда поздравляю, Вы изобрели заново способ кодирования цветных изображений *sarcasm mode off*
З.Ы. Искренне завидую. И поздравляю с впечатляющим результатом.
14 Apr 2015 23:32
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22572 Location: Silicon Valley
Вот набросал номера аппловской палитры и всех моих четырёх палитр - больше всего совпадений у палитры 1, однако полного совпадения нет нигде и логики формирования цветов я не вижу, ну и кроме того пара цветов чуть другие (ярко красный вместо оранжевого и жёлто-зелёный вместо коричневого):
P.S. Посмотрел на те аппловские картинки внимательнее - они на самом деле чёрно-белые, т.к. в областях, которые должны быть покрашены одним цветом на самом деле разные паттерны пикселов присутствуют и не с шагом не кратным 4 - так что раскрашиваться они НЕ будут
Видимо от режима 256x200 с почти что квадратными пикселами (и круглыми окружностями) придётся отказаться (ну не натягивается он на частоту 57.27272 МГц) - в результате остаются только ПЦ режимы - 320x200 да 640x200 с цветом и без...
С другой стороны 256x200 тоже можно оставить как вариант - ведь с ним всё быстрее и без кварца можно обойтись...
Поэкспериментировал - 256x200 без дополнительных проверок на режим работает ровно с такой же скоростью, что и 320x200, а вот если такую проверку поставить, то ВСЕ режимы начинают работать медленнее - т.е. вывод: отказываемся от 256x200 как бесполезного режима, в результате частоту проца без кварца уменьшаем с 64 до 60 и 320/640 начинают влезать более удобным образом...
А Вам не кажется, что этот режим был бы весьма удобен для отображения скриншотов ZX_Spectrum или даже для эмуляции последнего на платформе PIC32 ?
Ну 256x192 замечательно влезает в 320x200
А вообще для показа ZX-экранов нужен цвет, который на PIC32 без дополнительной хардверной обвязки возможен пока только в режиме 160x200, куда ZX-экран очевидно не влезет...
P.S. Кстати оказалось, что PIC32 работает в режиме "little-endian", а я так надеялся, что он big (MIPS-ы вроде умеют и так, и эдак)...
Я понял в чём состоял конфуз - хоть слова и представляются в памяти PIC32 в little-endian, SPI модуль вышвыривает их в однобитный выход старшими битами вперёд - отсюда и ощущение big-endian, однако это противоречит CGA, куда я эту либу тоже хочу портировать, т.к. там старшими битами вперёд идут только отдельные байты, а байты внутри слова идут младшими байтами вперёд - получается такая переплетающаяся косичка...
Начинаю осваивать программирование CGA, например вот эта программа для OpenWatcom-C переводит CGA в композитный режим и генерит цветовые полоски, аналогичные XORLib-овским (правда обращаться к памяти надо побайтно, т.к. в словах байты переставлены из-за little-endian):
P.S. Кстати оказалось, что PIC32 работает в режиме "little-endian", а я так надеялся, что он big (MIPS-ы вроде умеют и так, и эдак)...
Я понял в чём состоял конфуз - хоть слова и представляются в памяти PIC32 в little-endian, SPI модуль вышвыривает их в однобитный выход старшими битами вперёд - отсюда и ощущение big-endian, однако это противоречит CGA, куда я эту либу тоже хочу портировать, т.к. там старшими битами вперёд идут только отдельные байты, а байты внутри слова идут младшими байтами вперёд - получается такая переплетающаяся косичка...
Чтобы сделать единообразным код приложений и для PIC32, и для CGA, мне пришлось перенастроить связку DMA-SPI, чтобы они работали не с 32-битными словами, а с 8-битными байтами - тогда байты будут в правильном порядке засовываться - попутно указатель на видеопамять стал unsigned char* вместо int* - в результате оно как-то даже ускорилось: рисование пикселов стало на 1% быстрее, а рисование символов аж на 43% (это из-за того, что теперь не надо в слове маскировать знакоместо). Правда в режиме 640 пикселов в строке DMA стал не успевать предоставить второй байт в каждой строке - фиг знает почему - в результате пришлось всё сдвинуть маленько, чтобы эта дырка была в невидимой области - как итог получилась новая версия либы XORLib v0.2, но я её пока не выкладываю, т.к. надо все примеры под новый способ работы с видеопамятью подправить. Также попутно поменял режим XOMODE_320x100_GRAY5 (когда один серый псевдопиксел представляется квадратом 2x2 чёрно-белых пиксела) на XOMODE_213x200_GRAY4 (когда один серый псевдопиксел представляется горизонтальной полоской из 3 чёрно-белых пикселов), т.к. он более логичен по соотношению сторон...
Users browsing this forum: No registered users and 21 guests
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot post attachments in this forum