Внимание! Эта статья ещё в разработке, она создаётся общими усилиями на форуме nedopc.com. Тема "VGA режим", стр 9.
Первую половину этого текста
специалисты могут смело пропустить - она предназначена для таких же как я
новичков в электронике.
Мне стал интересен принцип построения
изображения на экране. Интерес перестал быть праздным когда я увидел
искажения пропорций пикселей ZXEvo в VGA на LCD мониторе. Раньше я с
этим совсем не сталкивался, меня устраивала картинка сперва через тюнер
AverMedia9, затем через ZXKit1VGA&PAL. Не было искажений,
бросающихся в глаза, а фэйлящие в этом режиме демки я или не видел, или
не понимал что это там на экране за фигня.) Выяснилось, что
авторы ZXEvo старались как могли, но что вышло - то вышло. И не потому,
что они такие нехорошие дяди, а в силу аппаратных особенностей LCD
мониторов. И пошёл я читать форумы, википедию, и гуглить, чтобы понять в силу каких именно, и можно ли с этим что поделать.
После этого вернулся просветлённым и перечитал заново цитаты:
ZXKit VGA меняет развертку (он работает в режиме фреймбуфера) поэтому все мультиколоры едут в анус. Мы развертку категорически не меняем а работаем в режиме скандаблера. Кстати интересно как ведут себя ванфрейм движухи на ZXKit VGA - небось дергаются :), а у нас точно нет.
ru.wikipedia.org/wiki/Скандаблер Flicker
fixer получает видео-сигнал от персонального компьютера и запоминает
его в небольшом объёме памяти, затем частота полученного видео-сигнала
сдвигается (promote (англ.)) с 15 кГц на 31,5 кГц, после чего
изображение может быть показано на любом современном CRT-мониторе в
режиме VGA. С удвоением частоты связано другое распространённое название
Flicker fixer — Scan Doubler
ru.wikipedia.org/wiki/Фреймбуфер Кадровый
буфер (англ. framebuffer) (другие названия: буфер кадра, видеобуфер,
фреймбуфер) — реальное или виртуальное электронное устройство, или
область памяти для кратковременного хранения одного или нескольких
кадров в цифровом виде перед его отправкой на устройство видеовывода.
Контроллер монитора экстраполирует размер изображения в размер тфт матрицы монитора. 1024x768, 1280x1024, или другой размер.
И
получается вся эта фигня. Поэтому если в мониторе нет ручной настройки
масштабирования по горизонтали и вертикали, и смещения всей картинки по
осям XY, то такой монитор будет выдавать картинку растянутой
пропорционально своему чуткому революционному чутью. Свой монитор я смог
настроить (по шахматной заливке в artstudio) только по горизонтали. На
вертикаль у него просто нет пункта в меню. В результате искажения и
мерцание движущихся текстур увы остались. Яркий рождающий лютую
ненависть пример - игра HATE, что как бы намекает.
Поэтому я не
успокоился, и продолжил думать, уже отягощённый некоторой теоретической
базой, позволяющей хотя бы в общих чертах понимать, что мне отвечают все
эти люди)))
* * * Конец первой части. Начало второй. * * *
Приведу ещё цитату:
Для
людей далековатых от физики/электроники объясню, что пентева генерит
развертку НЕсовместимую со стандартными VGA режимами с целью сохранения
совместимости с оригинальным железом. Поэтому многие мониторы отображают
ее неправильно. Если уважаемый нуб сможет без остатка разделить 1280
пикселей (размер матрицы монитора), либо другое значение (1680, 1920),
на 360 (количество видимых пикселей в строке пентеворазвертки), то он
очевидно получит ровные пиксели. Без значительного усложнения скандаблера/удорожания платы пока только так.
В статье http://speccy.info/256x192#Scorpion описаны
тайминги графического режима 256x192 ZX Spectrum. Там приведено много
характеристик разных клонов, и не все я нашёл в документации на ZXEvo.
Тактов в строке: ? Строк в кадре: ? Строк перед началом растра: ? Частота строк: 31.3 кГц (выдал мой монитор SyncMast510n) Частота кадров: 49 Гц (выдал мой монитор SyncMast510n)
Какие эти параметры у ZXEvo? Могут ли они разниться в прошивках от TSLabs и ScorpEvo, и если да, то какие параметры у них?
Я тогда забыл спросить у цитируемого автора, откуда он взял именно 360п? Не нашёл в документации на ZXEvo. Какой
размер бордюра вокруг экрана Спектрума? Он ведь существует не
абстрактно и измеряется пикселями? Просто выводить в него можно только
сразу целыми строками, как я понял. (пошлите меня куда почитать на эту
тему пож-та) Отняв ширину строки экрана и поделив результат
(360-256)/2= 52 я получил ширину бордюра в пикселях с каждой стороны от
экрана. Скажите, я правильно мыслю?
Хотя мне всё ещё не хватает
ответов на заданные вопросы, выскажу предположение, что раз любое
оперирование с бордюром возможно лишь целыми линиями, то не один ли
черт, какой они будут длины? Каким образом это может отразиться на
совместимости программной или аппаратной? Если никаким, то почему бы не
привести размер картинки за счёт бордюра к такому, чтобы его кушал любой
среднестатический монитор с матрицей 1024x768 или 1280x1024?
Ведь
где-то эта ширина задаётся? Добавить возможность либо редактировать
параметры размеров бордюра в самом ZXEvo, либо преобразовывать это в
модуле VGA, не трогая спекк. и тогда прошивка монитора получит другой
размер картинки, и не будет растягивать её с такими искажениями
пропорций пикселей.
Не зная истинных габаритов бордера вокруг экрана я не берусь строить вычислений.