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

User Tag List

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

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

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

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

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

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

    23 50.00%
Опрос с выбором нескольких вариантов ответа.
Страница 8 из 109 ПерваяПервая ... 456789101112 ... ПоследняяПоследняя
Показано с 71 по 80 из 1084

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

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

    По умолчанию

    Цитата Сообщение от zst Посмотреть сообщение
    Для этого я и предложил идею наборов. Их еще можно назвать банками, блоками и т.п.
    Да, нормальная идея.


    Только, оставить выбор за кодером, какой метод использовать,
    описанные вами банки или
    3-ёх байтовый адрес.
    Т.е. нужно реализовать в карте оба метода.
    (начать с более простого)

    ---------- Post added at 15:11 ---------- Previous post was at 14:59 ----------

    Номер спрайта, можно сделать 2 байтовым.
    Но, по умолчанию, старший байт равен нулю.
    Тогда, кодер может установить:
    - только младший байт номера спрайта
    (если 256 номеров спрайтов достаточно)
    или
    - младший и старший байты номера спрайта
    (если 256 номеров спрайтов не достаточно)


    ---------- Post added at 15:15 ---------- Previous post was at 15:11 ----------

    Цитата Сообщение от zst Посмотреть сообщение
    Достаточно ли 256 спрайтов для такой игры ?
    Вот, по предложенному мной простому методу,
    если 256 не достаточно,
    то кодер просто будет юзать 2-ух байтовый номер спрайта.
    Последний раз редактировалось Valen; 24.06.2013 в 16:19.
    V6Z80P - Back for Good

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

    По умолчанию

    Цитата Сообщение от Valen Посмотреть сообщение
    Да, нормальная идея.


    Только, оставить выбор за кодером, какой метод использовать,
    описанные вами банки или
    3-ёх байтовый адрес.
    Т.е. нужно реализовать в карте оба метода.
    (начать с более простого)

    [/COLOR]Номер спрайта, можно сделать 2 байтовым.
    Но, по умолчанию, старший байт равен нулю.
    Тогда, кодер может установить:
    - только младший байт номера спрайта
    (если 256 номеров спрайтов достаточно)
    или
    - младший и старший байты номера спрайта
    (если 256 номеров спрайтов не достаточно)

    Вот, по предложенному мной простому методу,
    если 256 не достаточно,
    то кодер просто будет юзать 2-ух байтовый номер спрайта.
    Вы согласны, что спрайты в банке должны быть одинакового размера ?
    Старший байт номера спрайта - это номер банка.
    Чтобы видеокарта могла найти спрайт по номеру она должна знать начало банка и размеры спрайтов в этом банке.

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

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

    FPGA может аппаратно умножать числа по 18 битов. Это можно использовать для вычисления смещения спрайта в банке.

    Запутаться можно уже...

    Давайте о банках и спрайтах еще обдумаем хорошенько. Еще нужно обдумать о поведении блиттера на границах экрана. Например, как изображать спрайт летящего справа-налево объекта ?
    Последний раз редактировалось zx-kit; 24.06.2013 в 16:42.
    "L-256"

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

    По умолчанию

    Цитата Сообщение от zst Посмотреть сообщение
    Вы согласны, что спрайты в банке должны быть одинакового размера ?
    Да, конечно.

    Цитата Сообщение от zst Посмотреть сообщение
    Чтобы видеокарта могла найти спрайт по номеру она должна знать начало банка и размеры спрайтов в этом банке.
    Верно.


    Смотрите, можно проще, прям без "банков", вот так:
    - установил начало области (3 байта адрес спрайт памяти)
    - установил размер спрайтов области (2 байта)
    - копирую спрайт по номеру спрайта (номер спрайта: 1 или 2 байта)
    - ...


    Т.е. всё тоже самое, что вы говорили, только понятия "банка", мы не вводим. А просто при необходимости, подаются команды установки "начала области" и "размера спрайтов области" (вместо переключения банков).
    По моему так по-проще будет.
    Последний раз редактировалось Valen; 24.06.2013 в 16:47.
    V6Z80P - Back for Good

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

    По умолчанию

    Цитата Сообщение от Valen Посмотреть сообщение
    Смотрите, можно проще, прям без "банков", вот так:
    - установил начало области (3 байта адрес спрайт памяти)
    - установил размер спрайтов области (2 байта)
    - копирую спрайт по номеру спрайта (номер спрайта: 1 или 2 байта)
    Т.е. всё тоже самое, что вы говорили, только понятия "банка", мы не вводим. А просто при необходимости, подаются команды "установки начала области" и "размера спрайтов области" (вместо переключения банков).
    По моему так по-проще будет.
    Хорошо. давайте остановимся на этом варианте.
    "L-256"

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

    По умолчанию

    На нормальных видеоконтроллерах спрайты лежат в виде битмапа шириной 512 и не требуют никакого умножения. Тслабсу это было внедрено в мосх ещё два года назад, он понял сразу.

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

    По умолчанию

    Цитата Сообщение от alone Посмотреть сообщение
    На нормальных видеоконтроллерах спрайты лежат в виде битмапа шириной 512 и не требуют никакого умножения. Тслабсу это было внедрено в мосх ещё два года назад, он понял сразу.
    Вроде решили, что не стоит ограничивать полет фантазии программиста размерами спрайта 16 х 16 точек или каким-либо другим. Пусть он сам выбирает размер, например 6х8 точек для букв. А для произвольного размера нужно умножение при определении по номеру адреса начала спрайта .


    В команды добавлено:

    АДРЕС НАЧАЛА ОБЛАСТИ СПРАЙТОВ
    LD (IY+1), SPR0_ADDR0 ; младший байт адреса
    LD (IY+1), число
    LD (IY+1), SPR0_ADDR1 ; средний байт адреса
    LD (IY+1), число
    LD (IY+1), SPR0_ADDR2 ; старший байт адреса
    LD (IY+1), число

    РАЗМЕР СПРАЙТОВ В ОБЛАСТИ
    LD (IY+1), SIZE_X ; размер спрайта по-горизонтали (обычно 16)
    LD (IY+1), число

    LD (IY+1), SIZE_Y ; размер спрайта по-вертикали (обычно 16)
    LD (IY+1), число
    Последний раз редактировалось zx-kit; 24.06.2013 в 17:12.
    "L-256"

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

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

    По умолчанию

    Цитата Сообщение от zst Посмотреть сообщение
    Вроде решили, что не стоит ограничивать полет фантации программиста размерами спрайта 16 х 16 точек или каким-либо другим.
    При чём тут размер спрайта?
    Последний раз редактировалось alone; 24.06.2013 в 17:12.

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

    По умолчанию

    Цитата Сообщение от zst Посмотреть сообщение
    А для произвольного размера нужно умножения для определения начала спрайта по номеру.
    Если все спрайты одного размера - то это не "произвольный размер".
    И умножение не нужно. Вообще. Ни для начала спрайта, ни для середины спрайта.

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

    По умолчанию

    Цитата Сообщение от alone Посмотреть сообщение
    При чём тут размер спрайта?
    Тогда объясните поподробнее, что вы имели ввиду.
    "L-256"

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

    По умолчанию

    Пользователь задаёт координаты левого верхнего угла спрайта в битмапе и размер этого спрайта. Первая строка спрайта берётся по адресу base+256*Y+X. Следующая строка спрайта берётся по адресу +256. И так далее.

Страница 8 из 109 ПерваяПервая ... 456789101112 ... ПоследняяПоследняя

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

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

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

Похожие темы

  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

Ваши права

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