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

User Tag List

Страница 34 из 45 ПерваяПервая ... 303132333435363738 ... ПоследняяПоследняя
Показано с 331 по 340 из 450

Тема: ZXKit1 - конструктор для ZX-творчества

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

    По умолчанию

    Цитата Сообщение от ZXMAK Посмотреть сообщение
    Имхо все-же лучше существующие видеорежимы поддержать, а не изобретать спрайты. И почему спрайты, а не аппаратные текстуры для 3d полигонов?
    В каком смысле изобретать спрайты? Спрайты есть во всех играх. Это может быть элемент, из которого рисуется стена, трава, движущиеся объекты, буквы тоже можно назвать спрайтами. Можете назвать более точно. Попробую описать подробнее, что я подразумеваю под спрайтами в данном случае.

    Я имею ввиду, что изображение объекта, например, главного героя в игре, нарисовано заранее. Чтобы было видно движение, например, человечка, обычно рисуют несколько фаз движения. Эти изображения в ОЗУ я и называю спрайтами. При этом для основных спрайтов могут потребоваться примерно такого же размера маски для наложения объекта на фон.

    Изображение двужущегося объекта на экране может состоять из следующих шагов:
    1. Вычислить адрес изображения объекта на экране по координатам.
    2. Вычислить адрес спрайта в буфере спрайтов по номеру объекта и номеру фазы движения.
    3. Восстановить фон в предыдущем положении объекта на экране.
    4. Сохранить фон в новом месте, там где его затрет объект.
    5. Скопировать спрайт объекта на экран в новом месте. При этом возможны дополнительные логические операции с битами фона.

    При этом еще нужно решить, что делать с атрибутами, например, как в игре THREE WEEKS IN PARADIZE.

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

    Размещение обоих слоев экрана и спрайтов (всех изображений в игре, которые может потребоваться изобразить на экране) в ОЗУ видеокарты и небольшая помощь Z80 по копированию этих изображений в нужный слой экрана значительно упростит написание игр и ускорит их работу.

    Думаю, что вы согласитесь, что аппаратная помощь Z80 в данном случае необходима. Даже в таком элементарном виде, как копирование области памяти из одного адреса в другой. Или, все-таки Z80 сможет это сделать программно без торможения в игре ?
    Последний раз редактировалось zx-kit; 09.06.2013 в 17:05.
    "L-256"

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

  3. #332
    Master
    Регистрация
    31.03.2008
    Адрес
    Москва
    Сообщений
    725
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    75
    Поблагодарили
    34 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Или, все-таки Z80 сможет это сделать программно без торможения в игре ?
    В ipvc скорость обмена с ОЗУ была 25 МБ/сек. Т.е. копирование - 12.5 МБ/сек.
    У Z80 скорость копирования даже со стека минимум на порядок ниже. В демах это прокатывает, в играх наверно, не стоит. Только CPLD на это не хватит.
    ZXM-Phoenix rev.01 2048K, VG93 hw emulator

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

    По умолчанию

    Цитата Сообщение от IanPo Посмотреть сообщение
    В ipvc скорость обмена с ОЗУ была 25 МБ/сек. Т.е. копирование - 12.5 МБ/сек.
    У Z80 скорость копирования даже со стека минимум на порядок ниже. В демах это прокатывает, в играх наверно, не стоит. Только CPLD на это не хватит.
    Я об этом и говорю, что при расширении количества цветов приходится отказаться от копирования объектов с помощью Z80. Иначе тормоза будут жуткие. Заодно предложенное мной решение освобождает основную память компьютера. При этом игры можно будет запускать даже на компьютере с 48-128К.

    У вас в видеокарте больно наворочено. На нашем компьютере сделать для начала лучше только копирование. Можете попробовать сделать то, что я предложил? В качестве демы сделать фон и двигать по нему разноцветный объект с шагом 2 точки за кадр. Кстати, сколько битов в шине данных ОЗУ в вашей видеокарте ?

    На мой взгляд, для реализации копирования достаточно нескольких счетчиков и регистров.
    Счетчики циклов:
    COUNTER_H -- счетчик циклов по-горизонтали
    COUNTER_V -- счетчик циклов по-вертикали
    Регистры:
    X -- Координата X курсора на экране
    X2 -- Копия координаты X
    Y -- Координата Y курсора на экране
    H -- размер спрайта по-горизонтали
    V -- размер спрайта по-вертикали
    ADDR1 -- адрес в ОЗУ спрайтов
    ADDR2 -- адрес в ОЗУ экрана
    N_SPRITE - номер спрайта в буфере спрайтов
    N_FASE -- фаза движения объекта

    Их загружают данными из Z80 напрямую или вычисляют в CPLD по заданным координатам.

    Часть алгоритма аппаратного копирования примерно такой:
    1. По номеру спрайта N_SPRITE, фазе движения N_FASE и размерам спрайта H и V рассчитать адрес начала спрайта в буфере спрайтов, записать в ADDR1.
    2. Записать в счетчик COUNTER_V высоту спрайта из V.

    3. Записать в счетчик COUNTER_H ширину спрайта из H.
    4. Записать в Х значение копии из X2.
    5. Координаты курсора X и Y преобразовать в адрес на экране в слое 1, записать в ADDR2.
    6. Прочитать данные из ОЗУ по адресу ADDR1.
    7. Записать данные в ОЗУ по адресу ADDR2.
    8. Увеличить координату X курсора.
    9. Увеличить адрес в ОЗУ спрайтов (ADDR1).
    10. Уменьшить счетчик по-горизонтали COUNTER_H.
    11. Если счетчик COUNTER_H не равен 0, перейти к шагу 5.

    12. Уменьшить счетчик по-вертикали COUNTER_V.
    13. Если счетчик COUNTER_V не равен 0, перейти к шагу 3.

    Если спрайт сделать так, что поля в спрайте из невидимых пикселов равны шагу перемещения объекта, то при перемещении не требуется затирать след от предыдущего изображения спрайта на экране. Если полей нет, то после изображения спрайта на новом месте надо будет затереть след с помощью спрайта прозрачного цвета размером с высоту спрайта (если движение по-горизонтали) и шириной в столько пикселов, на которое переместился спрайт.
    Последний раз редактировалось zx-kit; 09.06.2013 в 20:00.
    "L-256"

  5. #334
    Veteran Аватар для ZXMAK
    Регистрация
    30.01.2006
    Адрес
    Харьков
    Сообщений
    1,406
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    15 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    я думаю если и есть смысл делать аппаратное ускорение графики, то это должен быть отдельный высокопроизводительный процессор, желательно многоядерный. А Z80 будет только командовать - делай то, делай сё. у видеопроцессора должен быть свой канал доступа к HDD, т.к. гонять текстуры через Z80 будет накладно.
    А можно к нему еще присобачить GTX460, правда врядли кто-то под такое железо софт возьмется писать

    а вот обычный спектрум с минимумом деталей и соответственно стоимостью, поддерживающий стандартные конфигурации 48/128/512/1024/4096 и возможность подключить вг93 с AY-ком, а также видеовыводом и возможностью подключить VGA, был-бы востребован намного больше
    Последний раз редактировалось ZXMAK; 09.06.2013 в 19:23.
    ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

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

    По умолчанию

    Цитата Сообщение от ZXMAK Посмотреть сообщение
    я думаю если и есть смысл делать аппаратное ускорение графики, то это должен быть отдельный высокопроизводительный процессор, желательно многоядерный. А Z80 будет только командовать - делай то, делай сё. у видеопроцессора должен быть свой канал доступа к HDD, т.к. гонять текстуры через Z80 будет накладно.
    А можно к нему еще присобачить GTX460, правда врядли кто-то под такое железо софт возьмется писать
    Ну и зачем нам этот монстр ? При проектировании железа для ZX SPECTRUM надо соблюдать определенные рамки. Вы за них уже вышли. Я же предлагаю несколько счетчиков и регистров. В остальном графика остается такой же, только получается 16 цветов на точку.

    а вот обычный спектрум с минимумом деталей и соответственно стоимостью, поддерживающий стандартные конфигурации 48/128/512/1024/4096 и возможность подключить вг93 с AY-ком, а также видеовыводом и возможностью подключить VGA, был-бы востребован намного больше
    Вы говорите про ZXEvo.
    "L-256"

  7. #336
    Master
    Регистрация
    31.03.2008
    Адрес
    Москва
    Сообщений
    725
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    75
    Поблагодарили
    34 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    zst
    Можете попробовать сделать то, что я предложил?
    Времени хронически не хватает.
    Кстати, сколько битов в шине данных ОЗУ в вашей видеокарте ?
    8
    ZXM-Phoenix rev.01 2048K, VG93 hw emulator

  8. #337
    Veteran Аватар для John North
    Регистрация
    22.09.2006
    Адрес
    Ижевск
    Сообщений
    1,706
    Спасибо Благодарностей отдано 
    5
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    zst, идея отличная!
    может кстати спеку щас именно это и надо. сделать нормальный новый стандарт, забыв про все старые, которые есть то каждый у процентов пяти..десяти Спектрумистов..
    свежая кровь так сказать)
    Хороший.. Плохой.. Главное - у кого ружьё !!

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

    По умолчанию

    Цитата Сообщение от John North Посмотреть сообщение
    zst, идея отличная!
    может кстати спеку щас именно это и надо. сделать нормальный новый стандарт, забыв про все старые, которые есть то каждый у процентов пяти..десяти Спектрумистов..
    свежая кровь так сказать)
    Спасибо за столь высокую оценку. Хотя идеи такой видеокарты уже давно предлагались на форуме. Я только пытаюсь их структурировать и реализовать. Давайте вместе разработаем простые и эффективные команды для работы с графикой. Тогда каждый сможет воплотить свои задумки без необходимости урезать идеи и графику из-за ограничений в цвете или скорости движения объектов по экрану.

    Нужно выбрать адресацию точек на экране, если понадобится прямая запись, например для векторной графики. Предлагаю координату Y точки от 0 до 191 (8 бит) использовать в качестве младшего байта адреса. Таким образом при копировании программно или аппаратно в последовательные адреса на экране будут закрашиваться точки столбцами сверху вниз. Координату X точки от 0 до 255 (8 бит) использовать в качестве старшего байта адреса. Такая адресация позволит по координатам точки или нового места изображения спрайта на экране легко получить адрес этой точки в памяти. Также, при необходимости, это поможет увеличить размеры экрана до 256 по-вертикали и более 256 по-горизонтали. Но пока нам хватит и стандартных 192х256 точек и мы не будем тратить на это время - ведь наша первая цель увеличить количество цветов на точку, а вторая - сделать этот режим быстрым.

    Выше я писал, что быстро за один раз копировать 16 бит (4 точки по 4 бита). Но это может создать неудобство при движении объекта на экране со скоростью 1 бит в кадр. Поэтому лучше на одну точку выделить целый байт (256 цветов по стандарту MSX2). И использовать ОЗУ с разрядностью 8 бит. Тогда для ускорения копирования следует применить две микрсхемы SRAM 8x512K. Одну микросхему использовать в качестве ОЗУ экрана, а другую - в качестве ОЗУ спрайтов. Обе микросхемы должны подключаться к отдельным выводам ПЛИС, что позволит при копировании спрайта на экран устанавливать на одной микросхеме ОЗУ адрес источника, а на другой - адрес приемника данных. Это позволит переписывать через данные из одной в другую (из ОЗУ спрайтов в ОЗУ экрана) за один раз без промежуточного хранения в ПЛИС.

    Отдельная память 512К для экрана позволит хранить сразу два экрана по 2 слоя, по аналогии с вторым экраном в моделях 128К. Это позволит изображать уже полностью сформированный экран одним переключением экранов.

    Требуется продумать простой и эффективный способ загрузки спрайтов в ОЗУ видеокарты, объем которой 1 Мб. Для записи пикселов прямо в ОЗУ экрана лучше отправлять в видеокарту ЦВЕТ ТОЧКИ, координаты X и Y. А для записи в ОЗУ спрайтов лучше передать начальный адрес спрайта, а потом просто данные непрерывным потоком, с автоинкрементом адреса в самой видеокарте.

    Один из вариантов обращения к видеокарте - через адреса стандартного экрана ZX SPECTRUM.
    Последний раз редактировалось zx-kit; 11.06.2013 в 05:42.
    "L-256"

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

    По умолчанию

    Изображение срайтов на экране.

    Как известно, для рисования объектов фона в игре обычно используют спрайты. Это позволяет нарисовать маленький участок стены, травы, дороги и других элементов игрового пространства в виде маленького квадратика, а затем размножить этот квадратик по всему экрану. Таким способом уменьшается размер памяти, занимаемой игрой. Ниже приведен пример черно-белого спрайта размером 16х16 точек, копируя который можно нарисовать кирпичную стену.

    Хорошо, стену нарисовали, но как нам изобразить движение автомобиля, который едет вправо вдоль этой стены ? Очень просто - автомобиль изображать на одном месте, а двигать влево стену. Но это не очень простая и быстрая операция для обычной графики ZX SPECTRUM.

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

    В новой видеокарте METEORIT-2013 можно сделать проще и быстрее. Это лучше объяснить на увеличенном изображении спрайта. Там каждому столбцу и строке спрайта присвоен номер от 0 до 15. Если нам, например, нужно изобразить стену со сдвигом на 1 пиксел влево нужно указать видеокарте, что самый левый спрайт копируется на экран не весь, а со столбца 1 до 15. Следующие справа спрайты до предпоследнего копировать полностью, с 0 до 15 столбцов. А последний - с 0 до 0, то есть узкую вертикальную полоску толщиной 1 точку. Аналогично нужно копировать спрайты и с другими отступами на 2-15 точек. Номера столбцов, которые нужно скопировать на экран задаются переменными X1 и X2 (см. рисунок). Таким образом можно двигать и неповторяющиеся элементы экрана. Просто учитывать, что с краев экрана нужно изображать определенную часть спрайта.

    Преимущества нового способа:
    Достаточно одного спрайта. не нужно сдвинутых спрайтов,
    Легко задается смещение спрайта на любое количество точек.
    Двигать спрайт (копировать на новое место) можно хоть по-вертикали, хоть по-горизонтали.
    Ну и, наконец, это все делается быстро.

    При сдвиге фона на втором слое экрана также не нужно заботиться о наложении изображения движущегося объекта на первом слое. В данном примере машину просто изображаем на переднем слое один раз, а за ней будем двигать фон - кирпичную стену. Если же нам вместо машины нужно изобразить идущего пешком героя, мы заранее рисуем несколько спрайтов, изображающих разные фазы его движения. Используем любые из 255 цветов, а пустое место в спрайте вокруг героя закрашиваем 256-ым прозрачным цветом (цветом с определенным кодом). Таким образом, мы просто говорим видеокарте, что нам нужно скопировать в нужное место определенный спрайт (фазу движения героя). Она все быстро копирует. Получается изображение как в мультфильме.

    Как видите, с новой видеокартой все очень просто и быстро. Даже при 255 цветов на точку!
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	Спрайт стены-1.jpg 
Просмотров:	238 
Размер:	24.9 Кб 
ID:	42101  
    Последний раз редактировалось zx-kit; 11.06.2013 в 15:57.
    "L-256"

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

    По умолчанию

    В какой мере это будет совместимо с MSX, V6Z80P, TS Labs-спрайты №1, TS Labs-спрайты №2, Eva V9990? Если несовместимо, то зачем нужен ещё один вариант?

Страница 34 из 45 ПерваяПервая ... 303132333435363738 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Конструктор (ZX SDK)
    от CityAceE в разделе Программирование
    Ответов: 120
    Последнее: 02.06.2014, 18:17
  2. Конструктор"сделай сам"+АТМ 4.50 Турбо
    от Nordic в разделе Барахолка (архив)
    Ответов: 2
    Последнее: 22.11.2008, 08:27
  3. Технологии творчества-1: Как делать стихи?
    от andrews в разделе Творчество
    Ответов: 16
    Последнее: 27.06.2008, 12:30

Ваши права

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