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

User Tag List

Страница 21 из 71 ПерваяПервая ... 171819202122232425 ... ПоследняяПоследняя
Показано с 201 по 210 из 703

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

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

    По умолчанию

    Цитата Сообщение от MVV Посмотреть сообщение
    Лучше добавить регистры:
    1) адрес видео буфера 0
    2) адрес видео буфера 1
    3) управления (бит 0=0 отображается буфер 0; 1=буфер 1)

    Хотя хватит одного регистра адреса видео буфера, дальше меняя его, можно хоть 10 буферов в памяти переключать. А так-как видео память линейная, то это ещё можно использовать как сдвиг вверх/вниз на строку.

    Со спрайтами пока повременить. Сейчас доделаю тестовую конфигурацию для U16, потом перенесу на Speccy2010 (нужно будет припаять второй SD разъем для возможности работы DivMMC, нужен будет для загрузки ПО).
    Идея нежесткого расположения буферов хорошая. Но надо 2 регистра для адреса буфера 0 и 1. Обычно в 1 писать а из другого сканер будет отображать на монитор.
    Как работать с DivMMC ? ссылку пожалуйста.
    Какие устройства используют память SDRAM кроме ориентировочного ОЗУ 1M ?
    Наверно надо прикинуть программку для Z80, которая могла бы закрасить экран какими-нубудь полосками.

    Посылать данные из Z80 в видеокарту наверно лучше по 2 байта, например,
    LD (PIXEL), HL.
    Уже надо дешифраторы для команды включения/выключения режима, адресов буферов, адреса точки в SDRAM, данных точки (PIXEL),

    Эти команды надо расположить в адресах 5AXX Z80.

    Биты цвета в слове расположи, как я нарисовал в таблице. Тогда можно будет загрузить в ZX картинку 15 бит, а потом загрузить для пробы в видеокарту.

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

    Память буфера экрана с промежутками. 320 округлил до 512, 240 - до 256. Это немного увеличивает затраты в SDRAM, зато очень легко по координатам вычислить адрес точки в буфере экрана.
    Последний раз редактировалось zx-kit; 28.06.2015 в 12:12.
    "L-256"

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

    По умолчанию

    Цитата Сообщение от zst Посмотреть сообщение
    Эти команды надо расположить в адресах 5AXX Z80.
    Лучше сделать базовый регистр, будет возможность спроэцировать массив регистров карты на любой из адресов памяти.
    Цитата Сообщение от zst Посмотреть сообщение
    Память буфера экрана с промежутками. 320 округлил до 512, 240 - до 256
    Это уже работа блиттера разные прямоугольники и квадраты из памяти вырезать. Если делать так, то тогда видео буфер должен быть 1024x1024, 512х512, 512х256 с возможностью указания базы нулевой позиции x,y отображаемой области. Тогда можно отображаемую область двигать ещё влево и вправо, типа сгролл в играх, дорисовывая только по краям

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

    По умолчанию

    Цитата Сообщение от MVV Посмотреть сообщение
    Лучше сделать базовый регистр, будет возможность спроэцировать массив регистров карты на любой из адресов памяти.
    Можно так:
    LD A,1
    LD (0),A
    LD A, BASE_ADDR
    LD (0),A
    Это уже работа блиттера разные прямоугольники и квадраты из памяти вырезать. Если делать так, то тогда видео буфер должен быть 1024x1024 с возможностью указания базы нулевой позиции x,y отображаемой области.
    Это на один экран уйдет 2 мегабайта. На два экрана 4 мегабайта. Многовато. Давай не будем тратить.
    За базовый объем ОЗУ девборды/видеокарты лучше взять 8 Мегабайт.
    Максимум 512*512 на экран - это 512 Кбайт. 1 Мбайт на два экрана.

    ---------- Post added at 14:40 ---------- Previous post was at 14:30 ----------

    Если использовать возможность дорисовывать часть экрана сбоку, а потом сдвигать путем указания смещения, надо возможность по-вертикали и горизонтали по два экрана. То есть 1024*512. Если при этом вместо двух буферов использовать 1, то 1 Мбайт дожно хватить на такой режим.

    ---------- Post added at 14:43 ---------- Previous post was at 14:40 ----------

    Надо составить адресацию всех регистров, чтобы можно было начать разработку дешифратора в FPGA.
    Последний раз редактировалось zx-kit; 28.06.2015 в 12:32.
    "L-256"

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

    По умолчанию

    Цитата Сообщение от zst Посмотреть сообщение
    Но место INT выбрано не очень удачно. Было бы больше времени на построение следующего экрана игры, если бы он формировался не в самой нижней точке кадра
    Если карта будет генерить сигнал INT, то будет конфликт со спековским инт.
    V6Z80P - Back for Good

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

    По умолчанию

    Цитата Сообщение от Valen Посмотреть сообщение
    Если карта будет генерить сигнал INT, то будет конфликт со спековским инт.
    Смотрим бит регистра прерывания карты или врубаем IM2 и идем по вектору (их может быть несколько от карты) на ISR. Для обычного режима спектрума, карта INT может и не выдавать.

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

    По умолчанию

    Цитата Сообщение от Valen Посмотреть сообщение
    Если карта будет генерить сигнал INT, то будет конфликт со спековским инт.
    В некоторых современных спектрумах с ZX-BUS предусмотрено подключение внешней видеокарты. Нужно просто снять на материнской плате перемычку, через которую идет INT. Примеры - ZXM-Phoenix, KAY-2010.

    ---------- Post added at 16:50 ---------- Previous post was at 16:30 ----------

    Однобайтовые регистры видеорежима/видеокарты:

    00 MODE - режим графики: 1 = 256х192 32K, 2 = 320х240 32K, 0 - стандартный 256х192 с атрибутами
    01 ADDR_SCR1 - адрес экрана 1
    02 ADDR_SCR2 - адрес экрана 2
    03 CLEAR - закрасить экран цветом COLOUR
    04 PLOT - нарисовать точку цветом COLOUR по координатам Y, X с предварительным смещением в качестве параметра: 0 = без смещения

    Двухбайтовые регистры видеорежима/видеокарты:

    F6 DY_L - смещение экрана по Y (мл. байт)
    F7 DY_H - смещение экрана по Y (ст. байт)

    F8 DX_L - смещение экрана по X (мл. байт)
    F9 DX_H - смещение экрана по X (ст. байт)

    FA Y_L - координата Y (мл. байт)
    FB Y_H - координата Y (ст. байт)

    FC X_L - координата X (мл. байт)
    FD X_H - координата X (ст. байт)

    FE COLOUR_L - цвет точки или экрана (мл. байт)
    FF COLOUR_H - цвет точки или экрана (ст. байт)
    Последний раз редактировалось zx-kit; 28.06.2015 в 14:54.
    "L-256"

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

    По умолчанию

    Цитата Сообщение от zst Посмотреть сообщение
    INT надо подавать после отображения на телевизоре правой нижней точки экрана 256х192 ?
    Да
    Цитата Сообщение от zst Посмотреть сообщение
    Т.е. каждую локацию подготовить в виде таблицы 32х24 тайла (768 на экран) и загрузить в SDRAM в буфер локаций. Дополнительные слои делать с прозрачными цветами и прозрачным спрайтам № 0. После этого для копирования из буфера локаций в буфер экрана достаточно будет указать адрес локации. После перехода в новое место скопировать в буфер экрана нижний слой, потом спрайты героев, потом верхний слой. Я правильно понял?

    Сколько примерно надо локаций?
    Не надо тайлмапы загружать в видеопамять. Они должны быть в памяти Спека, а карте Спек говорит только адреса тайломапов. Причем карта должна вычитывать тайломапы из тех страниц, которые в данный момент включены в адресное пространство Z80. Ну или сделать возможность указывать карте не только адреса тайломапов, но и страницы памяти, из которых надо читать.

    Цитата Сообщение от zst Посмотреть сообщение
    Сколько байтов надо на номер тайла ?
    Было бы круто сделать переключалку 1/2 байта на тайл. Скажем, в Саботере в слой фона выводится 256 тайлов. Зачем нужна переключалка: адаптировать код игры под 2 байта на тайл может быть ни разу не просто, а вот для новых игр и для коренных переделок старых 256 тайлов может и не хватить.

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

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

    По умолчанию

    Давайте, раз адреса атрибутов использовать нежелательно под адреса регистров видеорежима, используем старший адрес в области ПЗУ от 00 до 3F. Какой предпочтительнее ?

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    Не надо тайлмапы загружать в видеопамять. Они должны быть в памяти Спека, а карте Спек говорит только адреса тайломапов. Причем карта должна вычитывать тайломапы из тех страниц, которые в данный момент включены в адресное пространство Z80. Ну или сделать возможность указывать карте не только адреса тайломапов, но и страницы памяти, из которых надо читать.
    Надо выбрать формат хранения тайломапа.
    Было бы круто сделать переключалку 1/2 байта на тайл. Скажем, в Саботере в слой фона выводится 256 тайлов. Зачем нужна переключалка: адаптировать код игры под 2 байта на тайл может быть ни разу не просто, а вот для новых игр и для коренных переделок старых 256 тайлов может и не хватить.
    Можно добавить режим номеров 1 или 2 байта.
    К сожалению, другие игры я подробно не разбирал.
    Может кто поделится опытом устройства других игр ? Для ELITE команды рисования точки и очистки экрана я уже добавил.
    Последний раз редактировалось zx-kit; 28.06.2015 в 17:54.
    "L-256"

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

    По умолчанию

    Цитата Сообщение от zst Посмотреть сообщение
    Давайте, раз адреса атрибутов использовать нежелательно под адреса регистров видеорежима, используем старший адрес в области ПЗУ от 00 до 3F. Какой предпочтительнее ?
    Для начала я бы сделал 24-разрядный базовый регистр указывающий на блок регистров карты в памяти, тогда будет возможность включать их по любому адресу конкретно в любой из страниц памяти, ну или кратно 256.
    Т.е. нужен видео порт карты IN/OUT n, доступный после её подключения. Чтение его даст информацию о наличии и состоянии карты, а запись включит блок регистров карты по указанному адресу в памяти в нужной нам странице.

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

    По умолчанию

    Цитата Сообщение от MVV Посмотреть сообщение
    Т.е. нужен видео порт карты IN/OUT n, доступный после её подключения. Чтение его даст информацию о наличии и состоянии карты, а запись включит блок регистров карты по указанному адресу в памяти в нужной нам странице.
    Да, согласен. Карта должна быть, во-первых, определяемая, а, во-вторых, отключаемая, причем все это через порт. BASIC 48, например, пытается писать с #0000, если карта будет всегда включена, то даже BASIC-программы будут творить с ней чудеса. При чтении из порта предлагаю со стороны карты выдавать ее версию.

    ---------- Post added at 19:05 ---------- Previous post was at 18:54 ----------

    Цитата Сообщение от zst Посмотреть сообщение
    Надо выбрать формат хранения тайломапа.
    Сложный вопрос... Если я предложу Саботеровский, то только ему подобные игры будут переделываться под карту без проблем. В целом, если забить на клиппирование спрайтов (а оно очень затратно по памяти Спека), есть резон сделать буфера либо на 32 * 24 = 768 байт (для однобайтных тайлов), либо 32 * 24 * 2 = 1536 байт для двухбайтных. В памяти слои идут последовательно. Карте нужно сказать сколько есть слоев, где в памяти начинается первый, какой набор тайлов для слоя использовать и надо ли зеркалировать (по X и Y) байты в графике тайлов. Хотя, при наличии у карты много ОЗУ в него можно закачать и перевернутые как угодно тайлы. За зеркалирование тайлов в тайлмапах отвечает код игры.
    Чтобы не генерить дополнительное прерывание по окончанию вывода графики, можно сделать 2 набора тайломапов в памяти и переключать активный в начале кадра. Удобно было бы хранить их в разных страницах по одному адресу Z80.

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

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

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

Эту тему просматривают: 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

Ваши права

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