Приставки > 1-3 поколения
Dendy Classic SECAM
HardWareMan:
Рукалицо.жпег... Кто-ж так строит? Открой для себя {}.
Phen:
Ну че круто. Ждем скринов (с пояснениями) окончательного мода в корпусе.
SkyNIC:
--- Цитата: Phen от 20 Июля 2017, 10:01:16 ---Ну че круто. Ждем скринов (с пояснениями) окончательного мода в корпусе.
--- Конец цитаты ---
Плату которую я использовал можно купить, например тут https://ru.aliexpress.com/item/Free-Shipping-1pcs-lot-ALTERA-FPGA-CycloneII-EP2C5T144-minimum-system-development-board-learning-board/1617704540.html. Также необходим программатор Altera USB Blaster, который можно купить у этого же продавца.
Нарисовал вот схему, если что не так, поправьте. У UM6558 контакты CD0..CD5 не подключены к UM6559. СD6 и СD7 подключены, а остальные контакты у UM6558 и UM6559 оставлены как есть. В корпус помещается, но соберу позже, когда окончательно наиграюсь с палитрой. Заметил интересную особенность, изменяя значения цвета 0F, можно управлять яркостью всей картинки или затемнять нужную компоненту цвета всей картинки по отдельности. Ещё, сейчас заметил дрожание спрайта марио в smb1, при использовании стандартной частоты генератора в 50 МГц, пришлось задействовать умножитель частоты (ALTPLL) и поднять до 350 МГц, теперь дрожания нет.
--- Цитата: HardWareMan от 20 Июля 2017, 01:53:12 ---Рукалицо.жпег... Кто-ж так строит? Открой для себя {}.
--- Конец цитаты ---
--- Цитата: HardWareMan от 01 Июля 2017, 12:39:54 ---через пару дней покажу свой кодер PAL.
--- Конец цитаты ---
Вы имели в виду использовать {} для записи значений палитры? Например, для цвета 00: color[0]={3{6'b011001}}. Также, можно узнать, как там успехи по реализции кодера PAL?
Phen:
Как я понял UM6559 используется только для синхронизации.
--- Цитата: SkyNIC от 20 Июля 2017, 19:16:21 ---Заметил интересную особенность, изменяя значения цвета 0F, можно управлять яркостью всей картинки или затемнять нужную компоненту цвета всей картинки по отдельности.
--- Конец цитаты ---
Насколько я понимаю проблема с самопроизвольным изменением яркости решена? А-то мало-ли вдруг это PPU виноват.
HardWareMan:
--- Цитата: SkyNIC от 20 Июля 2017, 19:16:21 ---Заметил интересную особенность, изменяя значения цвета 0F, можно управлять яркостью всей картинки или затемнять нужную компоненту цвета всей картинки по отдельности.
--- Конец цитаты ---
Потому что номер этого цвета используется для гашения. Изменяя это значение просто обманываешь АРУ телевизора/монитора.
--- Цитата: SkyNIC от 20 Июля 2017, 19:16:21 ---Ещё, сейчас заметил дрожание спрайта марио в smb1, при использовании стандартной частоты генератора в 50 МГц, пришлось задействовать умножитель частоты (ALTPLL) и поднять до 350 МГц, теперь дрожания нет.
--- Конец цитаты ---
Потому, что надо было взять родную частоту 26,6 с приставки. Тогда не было бы биений.
--- Цитата: SkyNIC от 20 Июля 2017, 19:16:21 ---Вы имели в виду использовать {} для записи значений палитры? Например, для цвета 00: color[0]={3{6'b011001}}.
--- Конец цитаты ---
Нет, я имел в виду агрегатирование сигналов. Ваш код может быть гораздо проще:
--- Код: ---colorNOW[5:0] <= {IN6,IN5,~IN4,~IN3,~IN2,~IN1}
--- Конец кода ---
Порядок бит в {} от старшего к младшему, как и в []. Так же, используйте неблокирующее присвоение <=, чтобы схема стала полностью синхронной. Получается, colorNOW уже лишний. Дальше, от colorIN можно сделать case внутри always блока и синхронно прогружать данные в выход, причем для удобства человека (а машине пофигу) я бы разделил colorOUT[17:0] на R[5:0], G[5:0] и B[5:0]:
--- Код: ---case (colorIN[5:0])
6'h00 : begin R[5:0] <= 6'h01; G[5:0] <= 6'h02; B[5:0] <= 6'h03; end
6'h01 : begin R[5:0] <= 6'h14; G[5:0] <= 6'h15; B[5:0] <= 6'h16; end
6'h02 : begin R[5:0] <= 6'h27; G[5:0] <= 6'h28; B[5:0] <= 6'h29; end
6'h03 : begin R[5:0] <= 6'h3A; G[5:0] <= 6'h3B; B[5:0] <= 6'h3C; end
...
6'h3F : begin R[5:0] <= 6'h1D; G[5:0] <= 6'h2E; B[5:0] <= 6'h3F; end
endcase
--- Конец кода ---
Кейс, желательно, делать на все значения (чтобы синтезатор не сходил с ума, иногда вытворяет такие перлы), но он позволяет записывать константы или значения функций синхронно по такту, причем допустимо обьединять случаи case в одно действие, перечисляя их через запятую (ну прям как в С). h позволяет использовать хекс, что сокращает запись и делает ее наглядной. Но следует пойти дальше и просто сделать мегафункцию ПЗУ 6х18. И просто грузить ее HEX файлом, тогда код вообще станет десятком строк, больше половины которых будут заголовком. И еще, я думаю 6 бит на канал даже с избытком, достаточно и 5. А это сокращает необходимый объем CPLD.
--- Цитата: SkyNIC от 20 Июля 2017, 19:16:21 ---Также, можно узнать, как там успехи по реализции кодера PAL?
--- Конец цитаты ---
Я работаю над ним, просто я недавно вернулся домой с командировки и еще не закончил накопившиеся текущие дела.
SkyNIC:
--- Цитата: Phen от 20 Июля 2017, 23:51:29 ---Как я понял UM6559 используется только для синхронизации. Насколько я понимаю проблема с самопроизвольным изменением яркости решена? А-то мало-ли вдруг это PPU виноват.
--- Конец цитаты ---
Да, только для синхронизации, яркость теперь не изменяется, так как цвет 0F теперь зафиксирован.
--- Цитата: HardWareMan от 21 Июля 2017, 06:30:34 ---Потому что номер этого цвета используется для гашения. Изменяя это значение просто обманываешь АРУ телевизора/монитора.
--- Конец цитаты ---
Интересно, получается таким образом можно реализовать emphasis? То есть, если вклинится в шину ppu и проверять когда установлены эти биты, то можно в момент когда они установлены, затемнять нужные компоненты, управляя цветом 0F.
--- Цитата: HardWareMan от 21 Июля 2017, 06:30:34 ---Потому, что надо было взять родную частоту 26,6 с приставки. Тогда не было бы биений.
--- Конец цитаты ---
Насчёт частоты, в секаме же вроде 21.477МГц, а и стоит ли сейчас заморачиваться и брать сигнал частоты с приставки, если при 350МГц на плис биений уже нет?
--- Цитата: HardWareMan от 21 Июля 2017, 06:30:34 ---сделать мегафункцию ПЗУ 6х18.
--- Конец цитаты ---
Сигналы IN1..IN6 агрегировал, от colorNOW избавился, присваивания поменял. Когда наиграюсь с палитрой так и сделаю.
--- Цитата: HardWareMan от 21 Июля 2017, 06:30:34 --- И еще, я думаю 6 бит на канал даже с избытком, достаточно и 5. А это сокращает необходимый объем CPLD.
--- Конец цитаты ---
Ну это можно учесть будет уже в следующей плате, если она будет или если кто нибудь будет делать сам. И спасибо за развёрнутый ответ :)
HardWareMan:
--- Цитата: SkyNIC от 21 Июля 2017, 10:29:04 --- Насчёт частоты, в секаме же вроде 21.477МГц,
--- Конец цитаты ---
А, точно, тогда сделаю NTSC кодер. :)
Phen:
--- Цитата: HardWareMan от 21 Июля 2017, 11:46:33 ---А, точно, тогда сделаю NTSC кодер.
--- Конец цитаты ---
А как на счет скорости звука, она будет как в Dendy или как в Famicom (NES) ?
HardWareMan:
--- Цитата: Phen от 21 Июля 2017, 13:48:00 ---А как на счет скорости звука, она будет как в Dendy или как в Famicom (NES) ?
--- Конец цитаты ---
Мы процессор же не меняем. И PPU не меняем. Это будет NTSC50. Скорее всего придется таки делать PAL, современные телики такое не поймут.
Немного еще матана. Вот картинка:
Карта цветов:
--- Код: ---00 01 02 03 04 05 06 07
10 11 12 13 14 15 16 17
20 21 22 23 24 25 26 27
30 31 32 33 34 35 36 37
08 09 0A 0B 0C 0D 0E 0F
18 19 1A 1B 1C 1D 1E 1F
28 29 2A 2B 2C 2D 2E 2F
38 39 3A 3B 3C 3D 3E 3F
--- Конец кода ---
Вот запись 2х кадров картинки сверху:
Вот 2 строки 00 - 07:
Как уже говорилось ранее, CD3:CD0 это инверсия координаты HUE (младшие 4 бита палитры), CD5:CD4 это прямой сигнал LUMA (старшие 2 бита палитры). Причем, для гашения PPU использует 0F.
Что касается CD6 и CD7: CD6 это инверсия синхронизации. Примечателен тот факт, что в кадровом обратном ходе присутствует синхронизация цветовых полей, которая была изначально в видеосигнале в виде трапецеидальных символов в видеосигнале, но потом из-за введения телетекста они были заменены на особую кадровую синхронизацию (серия строчных синхроимпульсов на удвоенной частоте):
Будем надеяться, что они не будут сбивать с толку телевизор. А вот CD7 сигнал странный, видимо тоже относится к генерации кадровой цветовой синхронизации.
Плохо то, что SECAMу не требуется цветовая синхровспышка в строке, поэтому этот сигнал отсутствует и его придется вырабатывать самому.
SkyNIC:
--- Цитата: HardWareMan от 21 Июля 2017, 14:49:55 ---А вот CD7 сигнал странный, видимо тоже относится к генерации кадровой цветовой синхронизации.
--- Конец цитаты ---
а он случайно не является сигналом начала кадра?
HardWareMan:
Не похоже. Слишком широк для синхронизации. И слишком сдвинут для кадрового гашения.
SkyNIC:
Решил вернуться к своей модифицированной Dendy Secam и заметил, странную проблему, если играть на обычном картридже в танки, то на сером фоне экрана выбора уровня есть диагональные и черные размытые вертикальные полосы, диагональные ещё и мерцают периодически. Пробовал другие картриджи с танками, полосы меняют интенсивность вроде, но полностью не исчезают. Однако если использовать Everdrive N8, то полос на сером фоне нет вообще. Как это можно объяснить?
Обычный картридж:
Everdrive N8:
HardWareMan:
У N8 шифтеры, которые не дают нагрузку на выходы PPU. А именно нагрузка на выходы адреса PPU и дают эти джейлбары, из-за особенности расположения видео ЦАП внутри PPU.
KykyPyky:
--- Цитата: HardWareMan от 30 Октября 2017, 16:18:44 ---У N8 шифтеры, которые не дают нагрузку на выходы PPU. А именно нагрузка на выходы адреса PPU и дают эти джейлбары, из-за особенности расположения видео ЦАП внутри PPU.
--- Конец цитаты ---
HardWareMan, интересные дела 0_0 получается что бы избавиться от джейлбаров надо поставить на выходы адреса ppu шифтеры или какие нибуть шинные формирователи типа КР580ВА86 и все?
HardWareMan:
580ВА86 сожрут всю батарею за секунды. Уж лучше 1533 ставить.
SkyNIC:
Разобрался с полосами, добавил 74HC244 между РРU (А8-13) и слотом, 74HC125 между СPU (А0-А2) и слотом, а также ещё электролит на 1000мкФ и тантал на 10мкФ по питанию ПЛИС. Остальные адресные линии слота трогать не стал, так как они либо не подсоединены напрямую к PPU, либо двунаправленные. Теперь полос не видно.
KykyPyky:
--- Цитата: SkyNIC от 02 Ноября 2017, 15:55:02 ---74HC125 между СPU (А0-А2)
--- Конец цитаты ---
думается мне это лишнее, цп общается с ppu когда изображение не выводится
можешь сфоткать как сделал монтаж 74HC244?
SkyNIC:
--- Цитата: KykyPyky от 03 Ноября 2017, 10:56:30 ---думается мне это лишнее, цп общается с ppu когда изображение не выводится
можешь сфоткать как сделал монтаж 74HC244?
--- Конец цитаты ---
Проводами навесом, разрезал дорожки, входы 74HC244 к ppu, выходы к слоту припаял, жидкими гвоздями все провода зафиксировал. Не сказать что надёжно выглядит, но работает. Вышло так, потому что там мало места снизу из-за платы с ПЛИС, а сверху из-за самодельной платы. Возможно 74HC125 лишняя, но раз хуже не стало, то не буду отпаивать.
Phen:
Не планировал я реализовывать свою схему. Но подумав пришел к выводу, что данная схема более аутентичная что-ли для того времени.
Платы конечно не с самой лучшей разводкой.
Главное все поместилось в корпус.
Старющий шилялис с несведением и уставшими пушками ;)
жк монитор + конвертер SCART to HDMI :)
Получилось вроде неплохо, остались проблемы о которых я писал выше.
Еще бы RP2A03 вместо UM6527 поставить, проверить исправится ли ситуация со скважностью звуковых каналов.
Конечно данный вариант на сегодня не актуальный, SkyNIC реализовал решение избавляющее от UM6559 с кривой палитрой, но все же...
P.S. Спасибо всем, кто помогал, советовал, критиковал :)
Nikooone:
:thumbup: :thumbup: :thumbup: :thumbup: :thumbup:
Навигация
Перейти к полной версии