PDA

Просмотр полной версии : Еще одно расширение видеорежима



ZEK
26.07.2009, 16:55
В общем имеем:
Модуль паказыватель с фильтром картинки типо NoFlic в Unreal, ток аппаратно.

Принцип действия:
1. Имеем 256к памяти разбитой следующим обрахзом
00000-0FFFF - Фрейм буфер 0 (FB0)
10000-1FFFF - Фрейм буфер 1 (FB1)
20000-2FFFF - Фрейм буфер 1 (FB1)

30000-3FFFF - теневые копии страниц Sp128 (4,5,6,7)

2. Модуль слушает ZBUS и если нада втихую пишет в копии страниц (4-7) себе в память.

3. Есть кусок зовется Spectrum Scanner, который со скоростью соответствующего модуля в усредненном клоне читает данные из теневых копий и пишет их в FBx. Причем первый кадр пишется FB0, второй FB1, третий FB2,а потом опять по кругу. В общем мы имеем что то в духе скриншота текущего кадра спектрума и 2 предыдущих.

Фрейм буффера имеют размер в пикселях 320х240 точек, то есть туда пихается помимо активной области еще и бордюр. То есть там копия того что попало бы на телевизор если картинка шла напрямую.

В буффере (а он 16 битный) в одном слове храниться 4 точки в формате 16 color. Память организована по мотивам Специалист, Орион. То есть последовательно в памяти храняться столбцы, правда из 256 слов использованно только 240. В общем структура хранения фактически хранит виртуальный экран 512х256х4бит = 64кб.


Есть модуль который генерит картинку для VGA. В общем если упустить ненужные детали то перед выводом каждых последующих 4 пикселей он имееь в наличии 3 16 битные слова. То есть по 4 пикселя из каждого FBx, потом он их мешает и получает усредненную картинку, с сохранением бордюрных эффектов, мультиколора, немигающий гигаскрин и другие побочные эффекты NoFlic.


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

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

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

---------- Post added at 14:55 ---------- Previous post was at 14:36 ----------

Еще нюанс, при включении расширения, частота процессора будет жестко переключаться в 21МГц и будет включаться дополнительный INT 60Hz. Любой может маскироваться и соответсвенно можно будет определить какой пришол. 50Нz INT нужен в принципе только для музыки.

valeron
26.07.2009, 20:20
NoFlic - это супер! Давно я о таком мечтал.
А на чем сделан твой девайс? Легко ли его повторить? Или может ты его производить планируешь и продавать?

ZEK
26.07.2009, 20:55
А на чем сделан твой девайс?
На Verilog. Запускаю на DE1

valeron
26.07.2009, 21:50
Ясно. Пока еще только в мечтах. Если вырисуется несложная схема, опиши пожалуйста как устроена, может кто и сделает такую в железе.

ZEK
26.07.2009, 22:15
сли вырисуется несложная схема
Да там нет никакой схемы FPGA + 16bit SRAM аналоговая часть VGA вешается на ZX-BUS. Рисовать разводить не буду так как планирую в DE1 юзать...

bigral
27.07.2009, 00:28
Да там нет никакой схемы FPGA + 16bit SRAM аналоговая часть VGA вешается на ZX-BUS. Рисовать разводить не буду так как планирую в DE1 юзать...

Сразу вспомнил слова классика - "спектрум это телевизор" (с) Nemo.

1. Если спектрум передает свой экран на телик со скоростью (50hz) то передача в твои промежуточные буферы и на 60hz VGA уже не будет экраном "спектрума" а как правильно тут указанно "screen shot-ом" и то не ясно в какой момент (период?) времени снятым. Короче эмулятор zx-экрана далекий от оригинала.

ZEK
27.07.2009, 08:01
экраном "спектрума" а как правильно тут указанно "screen shot-ом" и то не ясно в какой момент (период?) времени снятым
Почему не ясно?

bigral
27.07.2009, 14:26
Почему не ясно?

Ну я не понял лично. Есть кусок "Spectrum Scanner" который перекидывает в промежуточные буферы (когда конкретный пиксель с экрана попадет туда не ясно), к тому же не ясно когда же из этих промежуточных буферов пиксель попадет таки на экран (VGA?).

Софт спектрума обладает подогнанной под ход луча процедурой вывода изображения. Обычно изображение в памяти меняется все время, даже перед самым проходом луча чтобы закончить обновление текущего кадра, а после прохода луча оно считается уже устаревшим и перестраивается полностью до следующего прохода луча. Это значит что в промежуточные буферы скачивать копии zx-экрана нужно синхронно с лучем и так же синхронно их выводить после обработки но тогда появится проблема запаздывания кадра на 2...3... и будет казатся что управление и музыка срабатывают быстрее а видео "ТУПИТ". :)

