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

User Tag List

Страница 42 из 71 ПерваяПервая ... 383940414243444546 ... ПоследняяПоследняя
Показано с 411 по 420 из 703

Тема: Новый графический режим для игр

  1. #411
    Veteran
    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    1,046
    Спасибо Благодарностей отдано 
    979
    Спасибо Благодарностей получено 
    246
    Поблагодарили
    123 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ZXMAK,
    Цитата Сообщение от ZXMAK Посмотреть сообщение
    Такого уровня графика вполне по зубам спектруму, если спрайтовый акселератор добавить
    Спрайтовый акселератор.
    А ещё нужен большой носитель данных. SD карта или CD-диск.
    Потом нужно будет перелопатить игру, чтобы использовала акселератор.
    Графику переконвертить с PC ремейка.
    И в результате всех усилий мы получим то... , что уже давно было доступно на PC.

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

    По умолчанию

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    Видишь ли, "проще", "легче", "сложнее" - понятия субъективные. Что кому-то сделать просто, второй не сможет, третьему же лень возиться или нет времени. Таким образом, сделать переделку простой для всех (или максимально к тому приблизиться) можно лишь одним способом: дать возможность каждому самому определять объём и сложность работ. Чтоб игру можно было переделывать постепенно, независимо корректируя процедурки, переделывая графику по частям. Чтоб результат был рабочим и играбельным на любой стадии, чтобы можно было бросить в любой момент, и все равно выглядел бы лучше оригинала. Сам собой напрашивается вывод, что обеспечить это можно только в том случае, когда старая и новая графика одновременно сосуществуют в одном экране. Что возможно, если старая графика есть одно из состояний новой видеопамяти, а вывод в эту память старыми процедурами перехватывается и обрабатывается девайсом так, чтобы видимых отличий не возникало (если мы, конечно, их не хотим).
    Перечитал вот это предложение. Теперь я понял, как надо делать. Надо обеспечить программисту выбор:
    • использовать только стандартную графику
    • дополнительно к стандартной графике изображать ГГ без клешинга, используя дополнительный слой и режим 2 цвета + маска
    • переделать спрайты для 3 цветов + прозрачный
    • дополнительно к стандартной графике изображать ГГ с помощью блиттера и спрайтов 8 бит на точку
    • все изображать с помощью блиттера и спрайтов 8 бит на точку.


    Эмулятор или FPGA с частотой развертки TV читает из слоя номер 0 стандартные пикселы и атрибуты и вычисляет номера цветов 8 точек. Если режим новый, то читает ГОТОВЫЕ 8 точек из слоя 0. Затем читает ГОТОВЫЕ цвета 8 точек из слоя 1. Складывает их с учетом прозрачного цвета и записывет 8 номеров цвета в буфер экрана. Когда надо вывести на экран изображение эмулятор или FPGA читает ГОТОВУЮ картинку из буфера экрана и выводит на монитор с частотой 60 Гц.

    Слой 0 можно выбрать со стандартной графикой или другой, подходящий для конкретной задачи режим графики. Имея слой 1 мы сможем продолжить работу над блиттером, который ускорит копирование спрайтов в эту же область 256х192 по 1 байту на точку. Так мы постепенно сможем добавлять новые возможности.

    Дополнительный слой номер 1 для режимов 2-4 цвета на спрайт - это область памяти размером 256х192 точек. Цвет каждой точки определяется одним байтом. Поэтому мы можем накладывать сверху спрайты программным способом, используя прозрачный цвет. Видеокарта уже начинает выполнять часть работы за Z80. По двум байтам данных и атрибуту вычисляет цвета восьми точек. Далее, если точка не прозрачная, номер цвета записывается в слой номер 1.

    То есть в эмулятор надо добавить слой 1, написать процедуру записи 8 точек в слой 1, когда программа записывает по два байта в адрес пикселов на экране.
    Последний раз редактировалось zx-kit; 24.08.2015 в 06:01.
    "L-256"

  3. #413
    Guru Аватар для Lethargeek
    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,588
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    285
    Спасибо Благодарностей получено 
    237
    Поблагодарили
    186 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от zst Посмотреть сообщение
    Все мы знаем, как устроен стандартный режим графики. Видеокарта дожна взять байт пикселов, байт атрибутов и преобразовать в 8 точек определенного цвета. Адреса мы тоже знаем где. Не важно, дублируется ли память в видеокарте или основную память компьютера вообще вытащили. Картинка должна получиться одинаковая.
    Да с чего же она это вот прям ДОЛЖНА? Не ЮЛА, небось. Пусть как хочет, так и делает одинаковую.

    Цитата Сообщение от zst Посмотреть сообщение
    Естественно проще разместить память в видеокарте. И она будет общая для Z80 и FPGA.
    Это как - и код оттуда же выполнять??

    Цитата Сообщение от zst Посмотреть сообщение
    Проще нарисовать все спрайты с сумками, сапогами или другими предметами гардероба, а потом перекрашивать одной командой или сменой палитры, а не накладывать сверху спрайт сумки. А у спрайтов, соответственно и у сумок, может быть несколько углов поворота и фаз движения.
    Да чем проще-то. Только расточительнее - номера в палитре к спрайтам привязывать.

    Цитата Сообщение от zst Посмотреть сообщение
    Так я почти тоже самое и предлагаю. У нас например буфер экрана 320х240. Мы туда можем записать стандартную графику 192х256 с бордюрными эффектами, а потом вывести с нужной частотой развертки.
    И при чём тут видеорежимы и совместимость?! "вывести с нужной частотой развертки" - это дело кадрового конвертера, какой может быть вообще отдельным девайсом и никак не управляться видеокартой, а работать тупо по сигналу видеовыхода. Хотя может быть и отдельным блоком видеокарты - не суть важно, для софта не должно быть разницы никакой. И не путай разные буфера (для конвертера, кстати, нужно целых ТРИ своих отдельных буфера, вроде как)

    Цитата Сообщение от zst Посмотреть сообщение
    Вот каждый режим по-своему и заполняет буфер экрана. А из буфера экрана выводим на монитор. Это проще, чем делать все операции на лету, как при аппаратных спрайтах. И стандартный режим графики очень сложен для вывода и занимает много времени. раньше в играх рисовали почти перед лучем телевизора. Поэтому для совместимости нужно весь кадр со скоростью развертки телевизора выводить в буфер экрана. Только после этого останутся бордюрные эффекты после вывода из буфера экрана на монитор с частотой 60 Гц.
    Ну и каша... буфер (видеорежима, а не конвертера) заполняется не "режимом", а контроллером записи в видеопамять по состоянию сигналов системной шины. И все записи в обычную память Спека (в том числе в адреса стандартной экранной области) тоже через эту шину проходят. Так что можно просто следить за шиной и заполнять видеобуфер одновременно, обеспечивая совпадение картинки для совместимости. Или только части картинки - что и обеспечивает возможность легкой постепенной переделки софта.

    ---------- Post added at 08:14 ---------- Previous post was at 08:08 ----------

    Цитата Сообщение от zst Посмотреть сообщение
    Lethargeek, давай подробнее обсудим идею переделки старых игр для устранения клешинга атрибутов.
    Я предлагаю добавить трехслойный режим с линейной адресацией экрана без ускорителя.
    А я предлагаю не плодить кучу ограниченных убогих режимов, а подумать, как их сделать числом поменьше, но универсальнее и мощнее. Для игрушек, как уже указывал в прошлый раз - взять битмап максимального размера (в рамках развёртки) с максимальной глубиной цвета, без слоёв, и для совместимости с чем угодно - блок трансляции адресов и данных (вот его устройство надо продумать!); и блиттеру с одним режимом проще работать.

    ---------- Post added at 08:18 ---------- Previous post was at 08:14 ----------

    Цитата Сообщение от zst Посмотреть сообщение
    Перечитал вот это предложение. Теперь я понял, как надо делать. Надо обеспечить программисту выбор:
    использовать только стандартную графику
    дополнительно к стандартной графике изображать ГГ без клешинга, используя дополнительный слой и режим 2 цвета + маска
    переделать спрайты для 3 цветов + прозрачный
    дополнительно к стандартной графике изображать ГГ с помощью блиттера и спрайтов 8 бит на точку
    все изображать с помощью блиттера и спрайтов 8 бит на точку.
    Нет, не так - даже это слишком жёсткие варианты. И конечно же, не надо разных слоёв, это нерациональный расход памяти и пропускной способности шины карты. Лучше - однослойный тупой битмап, но с хитрым и ускоренным доступом. Эх, нету времени сейчас подробно расписывать, и не знаю, когда снова буду на форуме
    Прихожу без разрешения, сею смерть и разрушение...

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

    По умолчанию

    Слои графики в видеокарте "Meteor Graphics"

    Во многих играх есть неподвижный или медленно меняющийся фон и несколько движущихся объектов. Разделение графики в видеокарте "Meteor Graphics" на слои упрощает и ускоряет построение изображений в играх.

    Слой 0 обычно закрашивается полноэкранным рисунком или изображение строится из небольших фрагментов - тайлов. В слой 1 помещаются изображения движущихся объектов - спрайтов. Размещение тайлов и спрайтов в разных слоях экономит время, которое потребовалось бы на восстановление затертого фона при движении объектов.

    Для создания движения спрайтов каждый цикл игры участки слоя 1, занимаемые в данный момент спрайтами очищаются - заполняются прямоугольниками с номером цвета, который соответствует прозрачному. Затем спрайты рисуются по новым координатам.

    При выводе на телевизор/монитор несколько слоев складываются с учетом прозрачного цвета. Если в слое с большим номером точка прозрачная, то сквозь нее будет видна точка со слоя с меньшим номером. Если во всех слоях точки прозрачные, то сквозь них виден цвет back_color.


    Преобразование данных в номера 8 точек для различных режимов (эту работу выполняет видеокарта)

    В стандартном режиме цвета ZX SPECTRUMа цвета 8 точек, видимых на экране, зависят от байта пикселов, байта атрибутов и сигнала FLASH, который предназначен для мигания курсора. При изменении любого из трех могут измениться цвета 8 точек. Поэтому стандартный режим нельзя сразу преобразовать в 8 номеров цветов. Преобразование происходит синхронно с частотой кадров телевизора, равной 50 Гц. При этом полученные 8 номеров цветов используются вместо цветов из слоя 0.

    В дополнительный режимах цвета данные о номерах цветов 8 точек вычисляются сразу после записи одного или нескольких байтов в область пикселов экрана. Для вычисления используется параметр attribute. Полученные 8 байтов записываются в соответствующий слой.
    Последний раз редактировалось zx-kit; 26.08.2015 в 05:29.
    "L-256"

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

    По умолчанию

    Что-то подумал я про переделку Саботера 2 под Метеор, и грустно мне стало... Лучшее, что я смогу там сделать - это "неСпектрумовское" синее небо в слое фона и перекрашенные тайлы переднего фона. А почему? А потому что в Саботере 5 слоев графики, из них 4 с маской. Вот так вот

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

    По умолчанию

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    Что-то подумал я про переделку Саботера 2 под Метеор, и грустно мне стало... Лучшее, что я смогу там сделать - это "неСпектрумовское" синее небо в слое фона и перекрашенные тайлы переднего фона. А почему? А потому что в Саботере 5 слоев графики, из них 4 с маской. Вот так вот
    Для начала не обязательно менять цвета - можно сначала устранить клешинг с одновременным ускорением вывода спрайтов. А как, в двух словах, эти 5 слоев графики выводятся на экран в игре?

    Для их вывода подходит новый режим цвета: 2 цвета + маска. Этот режим позволит просто накидать 4-5 слоев графики в слой 1 видеокарты. Маска задает контуры/форму спрайта. Если точка вне контура, то считается прозрачной. Прозрачные точки не записываются в область графики 1 слоя. Остается тот цвет точки, который был записан до этого. В результате получим наложение нескольких слоев без клешинга. А в слое 0 можно расположить тайлы фона, которые рисуются в стандартном режиме цвета.
    Последний раз редактировалось zx-kit; 26.08.2015 в 05:46.
    "L-256"

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

    По умолчанию

    Цитата Сообщение от zst Посмотреть сообщение
    А как, в двух словах, эти 5 слоев графики выводятся на экран в игре?
    В буфер знакоместа копируется тайл фона с атрибутом. На него накладываются по маске по очереди тайлы ГГ, Охранника-1, Охранника-2, переднего плана. INK и PAPER знакоместа определяются хитрой логикой (каждый слой начиная с ГГ и заканчивая передним планом могут поменять атрибут в буфере). Потом буфер знакоместа копируется в экранную область.
    А с Метеором мне непонятно как в один слой его спрайтов вывести 4 слоя (ГГ, охранники, передний фон), да еще и с маской.

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

    По умолчанию

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    с Метеором мне непонятно как в один слой его спрайтов вывести 4 слоя (ГГ, охранники, передний фон), да еще и с маской
    А вот если бы менять игру, под аппаратные спрайты, было бы проще?
    V6Z80P - Back for Good

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

    По умолчанию

    Цитата Сообщение от Valen Посмотреть сообщение
    А вот если бы менять игру, под аппаратные спрайты, было бы проще?
    Для начала это хотя бы видится реальным. У меня в планах есть переделка игры под TS-Conf, я немного думал на эту тему. Там тоже гемора будет прилично, но в целом это сделать можно.
    Для Саботера идеально было бы простое наличие 5 тайловых слоев - тогда переделки минимум. Но Саботер - не единственный тип игр с точки зрения графического движка.

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

    По умолчанию

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    В буфер знакоместа копируется тайл фона с атрибутом. На него накладываются по маске по очереди тайлы ГГ, Охранника-1, Охранника-2, переднего плана. INK и PAPER знакоместа определяются хитрой логикой (каждый слой начиная с ГГ и заканчивая передним планом могут поменять атрибут в буфере). Потом буфер знакоместа копируется в экранную область.
    А с Метеором мне непонятно как в один слой его спрайтов вывести 4 слоя (ГГ, охранники, передний фон), да еще и с маской.
    С Метеором все намного проще. Тайлы фона, ГГ, Охранника-1, Охранника-2 и переднего плана можно записывать сразу в слой 0 или 1.

    Для каждого объекта:

    1. Записать цвета INK и PAPER объекта в переменную attrubute.
    2. В HL записать адрес верхнего байта в знакоместе в экранной области.
    3. Выполнить восемь циклов:

    • загрузить в A байт пикселов
    • записать A по адресу в HL
    • загрузить в A байт маски
    • записать A по адресу в HL
    • вычислить следующие адреса пикселов и маски в области тайлов
    • перейти к следующему адресу пикселов на экране (INC H).

    И все. Видеокарта сама наложит по маске 5 слоев графики Saboteur2 Meteor version !

    ---------- Post added at 07:58 ---------- Previous post was at 06:45 ----------

    Можно подумать и об увеличении слоев. Слой 0 для стандартной графики и слои 1-5 для дополнительной.
    3F00 layer0 - режим слоя 0: 0 = off, 1 = on (стандартный режим ZX Spectrum-a)
    3F01 layer1 - режим слоя 1: 0 = off, 1 = on
    3F02 layer2 - режим слоя 2: 0 = off, 1 = on
    3F03 layer3 - режим слоя 3: 0 = off, 1 = on
    3F04 layer4 - режим слоя 4: 0 = off, 1 = on
    3F05 layer5 - режим слоя 5: 0 = off, 1 = on
    Последний раз редактировалось zx-kit; 27.08.2015 в 06:06.
    "L-256"

Страница 42 из 71 ПерваяПервая ... 383940414243444546 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 18
    Последнее: 11.04.2021, 10:54
  2. графический редактор
    от yur в разделе Вектор
    Ответов: 1
    Последнее: 08.11.2012, 13:01
  3. графический режим на Атари
    от goblinish в разделе Atari
    Ответов: 3
    Последнее: 06.01.2012, 11:19
  4. графический софт для 48 К
    от goglus в разделе Софт
    Ответов: 6
    Последнее: 02.08.2006, 15:33

Ваши права

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