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

User Tag List

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

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

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

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

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

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

    21 47.73%
Опрос с выбором нескольких вариантов ответа.
Страница 1 из 109 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 1083

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

  1. #1
    Guru Аватар для zx-kit
    Регистрация
    11.04.2009
    Адрес
    Челябинск
    Сообщений
    3,260
    Записей в дневнике
    15
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    26
    Поблагодарили
    20 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

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

    Графический компьютер "METEOR-2020" предназначен для устранения клешинга атрибутов в старых играх для "ZX Spectrum" и упрощения разработки новых игр.



    Идея такая - делаем новый комп, заточенный под графику. Он кроме стандартного режима графики будет иметь дополнительный. Оба на частоте 3.5 MHz. В новом режиме мы сначала, используя байт маски, рисуем черный силуэт спрайта. Маска меняет цвет точек выборочно. Потом, используя байт спрайта, рисуем контур спрайта выбранным цветом. Тоже цвет точек меняется выборочно. Этот режим для раскрашивания старых игр.

    Если для новых или портирования с других компьютеров, то лучше сделать буфер для подготовки следующего кадра игры с адреса 0000H вместо ПЗУ. При этом адресацию надо сделать линейную как в Орионе и Специалисте. Это позволит рисовать спрайты блочными командами. Спрайты располагать также с линейной адресацией. Тогда первый столбик спрайта шириной 8 точек мы сможем нарисовать сверху-вниз командой LDIR, затем переместить адреса HL и DE вправо с помощью команд INC H, INC D и рисовать второй столбик снизу-вверх командой LDDR.

    Ну и скорость для новых игр можно переключить на TURBO 14 MHz.


    ПРИНЦИП УСТРАНЕНИЯ КЛЕШИНГА И ДОРАБОТКИ СТАРЫХ ИГР:

    Скрытый текст

    Параллельно стандартной памяти 48К добавляется графическая память. В графическую память запись идет сразу по 8 байтов. Каждый байт соответствует биту в основной памяти. В стандартном режиме графики в старшие 7 битов записываются единицы, а в младший - соответствующий бит как в стандартную память.

    Фон рисуется как обычно в хороших цветных играх в буфер. В разных играх буфер разного размера и по разным адресам. Как только фон нарисован - копию буфера аппаратно сохраняем в дополнительном буфере.

    После этого включаем новый режим рисования цветом PAPER. Подпрограмма вывода спрайта немного дорабатывается. Маска спрайта читается и просто пишется в буфер без команды AND. При этом вместо нулевых битов записывается 4 бита цвета PAPER в соответствующий байт новой памяти. В старшие биты записывается 0000.

    После этого включаем новый режим рисования цветом INK. Подпрограмма вывода спрайта немного дорабатывается. Байт спрайта читается и просто пишется в буфер без команды OR. При этом вместо единичных битов записывается 4 бита цвета INK в соответствующий байт новой памяти. В старшие биты записывается 0000.

    Далее готовая картинка копируется аппаратно из буфера в экраную область.

    При выводе на телевизор читается байт из графической памяти. Если старшие биты 1111111 - цвет в старом режиме. Значит надо прочитать атрибут из стандартного экрана и цвет получить из него. Если старшие биты не 1111111 - цвет точки брать из четырех младших битов графической памяти.

    Перед подготовкой следующего кадра игры аппаратно восстанавливается фон в буфере из ранее сохраненной копии. Это делается для того, чтобы стереть спрайты на старых местах. Затем рисуются новые спрайты.


    Таким образом можно перекрасить старые игры и устранить клешинг.

    Время копирования буфера 256х192 точки составит около 1 мс. Это позволит обойтись без второго экрана. Рисуем в буфере и быстро копируем на экран.

    Для адресования новых портов видеокарты Метеор надо будет сделать параллельную страницу портов, которая будет подключаться записью числа в порт FF. Тогда можно будет новых портов сделать сколько угодно.

    В Орионе и Специалисте был медленный проц. Если использовать статику, то можно сделать Z80 на 14 MHz.

    Для сохранения ретро цвета остаются как в ZX Spectrum.
    [свернуть]


    ПРИНЦИП РАСКРАШИВАНИЯ СТАРЫХ ИГР:

    Скрытый текст

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

    Для начала в конце подпрограммы вывода спрайта можно записать в порт атрибута PAPER = 0, INK = 7, BRIGHT = 1. Тогда все спрайты, для которых не выбраны индивидуальные цвета будут рисоваться без клешинга ярко-белым цветом. Потом некоторые спрайты можно перекрасить, если захочется.

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

    Команды выбора цвета спрайта - это запись атрибута в порт атрибута. Надо будет для каждого объекта сделать свою команду записи атрибута со своими цветами PAPER и INK. Если объектов много, то надо где-то найти свободное место в игре для модернизации. Или придется в компьютер МETEOR-2020 добавить возможность включать блок ОЗУ вместо ПЗУ на время рисования спрайтов.

    Если загружать в теневое ОЗУ блок команд для модернизации игры, то это можно использовать как типовое решение во всех играх и не искать свободное место в игре.
    [свернуть]



    ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ:

    Скрытый текст

    Z80 на частоте 3.5 / 14 MHz.
    Разрешение 256х192 точек.
    Стандартные 15 ZX цветов.
    Видеовыход: цифровой 4 бита RGBI c TV разверткой.
    INT 50 Hz сразу после отображения последней строки окна 256х192.
    Параллельная память графики 1 байт на 1 точку.
    Рисование сразу по 8 точек. В стандартном режиме - одновременно, в новых режимах рисование точек выборочно.
    Режимы рисования: стандартный, цветом PAPER (нулевыми битами), цветом INK (единичными битами), обоими цветами PAPER и INK (и нулями и единицами как раньше).
    Аппаратное копирование блоков памяти в параллельной памяти. Время копирования буфера на экран около 1 мс.
    Линейный буфер для рисования следующего кадра с адреса 0000H.
    [свернуть]




    Вики о метеорите "Челябинск"
    Последний раз редактировалось zx-kit; 12.06.2019 в 09:51.
    Подключите к своему самодельному ретро-компьютеру VGA монитор и PS/2 клавиатуру с помощью адаптеров на сайте www.zx-kit.ru

    Ремонт и апгрейд клонов с ОЗУ 48 К.

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

  3. #2
    Activist
    Регистрация
    21.12.2005
    Адрес
    Kyiv/Ukraine
    Сообщений
    415
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

  4. #3
    Super Moderator Аватар для Alex Rider
    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,812
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    1 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 ----------

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

  5. #4
    Guru Аватар для zx-kit
    Регистрация
    11.04.2009
    Адрес
    Челябинск
    Сообщений
    3,260
    Записей в дневнике
    15
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    26
    Поблагодарили
    20 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    Примитивы кроме точек не планируются?
    Пока нет.
    Подключите к своему самодельному ретро-компьютеру VGA монитор и PS/2 клавиатуру с помощью адаптеров на сайте www.zx-kit.ru

    Ремонт и апгрейд клонов с ОЗУ 48 К.

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

    По умолчанию

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

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

  7. #6
    Super Moderator Аватар для Alex Rider
    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,812
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  8. #7
    Member
    Регистрация
    15.01.2005
    Сообщений
    191
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

  9. #8
    Guru Аватар для zx-kit
    Регистрация
    11.04.2009
    Адрес
    Челябинск
    Сообщений
    3,260
    Записей в дневнике
    15
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    26
    Поблагодарили
    20 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

    Ремонт и апгрейд клонов с ОЗУ 48 К.

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

    По умолчанию

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

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

    По умолчанию

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

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

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

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

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

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

Похожие темы

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

Ваши права

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