User Tag List

Показано с 61 по 70 из 141

Тема: Помечтаем или вопрос о видеовыходе

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11

    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Материал повышенной сложности

    Ниже излагается идея по настоящему графического РК86. Идея не сразу воспринимается, а некоторые некомпетентные читатели, увы, так и не смогут понять. За повреждение мозга вследствие чрезмерного умственно напряжения у лиц с пониженными или средними умственными способностями администация сайта и участники форума ответственности не несут.

    Эту идею придумал и первым реализовал freddy в своём VGA-адаптере на базе ВГ75. Я лишь озвучиваю эту идею применительно к РК86.

    При описании данной схемы есть сложности с терминологией, т.к используется двухступенчатая адресация. Строкой ниже называется строка ВГ75, а фонт-строкой называется буфер размером в 64*High в загружаемом ОЗУ фонтов, где High высота строки ВГ75 в линиях растра. Фонт-строка содержит 64 графических блока (или символа для ВГ75) размером High*8.

    Идея заключается в том, что загружаемый фонт включается в адресное пространство CPU. Видео-схема РК используется для того, чтобы в каждой строке последовательно выдавать на экран символы с кодом от 0 до 63. В следующей строке аппаратно включается следующий фонт и также выводятся символы с кодами от 0 до 63. Каждая строка выводится своим фонтом. Таким образом каждый фонт становится буфером соответствующей строки (отсюда вводим термин фонт-строка). В итоге на экране выводятся 30 строк, в каждой строке выводится свой фонт, т.е графическое содержимое фонт-строки. Меняя то, что загружено в фонт-строку, мы программно меняем графическое содержимое строки.

    В итоге, РК86 становится графическим компьютером с разрешением в 64*8=512 точек по горизонтали. Разрешение по вертикали меняется программно. Даже на TV видимы не менее 256 линий растра. Т.о имеем графический экран 512*256 занимающий 16 кб ОЗУ. С помошью фонт-строки в 64 символа содержашей нули формируются бордюрные строки по кадрам (пустые строки сверху и снизу видимого растра). В режиме строк высотой в 8 линий, ВГ75 программируется на вывод 38-ми строк, плюс строка на обратный ход кадровой развёртки. Общее число линий растра точно равно стандарту 39*8= 312, что сохраняет частоту кадров в: 139*64*8)= 50 ГЦ.

    Добавив 2 кб ОЗУ для цвета, получаем полноценный цвет на знакоместо 8*8, что лучше для быстродействия, т.к здесь вывод происходит графическим образом. Для вывода одного символа надо записать уже не один байт, а минимум, 8 байтов. Экран организован нелинейно по горизонтали. 8 байтов - графика первого знакоместа ВГ75, затем 8 байтов - графика знакоместа ВГ75 расположенного справа. Под знакоместом здесь понимаются не знакоместо видимого шрифта, а знакоместо с которым имеет дело ВГ75. Реальный шрифт видимый на экране формируется программно и может быть любого размера - ширина и высота шрифта может быть любыми. Но только шрифт шириной в байт выводится быстро.

    Итак, берём схему загрузки фонта от Alex_LG, но вместо 537РУ10 ставим 62256 и включаем её в адресах A000...BFFF. На старшие адреса этой 62256 (A10, A11, A12, A13) заводим 4 атрибутных сигнала ВГ75. Высота "символа", "строки" и знакоместа ВГ75 - 8 (но изменив режим ВГ75, это легко изменить). В 62256 64 фонтов в 0.5 кб, в каждом из которых 64 загружаемых символов 8*8 (символы 65-127 не нужны). Для получения полноценной графики, достаточно выводить эти фонты в каждую строку (свой фонт в каждую строку). Для этого в позицию 0 каждой строки заносится атрибутная команда 10xx.xxxx, которая включает фонт соответствующий 4-х битовому коду строки. Каждая строка заполняется инкрементируемыми кодами 0,1,2,3...63, что приводит к последовательному выводу в каждой строке 64-х символов текущего фонта. В каждой следующей строке отображается содержимое очередного фонта.

    Тем самым ОЗУ для загрузки фонта превращается в экранное ОЗУ, а основное ОЗУ РК86 становится просто коммутатором, позволяющим на выходах ВГ75 появляться инкрементированным в каждом знакоместе кодам от 0 до 63, которые и адресуют экранное графическое ОЗУ.

    Таким образом, полноценная графика достигается в схеме Alex_LG лишь за счёт замены ОЗУ 537РУ10 на 62256. Для работы схемы достаточно 30 загружаемых фонтов 8*8 по 64 символа в каждом. Так как 4 атрибута позволяют выбрать адреса в ОЗУ только для 16-ти строк, то ставится триггер, который сбрасывается по КСИ, а устанавливается по атрибуту 1111, т.е после 15-й строки. В момент когда после атрибута 1111 устанавливается атрибут 0001. Тогда в начале 16-й строки будут адреса с атрибутных сигналов 0001 и 1 старший адрес с триггера. Тем самым, можно иметь до 32-х РАЗНЫХ строк. Но всего число строк ВГ75 может быть любым. Атрибут 0000 соответствует пустой строке, с помощью которой формируется бордюр по кадрам.

    С формированием ССИ в данной конструкции иначе, чем в базовом РК86. А именно, ССИ и сигнал гашения по кадрам формируются аппаратно. ССИ формируется из HRTC с помощью АГ3 (можно и с помошью 1533 ТМ2). Аппаратное формирование ССИ необходимо потому что шаг по строкам д.быть степенью 2-х. Т.е годится или шаг в 64 или в 128. Шаг 128 по многим причинам невыгоден (напр, тормозит вдвое), потому используется шаг 64. Из-за чего уже нельзя применить "трюк программного гашения по строкам", отчего приходится использовать ВГ75 правильно, а не извращённо.

    В такой схеме цвет можно вводить только за счёт параллельной банки ОЗУ цвета, т.к атрибуты заняты для переключения "фонтов" по строкам. Т.к строка переносится просто записью в её начало атрибута, можно делать мгновенный аппаратный ролик вверх-вниз.

    Но, если вышеописанную схему дополнить счётчиком по ССИ, реализующим автоинкремент "фонтов-строк" после вывода каждой строки, то все 4 атрибута ВГ75 освобождаются от задачи коммутации фонтов-строк и используются для управления цветом. РК86 превращается в графический компьютер с цветом за счёт атрибутов.

    За счёт доработки в 10 микросхем, РК превращается в графический цветной компьютер. В таком режиме в качестве экранного ОЗУ можно использовать экранное ПЗУ размером в 38*64=2432 байт, содержащее 38 повторяющиеся строк, состоящих из инкрементируемых кодов X, 1, 2, 3 ... 63, где вместо X код атрибута выдающий номер каждой фонт-строки. Это ПЗУ может стоять на E000...EFFF, что освобождает все 32К для программ.

    Вот эта идея - оригинальная и привлекательна. Она даёт схеме от Alex_LG совершенно иное качество - не спрайтовую графику и загрузку красивых фонтов, а полноценную графику. Графическое ОЗУ (ОЗУ фонтов-строк) размером в 16 кб можно включить в адресах A000...BFFF в виде двух страниц по 8К.

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

    Цитата Сообщение от ZEvS
    Если кому-то интересно, излагаю, что придумал
    Интересно, интересно. Но жаль, что Вы не указали цель данной доработки. Актуальна задача оцвечивания и ографи-чивания антикварных монохромных игр РК86, причём ценой в минимальное число деталей и труда. Но Вас возможно интересует какая-то другая задача. Например, просмотр 16-ти цветных картинок полученных конверсией фотографий в 16-ти цветные BMP-файлы. Или задача иметь красивый цветной фонт для текстообработки. Но для этого есть лучшее решение - полноценно графический РК86, что получается из платки Alex_LG, если заменить в ней ПЗУ на 62256 и грамотно программировать (см.выше)

    Цитата Сообщение от ZEvS
    Во-первых если выкинуть сдвиговый регистр на выходе ОЗУ, но вместо этого перебирать адресные входы, а память увеличить в четыре раза, то мы решаем проблему цвета на одной микросхеме ОЗУ. Итак, берем 8К SRAM, это 13 адресных линий, и 8 линий данных. 4 адресных линии отдаем под строки (LC0-LC3), 7 отдаем под код символа (CC0-CC6), остаются 2... Эти две мы подключаем к счетчику, который подключен к тактовому генератору пикселей 8 МГц, еще одну линию этого счетчика подаем на счетверенный мультиплексор 2x4, который выбирает либо (D0-D3), либо (D4-D7), и они подаются на выход, это и есть RGBI 16 цветов.
    Не лучшим образом излагаете материал. Было бы неплохо сначала выразить идею, тогда последующий текст был бы понятен уже после первого прочтения. А Ваша идея, если я верно понял, заключается в том, что для КАЖДОГО пикселя по горизонтали, которых по-прежнему 384 в строке, считывается свой байт из ОЗУ цвета адресуемого кодом символа из основного экранного ОЗУ.

    Есть поправка. Вы указали, что только 2 адреса остаётся для "адресации" в пределах 8 битов байта графики. Это значит, что цвет задаётся сразу на два бита. Чтобы адресовать 8 битов надо 3 адреса. Однако и 3-й бит в такой схеме есть. Незачем заводить LC3, т.к используется режим с высотой знакоместа в 8 линий растра, где LC3 всегда 0. Таким образом: 3 линии адресов на LC0, LC1, LC2, 7 битов - код символа, и 3 бита остаётся для адресации пикселей в знакоместе по горизонтали. Объём памяти при этом увеличится не в 4, а 8 раз.

    Однако трудно реально реализовать схему с таким быстродействием. Такт сдвига точек составляет 8 МГЦ, что соответствует периоду в 125 НСЕК. Из 10-ти 62256, что я имел в начале 90-х, только одна тянула в ЭВМ с тактом 8 МГЦ, основная масса тянула только 5 МГЦ (несмотря на паспортное быстродействие в 100 ns). В такой схеме разумно применять High Speed 10-15-ти наносекундные CMOS RAM.

    Несмотря на то, что объём такого ОЗУ цвета в 8 раз больше объёма фонта в 1 кб, это не скажется на быстродействии игр. Т.к ОЗУ цвета загружается только один раз в начале игры, и никого не волнует если это будет длиться целых полсекунды.

    Возможность раскрашивать символы с разрешением каждый пиксель любого цвета, - абсолютно бесполезна без ОЗУ спрайтов, т.е без исходной схемы от Alex_LG. Зачем раскрашивать во все цвета радуги буквы КОИ-7 из основного фонта РК86? То есть частично параллельно ОЗУ цвета должно быть включено ОЗУ фонта-графики, с объёмом в 1 кб, содержащее спрайты, например на двух 6514 (с организацией 1К на 4, это КМОП аналог 541РУ2).

    Если организовать дешёвый выпуск плат под именем МЦПГ-РК86, это даст возможность для РК86 делать игры с качеством графики лучше чем в Денди, не говоря уж о ZX-Spectrum. Однако более-менее массовой может стать только очень простая конструкция (в идеале реализуемая за 2 часа работы паяльником на основной плате РК). Сложная cкоростная конструкция работающая на пределе возможностей обычных TTL (нужны скоростные) не привлечёт массы. Смотрите, разве конструкцию Alex_LG повторили многие? И организовать выпуск плат тоже не получилось. Ваша сложная конструкция не найдёт поклонников и заказчиков на платы, даже если Вы одновременно предложите все игры РК оцвеченные с высоким разрешением. Нужна максимально простая платка, дающая только те возможности, которые реально востребованы.

    Схема загрузки фонтов от Alex_LG, дополненная 8К ОЗУ цвета, позволяет заимствовать спрайты от любых компьютеров, без ограничений на цветовое разрешение.

    Высокое цветовое разрешение для игр не требуется. Даже в Денди огранились лишь 2-мя цветами в пределах 8-ми экранных битов. А т.к графику спрайтов всё-равно придётся брать от Синклера или из машин, где в лучшем случае цвет CGA, то разумно схему упростить. Можно сократить в 4 раза скорость доступа к цветовому ОЗУ до всего 2-х раз за время вывода знакоместа. Тогда имеем 8 битов на 4 пикселя. Можно использовать идею CGA - 2 бита на пиксель, отчего по-точечное разрешение по горизонтали снижается вдвое. Тогда удобно снизить вдвое разрешение и по вертикали, сделав цветовой пиксель 2*2. А лучше использовать 8 бит традиционно, 16 цветов для INK и 16 цветов для PAPER. 2 цвета в пределах 4-х точек.

    Ну, а если чуть подумать, то выяснится, что при заимствовании спрайтов от ZX-Spectrum и ОРИОНА, достаточно 2-х цветов в пределах 8-ми битов, т.е то что предлагал я в теме "Модульный РК86".

    А если ещё подумать, то выяснится, что цвет в спрайтовых играх достаточно задавать сразу на всё знакоместо, что позволит использовать спрайты от ZX-Spectrum, и сократит объём цветового ОЗУ в 8 раз. Тогда ОЗУ загружаемого фонта - 1 кб, а ОЗУ загружаемого цвета - 128 байт, столько же сколько символов.
    Последний раз редактировалось barsik; 21.03.2017 в 22:32.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Вопрос по IDE
    от Пётр в разделе Внешние накопители
    Ответов: 67
    Последнее: 13.05.2007, 20:40

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •