Важная информация

User Tag List

Результаты опроса: Для какого компьютера и конструктива делать видеокарту "METEOR" ?

Голосовавшие
26. Вы ещё не участвовали в этом опросе
  • "ZXM-PHOENIX" с шиной ZX-BUS без корпуса

    12 46.15%
  • "ЛЕНИНГРАД" с шиной IDC-40 в корпусе

    3 11.54%
  • МОДУЛЬНЫЙ КОМПЬЮТЕР "CHELYABINSK" с шиной ZST-BUS без корпуса

    2 7.69%
  • ОРИГИНАЛЬНЫЙ "ZX SPECTRUM" с шиной ZX-EDGE в корпусе

    6 23.08%
  • "ZX-EVO" с урезанной шиной ZX-BUS без корпуса

    15 57.69%
Опрос с выбором нескольких вариантов ответа.
Страница 1 из 89 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 885

Тема: Быстрая видеокарта "METEOR-2013"

  1. #1
    Guru Аватар для zst
    Регистрация
    11.04.2009
    Адрес
    Челябинск
    Сообщений
    2,747
    Благодарностей: 812
    Записей в дневнике
    15
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Быстрая видеокарта "METEOR" - упавшему рядом с Челябинском метеориту посвящается

    Видеокарта "Метеор" позволяет с помощью небольших изменений в коде игры устранить клешинг атрибутов главного героя.




    Способ устранения клешинга атрибутов:


    Фон в игре рисуется как раньше в слое стандартной графики "ZX Spectrum", а спрайт главного героя (ГГ) рисуется в новом слое графики. При этом данные спрайтов остаются без изменений. Изменяется только подпрограмма рисования. При этом скорость рисования спрайта увеличиваетя.

    Чтобы нарисовать спрайт в новом слое в видеокарту передаются:
    • Текущие инструменты для задания цвета спрайта.
    • Координаты спрайта.
    • Размеры спрайта.
    • Данные спрайта в такой последовательности: байт маски, байт пикселов и т. д..

    На основе этих параметров и данных видеокарта сама определяет, где рисовать точки и какими цветами. Две комбинации битов из четырех на каждую точку используются для формирования признака прозрачности. В итоге ГГ изображается поверх фона без клешинга атрибутов.


    На текущий момент концепция видеокарты «Meteor Graphics» такая:

    Изображение на экране получается путем наложения с учетом прозрачности 8 слоев графики. Неиспользуемые слои можно отключать. Так как часть памяти уйдет на буфер VGA количество слоев будет меньше 8.
    Каждый слой имеет размер 512 х 256 точек. Но видна часть слоя в окне 256х224 точки.
    Для отображения нужной части слоя задается смещение по X и Y.
    Разрешение 256х224 как у Денди для возможности использования ее графических редакторов при написании новых игр для Метеора.
    Слои располагаются в быстрой статической памяти SRAM общим размером 2М.
    Каждая точка представлена 16 битами (одним словом SRAM).
    В слое может быть до 32768 разных цветов.
    Слой можно использовать для фона с аппаратным скроллингом или движущихся объектов.
    Для устранения мерцания спрайтов можно рисовать их в одном блоке 256 х 256 точек и отображать при этом другой блок.



    Возможное использование слоев в новых играх:




    Способ рисования спрайтов:

    Давайте представим, что рисует спрайты не видеокарта, а маленький робот. Мы даем ему четыре инструмента. Для выбора инструмента используется двухбитный код. Робот получает код и использует соответствующий инструмент. Чтобы пустые места спрайта не закрашивали слой - не давать роботу инструмент для соответствующего кода. Так мы сможем рисовать и стирать спрайты.

    Коды инструментов такие:

    • цветной карандаш (код от 0000H до 7FFFH)
    • ластик (код 8000H)
    • нет инструмента (код FFFFH)

    Когда надо менять цвет спрайта мы даем роботу другой набор инструментов:
    • Можно дать один карандаш.
    • Можно дать два карандаша.
    • Можно дать три карандаша.
    • Можно дать четыре карандаша.
    • Можно дать четыре ластика.


    Формат спрайтов:

    Для устранения клешинга атрибутов в старых играх и экономии памяти на графику в новых играх в спрайтах на каждую точку приходится по 2 бита. Перед рисованием спрайта выбираются 4 текущих инструмента. Текущие инструменты можно менять в любой момент. Еще лучше заранее скомплектовать несколько наборов инструментов и менять наборы по мере необходимости. Спрайты рисуются сразу по 8 точек. Для этого в видеокарту на каждые 8 точек записывается по 2 байта. Получается по 2 бита на точку. Это дает 4 комбинации. Каждой комбинации соответствует один из четырех инструментов. Видеокарта записывает по 8 точек в текущий слой, перекрашивая точки в текущие цвета или стирая.


    Видеовыход:

    Видеовыход: VGA 50 Hz (скандаблер) или RGB SCART через разъем VGA.
    В будущем возможно добавление развертки FULL HD 1920x1080 60Hz. Увеличение в 4 раза. Режим сглаживания границ пикселов и сканлайны.


    Железо для видеокарты "Meteor Graphics"

    Плата с никелерованным краевым разъемом для установки в слот ZX-BUS.
    Разъемы: VGA на плате.
    Видеоцап: 5+5+5 по схеме R-2R.
    FPGA EP2C5Q208.
    SRAM 256K х 16 bit 10 nS 4 шт., шина данных 16 битов. Суммарный объем 2 MB.
    Генераторы 14 MHz и 27 MHz.
    Тактовая частота 14 x 7 = 98 MHz для SRAM формируется с помощью PLL из частоты 14 MHz.
    Тактовая частота 148,5 MHz для VGA FULL HD формируется с помощью PLL из частоты 27 MHz.


    Скорость рисования спрайта для Z80

    Спрайт хранится в виде байт маски, байт пикселов и т.д.
    Можно его записать в видеокарту командой (42 такта на 8 точек или 5.25 тактов на точку):
    ldir

    Или последовательностью команд (32 такта на 8 точек или 4 такта на одну точку):
    ldi
    ldi


    Или последовательностью команд (24 такта на 8 точек или 3 такта на одну точку):
    pop de
    ld (hl),e
    ld (hl),d



    Сравнение графических возможностей ZX Spectrum, Dendy, Meteor:

    Цвета:
    Спектрум: 1 бит на цвет точки. Атрибут на область 8х8 точек, 15 цветов, яркость общая для PAPER и INK. Малополезный FLASH. Атрибут хранится в памяти.
    Денди: 2 бита на цвет точки. Атрибут на область 16х16 точек, 3 цвета + прозрачный из 12 цветов для тайлов из 64 возможных. Атрибут хранится в памяти.
    Метеор: 2 бита на цвет точки. Атрибут на область 8х1 точек, рабочие 4 цвета из 32768, любой из четырех можно указать как прозрачный. Атрибут не хранится в памяти, а перекрашивает 8 точек экрана в 4 цвета при рисовании спрайта.

    Скроллинг:
    Спектрум: программный, при этом атрибуты не двигаются.
    Денди: один слой с аппаратным скроллингом, атрибуты двигаются вместе с тайлами.
    Метеор: до 8 слоев с аппаратным скроллингом, двигается весь слой, состоящий из точек по 16 бит на точку.

    Спрайты:
    Спектрум: программно по маске. Читается байт из экрана, накладывается графика по маске и записывается результат на экран. При цветных спрайтах появляется клешинг атрибутов. Координаты вычисляются по сложной формуле, что замедляет вывод. Чтобы не было мерцаний надо успеть нарисовать спрайт до луча телевизора. Или использовать второй экран для 128К версии.
    Денди: 64 аппаратных спрайта размером 8 х 8 точек. У всех спрайтов общие 12 цветов из 64 возможных. Координаты задаются аппаратно. Если в строке больше 8 спрайтов, то они исчезают или мерцают.
    Метеор: для рисования спрайта указываются координаты спрайта, размеры, 4 цвета, затем копируются данные спрайта командой LDIR. Возможно несколько вариантов копирования, например, данные можно писать по одному адресу. Можно без изменений использовать спрайты с маской при доработке старых (уже написанных) игр. Спрайты можно накладывать поверх на один слой, цвет спрайта можно менять в процессе рисоания. В слое возможно до 32768 цветов. 2 экрана в каждом слое. Чтобы не было мерцаний один экран отображается, а на другой в это время рисуются новые спрайты.


    Текущие переменные для управления видеокартой «Meteor»:

    Взаимодействие с видеокартой происходит через набор из 256 регистров управления и 256 адресов для загрузки по 256 байтов командой LDIR или INIR.
    Расположение в области ПЗУ с адресов:
    3A00 — 3AFF (0011 1010 XXXX XXXX) — блок регистров видеокарты.
    3B00 — 3BFF (0011 1011 XXXX XXXX) — окно для загрузки данных в видеокарту.
    xl equ #3A00
    meteor_data equ #3B00
    Для перемещения этого окна размером 512 байтов в другую область использовать порт 7EH. В него надо записать старший адрес начала области.

    КООРДИНАТЫ:

    xl, xh — координата X в пикселах (младший и старший байты). Коодрдината двухбайтная.
    yl, yh — координата Y в пикселах (младший и старший байты). Коодрдината двухбайтная.
    point_x — координата X при рисовании точки. Координата однобайтная.
    point_y — координата Y при рисовании точки. Координата однобайтная. После записи координаты Y точка рисуется/стирается текущим инструментом.

    РАЗМЕРЫ СПРАЙТА:

    dxl, dxh — ширина в пикселах (младший и старший байты)
    dyl, dyh — высота в пикселах (младший и старший байты)


    ЦВЕТА:

    color_1_l, color_1_h — цвет 1 (младший и старший байты)
    ...
    color_4_l, color_4_h — цвет 4 (младший и старший байты)
    tools будет содержать один байт.
    attr - стандартный атрибут ZX Spectrum.

    УПРАВЛЕНИЕ СЛОЯМИ:

    layer — номер слоя, на котором рисуем (1-8)

    layer_1_on — включение слоя 1 (0 = off, 1 = on)
    layer_1_sxl, layer_1_sxh — смещение слоя 1 по-горизонтали (младший и старший байты)
    layer_1_syl, layer_1_syh — смещение слоя 1 по-вертикали (младший и старший байты)[/COLOR]
    ...
    layer_8_on — включение слоя 8 (0 = off, 1 = on)
    layer_8_sxl, layer_8_sxh — смещение слоя 8 по-горизонтали (младший и старший байты)[/COLOR]
    layer_8_syl, layer_8_syh — смещение слоя 8 по-вертикали (младший и старший байты)

    meteor_data - адрес начала области 256 байтов для загрузки данных в Метеор.





    Вики о метеорите "Челябинск".

  2. Эти 10 пользователя(ей) поблагодарили zst за это полезное сообщение:
    Alex III (17.06.2013), artice (24.07.2013), baxter (15.06.2013), eugeniusz (06.02.2014), perestoronin (30.06.2013), Raydac (21.06.2013), Robus (20.06.2013), SaNchez (19.06.2013), Valen (22.06.2013), Руслан (09.02.2014)

  3. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  4. #2
    Activist
    Регистрация
    21.12.2005
    Адрес
    Kyiv/Ukraine
    Сообщений
    412
    Благодарностей: 48
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    zst, я бы всё-таки удалил, из спецификации, все слова "тайл", "тайлы".
    (чтобы непонятки не вызывали )
    У вас все данные в ОЗУ спрайтов видео-карты, это спрайты.

    Также, написать - планируется видео-режим 320x200 (или 320x240),
    полно-экранный.
    Последний раз редактировалось Valen; 15.06.2013 в 14:39.
    V6Z80P - Back for Good

  5. #3
    Super Moderator Аватар для Alex Rider
    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,720
    Благодарностей: 947
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от zst Посмотреть сообщение
    4000 - координата Y копирования спрайта (строка экрана)
    4001 - младший байт координаты X копирования спрайта (столбец экрана)
    Это предполагает, что координаты спрайтов всегда положительны, так? Если надо "выдвинуть" спрайт из-за границ экрана или "задвинуть" его, придется делать цикл на основном Z80 и передавать видеокарте область спрайта, подлежащего отрисовке? Может, сделать y 2-байтной и аппаратное клиппирование спрайтов?

    ---------- Post added at 17:18 ---------- Previous post was at 17:16 ----------

    Примитивы кроме точек не планируются?

  6. #4
    Guru Аватар для zst
    Регистрация
    11.04.2009
    Адрес
    Челябинск
    Сообщений
    2,747
    Благодарностей: 812
    Записей в дневнике
    15
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    Это предполагает, что координаты спрайтов всегда положительны, так? Если надо "выдвинуть" спрайт из-за границ экрана или "задвинуть" его, придется делать цикл на основном Z80 и передавать видеокарте область спрайта, подлежащего отрисовке? Может, сделать y 2-байтной и аппаратное клиппирование спрайтов?
    Для изображения (копирования на экран) части спрайта возле границ экрана предназначены следующие параметры:
    4003 - начальная копируемая строка спрайта (обычно 0)
    4004 - конечная копируемая строка спрайта (обычно 15)
    ...
    начальный копируемый столбец спрайта (обычно 0)
    конечный копируемый столбец спрайта (обычно 15)
    При этом на экран копируется нужная часть спрайта. Какую часть копировать решает Z80.

    Примитивы кроме точек не планируются?
    Пока нет.

  7. #5
    Master
    Регистрация
    25.03.2013
    Адрес
    г. Лондон, Великобритания
    Сообщений
    948
    Благодарностей: 645
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от zst Посмотреть сообщение
    Включается новый режим на раз-два-три. В левый верхний атрибут стандартного экрана поочередно записываются числа 1, 2, 3.
    Т.е., получается, есть риск запустить эту карту стандартной атрибутной гасилкой (ок, не гасилкой, а зажигалкой). Шутка про раз-два-три смешная, но смешно будет не всем. Включите хотя бы бит мерцания (129, 130, 131), тогда шансы напороться на существующий код резко снизятся.

    Ну или, если очень хочется чисел попроще, сделайте запуск по "-3, -2, -1"

  8. #6
    Super Moderator Аватар для Alex Rider
    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,720
    Благодарностей: 947
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от introspec Посмотреть сообщение
    Шутка про раз-два-три смешная
    А еще там могут быть индикаторы дем, отладочные индикаторы... Лучше все-таки порт. И, да, железка серьезная, механизм надежного детекта бы сделать...

  9. #7
    Member
    Регистрация
    15.01.2005
    Сообщений
    175
    Благодарностей: 50
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    а можно ли будет дать задания такой видеокарте на автономные расчеты / быструю математику и/или быстрое перемещение блоков данных?

    + аппаратный вывод чанков 4*4, 2*2
    Последний раз редактировалось char; 15.06.2013 в 16:34.

  10. #8
    Guru Аватар для zst
    Регистрация
    11.04.2009
    Адрес
    Челябинск
    Сообщений
    2,747
    Благодарностей: 812
    Записей в дневнике
    15
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от introspec Посмотреть сообщение
    Т.е., получается, есть риск запустить эту карту стандартной атрибутной гасилкой (ок, не гасилкой, а зажигалкой). Шутка про раз-два-три смешная, но смешно будет не всем. Включите хотя бы бит мерцания (129, 130, 131), тогда шансы напороться на существующий код резко снизятся.

    Ну или, если очень хочется чисел попроще, сделайте запуск по "-3, -2, -1"
    Вероятность, что в один и тот же байт атрибутов подряд будут записаны три идущих подряд числа очень мала. Конечно лучше использовать значения с включенным мерцанием, так как его почти не используют. Спасибо за подсказку. От записи в порты лучше воздержаться.

  11. #9
    Guru
    Регистрация
    03.01.2006
    Адрес
    Рязань
    Сообщений
    2,935
    Благодарностей: 1071
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от char Посмотреть сообщение
    а можно ли будет дать задания такой видеокарте на автономные расчеты / быструю математику и/или быстрое перемещение блоков данных?
    Это тебе надо NeoGS.

  12. #10
    Master
    Регистрация
    25.03.2013
    Адрес
    г. Лондон, Великобритания
    Сообщений
    948
    Благодарностей: 645
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от zst Посмотреть сообщение
    Вероятность, что в один и тот же байт атрибутов подряд будут записаны три идущих подряд числа очень мала.
    Я не в порядке поспорить, а в порядке проговорить: я ещё не писал программы, в которой я бы этого не делал. И, уверен, то же самое могут сказать многие другие программисты. Или вы имеете в виду, что если мы записали 1 во все 768 атрибутов, 2 во все 768 атрибутов, а потом 3 во все 768 атрибутов, то карта уже не запустится?

    С включённым битом мерцания риск почти нулевой. Я бы даже сказал, что если кто-то делал (делает?) атрибутные вещи такого рода с включённым мерцанием - их программа заслуживает самого жестокого глюка в любом случае.
    Последний раз редактировалось introspec; 15.06.2013 в 16:44.

Страница 1 из 89 12345 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 17
    Последнее: 26.12.2015, 23:22
  2. Ответов: 19
    Последнее: 30.09.2011, 01:08
  3. Ответов: 0
    Последнее: 15.08.2010, 12:38
  4. Ответов: 18
    Последнее: 27.08.2008, 18:27
  5. Ответов: 6
    Последнее: 20.11.2007, 11:29

Ваши права

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