ZEK
27.07.2009, 14:45
Софт спектрума обладает подогнанной под ход луча процедурой вывода изображения.
Есть кусок в модуле который зовется спектрумовский сканер, так вот он идентичен "усредненном клону". И пишет в буфер все что попалось бы по ходу луча телевизору. Со стандартной скоростью с частотой 50гц. В том числе и пишет бордюр с грануляцией 4 пикселя.

Black_Cat
27.07.2009, 21:20
перед выводом каждых последующих 4 пикселей он имееь в наличии 3 16 битные слова. То есть по 4 пикселя из каждого FBx, потом он их мешает и получает усредненную картинкукак ты его мешаешь, аналогово?
В общем структура хранения фактически хранит виртуальный экран 512х256х4бит = 64кбт.е. заточен токо под 256х192.. а если 512х192 не говоря уже о чём-то большем?
Радикальные модификации не стоит оглашатьРадикальные модификации ты имеешь ввиду такие: вариант F4? (http://zx.clan.su/forum/7-19-1) ..или это не радикальные? :)
какие соображения есть по поводу альтернативного использования памяти это конструкции
а что Летаргик говорит?

---------- Post added at 21:20 ---------- Previous post was at 21:07 ----------


будет включаться дополнительный INT 60Hzа почему не 75Гц, твой монитор не умеет? :)

ZEK
27.07.2009, 21:34
как ты его мешаешь, аналогово?
Нет, внутри FPGA. Сейчас мешается как экспериментальный вариант (в скобках смещение относительно последнего фрейма) по таким коэффициентам 1(0) 1(-1) 0,5(-2)


т.е. заточен токо под 256х192.. а если 512х192 не говоря уже о чём-то большем?
Не заточен просто было удобней в память ложить из учета что поддерживается 16color режим. То есть на картинку + бордюр уходит 48кб, после того как разложил по столбцам с остатками неиспользуемой памяти получилась картина виртуального экрана 512х256 из которого юзается только 320х240.


Радикальные модификации ты имеешь ввиду такие: вариант F4?
Я ядерную физику не могу осилить


а что Летаргик говорит?
Его лишний раз злить опасно.

а почему не 75Гц, твой монитор не умеет?
Что бы нагрузку на память снизить.

Black_Cat
27.07.2009, 23:28
Сейчас мешается как экспериментальный вариант (в скобках смещение относительно последнего фрейма) по таким коэффициентам 1(0) 1(-1) 0,5(-2) :v2_conf2: в ядерной физике смеситель будет более адекватный пожалуй :)

ZEK
27.07.2009, 23:40
адекватный пожалуй
да я для отладки сделал, мне так удобней, потом можно будет полюдски

Black_Cat
27.07.2009, 23:55
полюдски - это как?

ZEK
28.07.2009, 00:11
Тут было где то обсуждение как должен выглядеть гигаскрин, вот исходя из накопленного опыта и буду рисовать смеситель. Сейчас он абсолютно неважен. К тому же там еще источники добавятся поэтому он чуть ли не последним в очереди.

Black_Cat
28.07.2009, 00:22
Тут было где то обсуждение как должен выглядеть гигаскрин, вот исходя из накопленного опыта и буду рисовать смеситель. я не про соотношение цветов, а про соотношение кадров.. , а такого обсуждения небыло.. сейчас оно у тебя странное.. 1:1:0,5

Black_Cat
29.07.2009, 15:31
Замечания по соответствию концептуального решения заложенной в конструкцию идеологии:

1) С т.з. идеологии развития Спектрума ясно, что бордюр был всего лишь средством обеспечения линейности полезного изображения на CRT, а следовательно при переходе на TFT эта проблема исчезает сама собой. Т.е. бордюр с т.з. эволюционного развития системы отображения - это ненужный рудиментарный пережиток, цепляться за который нет никакого смысла.
2) Если же автор всёж решил воспроизводить бордюр, то это имеет смысл делать только в случае его полного воспроизведения. Урезанный же бордюр может выполнять роль только индикатора наличия бордюрного изображения, но не позволяет видеть целиком изображение, тем самым делая бессмысленным само такое воспроизведение.

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

Решение: либо увеличить ОЗУ для записи как минимум всей видимой области CRT в рамках выбранной идеологии, либо изменить идеологию и отказаться вообще от оцифровки бордюра. Без учёта этого дальнейшее развитие этой концепции в плане создания на её базе каких-то новых видеорежимов принципиально невозможно, т.к. будет базироваться на изначально ошибочном решении. А это всё равно что строить здание на песке, зная что оно изначально обречено развалиться.

James DiGreze
31.07.2009, 06:59
Вывод: Если бордюр не воспроизводится полностью, то и нет смысла его оцифровывать и тратить на него память, достаточно просто во время бордюра отбражать значение порта #FE.Применительно к TFT вывод неверен, так как матрица обновляется по вертикали одновременно, что, к примеру при загрузке с ленты, лишь создаст мерцание всей области бордюра, а не отображение полос загрузки, которое наблюдается на CRT. Следовательно, чтобы более ли менее корректно отображать подобные режимы (когда смена значений битов бордюра порта #FE происходит быстрее, чем прорисовывается целый кадр), требуется искусственная эмуляция через запись значений порта в дополнительную память. Либо отказаться от бордюра совсем, что многим может сильно непонравиться, так как это будет существенным отклонением в визуальном восприятии.

Black_Cat
31.07.2009, 11:31
что, к примеру при загрузке с ленты, лишь создаст мерцание всей области бордюра, а не отображение полос загрузки, которое наблюдается на CRTне, имхо полосы и даже мультиколоры должны быть нормальными

Sayman
31.07.2009, 12:13
бордюр с т.з. эволюционного развития системы отображения - это ненужный рудиментарный пережиток, цепляться за который нет никакого смысла.

поддерживаю! вообще прочитав тему, устаканилось такое впечатление, что речь идёт о неком контроллере для подключения к ВГА. верно? если нет поправте плиз. просто мысля слух, не пинайт есильно: если речь идёт о создании каких-то новых или об одном новом режиме, то зафига вообще цыфровать спековый экран? просто как то я наверно недопонимаю: есть экран спека 256*192. допустим, ктото начал делать новый экран, точнее новый режим. очень хорошо. зачем ворошить старый и кидать с него картинки на новый? да ещё и масштабировать до размера нового (увеличивая размер пиксела до 2на2 или темболее 4на4). бордюр этьот опять таки. если речь идёт о том чтобы средствами нового экрана выкидывать на ВГА спековый экран. хм. а почему нельзя пойти путём ка кэто было у 3dfx, у их вуду - Ускорители на базе Voodoo Graphics представляли собой PCI-карту с двумя VGA-разъемами. К одному подключался монитор, а ко второму — специальный кабель. Он служил для обмена информацией с обычной видеокартой. В компьютере помимо 3D-ускорителя должна была стоять еще и стандартная видеокарта. Производитель не имел значения. Таким образом, ни пользователи, ни производители стандартных видеокарт не были ущемлены.

В двухмерном режиме изображение обрабатывала основная видеокарта. При запуске трехмерных приложений Voodoo Graphics перехватывал сигнал и занимался своим делом
вполне нормальный выход был. они предложили рынку новые возможности не в ущерб старым и всё на одном экране. тоже самое и тут бы сделать. тогда и новые режимы и старые на вга. хотя...

Black_Cat
31.07.2009, 12:26
:) Sayman, главное назначение описываемого девайса генерация VGA видеосигнала, а подключаться он должен к NemoBus, и предназначен для апгрейта старых Спеков. Но попутно девайс можно юзать и для генерации новых видеорежимов, о чём автор и спрашивал у публики - нет ли у кого идей по использованию его в таком применении

Sayman
31.07.2009, 12:44
ясна. просто попытки перехватывать картинку спековского экрана и раньше были. это всё очень и очень напоминает попытки, непомню кто писал и в какой теме, что мол на новом экране чтобы можно было пускать старые игрухи. сканирование спековых экранов напоминает именно этот момент.

предназначен для апгрейта старых Спеков
ну тут посути все спектрума старые, т.к. не имеют выхода на вга)))

можно юзать и для генерации новых видеорежимов
что ж будем посмотреть. вариантов по созданию режима дофига. желательно чтобы он был больше чем спековый и имел цвет на точку и был более удобным чем 256*192*16 у пня и был по быстрее...))) пожалуй 1024*768 нам не надо. достаточно было бы 512*384 или 640*400 (480)...а там или 4 бита на пиксель или 8...больше не надо думаю...

ZEK
31.07.2009, 13:09
зачем ворошить старый и кидать с него картинки на новый?
Что бы на VGA была картинка примерно похоже на то что на телеке.


а почему нельзя пойти путём ка кэто было у 3dfx,
я вуду писать не умею

---------- Post added at 11:09 ---------- Previous post was at 11:03 ----------


достаточно было бы 512*384 или 640*400 (480)
Их на телеке тяжело показывать, они слишком сильно будут отличаться от VGA

Sayman
31.07.2009, 13:23
Их на телеке тяжело показывать
а причём тут телек, если речь идёт про ВГА?

ZEK
31.07.2009, 14:28
а причём тут телек, если речь идёт про ВГА?
Типо обратная совместимость