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%
Опрос с выбором нескольких вариантов ответа.
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 1084

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

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

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

    По умолчанию

    Цитата Сообщение от JV-Soft Посмотреть сообщение
    Долго читал, более менее понял, но пока нет конкретной информации, номера регистров, что за что отвечает,как заполняется адресное пространство через окно в 256 байт, без этого не понять сколько времени уйдет на расчеты адресов и программирование регистров, но уже понятно что уйдет много, спрайты спрайтами, прикинул real-time рисуем допустим вращающийся кубик линиями, для того что бы процедуру рисования линии сделать через регистры и окно в 256 байт уйдет всё прерывание на пересчеты, а не на рисование. Учитывая раньше нам на 8 точек надо было 1 байт в экран кидать (а не через регистры и окно пересылать), а теперь надо 2 байта, уже исходя из этого можем успеть сделать только половину от прошлого, а добавить к этому программирование регистров и расчет адресов для окна, что же у нас останется...
    А у вас нет примера на асме ?

    Вращающийся кубик как в ELITE надо рисовать так:


    1. Вычислить координату очередной точки.
    2. Записать координату в видеокарту.
    3. Записать два байта для рисования одной точки для 3х цветов + прозрачный.
    и т.д.

    Вращающийся кубик в трех цветах надо рисовать так:

    1. Вычислить адрес спрайта в основном ОЗУ ZX Spectrum.
    2. Настроить адреса для пересылки.
    3. Записать спрайт в Метеор командой LDIR.
    и т.д.
    "L-256"

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

  3. #2

    Регистрация
    14.05.2015
    Адрес
    г. Харьков, Украина
    Сообщений
    2,940
    Спасибо Благодарностей отдано 
    150
    Спасибо Благодарностей получено 
    302
    Поблагодарили
    171 сообщений
    Mentioned
    4 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от zst Посмотреть сообщение
    1. Вычислить координату очередной точки.
    2. Записать координату в видеокарту.
    3. Записать два байта для рисования одной точки для 3х цветов + прозрачный.
    и т.д.
    Мне представляется иначе, я или я не понял принцип, если бы с конкретными цифрами, было бы понятнее, адреса экранов номера назначение регистров, если ошибаюсь поправьте -
    1. Вычислить адрес точки, в памяти и слое видеокарты
    2. Вычислить адрес отправляемых двух байт относительно окна 256 байт в памяти карты (или это через регистры задается)
    3. Отправить эти два байта, и при этом как понимаю надо дергать какие то регистры карты.
    и так по кругу

    Я просто хочу прикинуть на асме, что можно успеть нарисовать за прерывание, но без более конкретной информации увы невозможно.
    Увы общий формат форума вышел из рамок моего любимого места , более тут не бываю.

  4. #3

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

    По умолчанию

    1. Вычислить координату очередной точки для ELITE-графики:
    Сложные математические вычисления (много тактов)

    2. Записать координаты точки в видеокарту:
    ld (xl), hl - записать координату X (16 тактов)
    ld (yl), de - записать координату Y (20 тактов

    3. Записать два байта для рисования одной точки:
    ld hl, 1000000000000000b - данные для рисования одной точки (10 тактов)
    ld (meteor_data), hl - рисование точки (16 тактов)
    "L-256"

  5. #4

    Регистрация
    14.05.2015
    Адрес
    г. Харьков, Украина
    Сообщений
    2,940
    Спасибо Благодарностей отдано 
    150
    Спасибо Благодарностей получено 
    302
    Поблагодарили
    171 сообщений
    Mentioned
    4 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    zst, Вообще запутали
    Цитата Сообщение от zst Посмотреть сообщение
    2. Записать координаты точки в видеокарту:
    ld (xl), hl - записать координату X (16 тактов)
    ld (yl), de - записать координату Y (20 тактов
    На прямую мы ведь не может адресовать весь экран ,xl и yl это адреса в области 256 байт или в карте ? Вы же говорите данные передаются через окно 256 байт, как вычисляется адрес для xl и yl через окно 3B00 — 3BFF в 256 байт ? Как идет работа с окном ?

    - - - Добавлено - - -

    PS если оставить разрешение до 256 точек можно обойтись половинками регистров, что очень ускорит и расчеты и передачу данных.

    - - - Добавлено - - -

    Цитата Сообщение от zst Посмотреть сообщение
    Для перемещения этого окна размером 512 байтов в другую область использовать порт 7EH
    Или область 3B00 — 3BFF фиксирована, а подставляется через регистр #7E нужная область, так ?
    Увы общий формат форума вышел из рамок моего любимого места , более тут не бываю.

  6. #5

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

    По умолчанию

    Цитата Сообщение от JV-Soft Посмотреть сообщение
    zst, Вообще запутали

    На прямую мы ведь не может адресовать весь экран ,xl и yl это адреса в области 256 байт или в карте ? Вы же говорите данные передаются через окно 256 байт, как вычисляется адрес для xl и yl через окно 3B00 — 3BFF в 256 байт ? Как идет работа с окном ?

    - - - Добавлено - - -

    PS если оставить разрешение до 256 точек можно обойтись половинками регистров, что очень ускорит и расчеты и передачу данных.

    - - - Добавлено - - -


    Или область 3B00 — 3BFF фиксирована, а подставляется через регистр #7E нужная область, так ?
    В этот регистр вместо 3A будем записывать другие числа, чтобы переместить в другую область.
    meteor_data - адрес начала области данных для записи спрайтов.
    Забудьте про адреса на экране - будем использовать координаты.
    Метеор по координатам сам будет вычислять адреса в своей памяти и сам рисовать.

    xl = 3A00
    meteor_data = 3B00
    Последний раз редактировалось zx-kit; 29.09.2016 в 17:36.
    "L-256"

  7. #6

    Регистрация
    14.05.2015
    Адрес
    г. Харьков, Украина
    Сообщений
    2,940
    Спасибо Благодарностей отдано 
    150
    Спасибо Благодарностей получено 
    302
    Поблагодарили
    171 сообщений
    Mentioned
    4 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от zst Посмотреть сообщение
    Забудьте про адреса на экране - будем использовать координаты.
    По координатам точек ? а зачем тогда за координатой каждой точки засылать каждый раз два байта цвета ?
    В общем думал, что понял принцип, но понял, что не понял.
    Поэтому и прошу конкретный полный пример.

    Вот возьмем

    LD hl,#4000
    LD a,#80
    ld (hl),a

    Это у нас в спековском экране поставит точку с координатами 0,0 (верхний левый угол)

    Можете не упрощнно, а на асме дать пример для вашей карты который сделает тоже самое. Выведет одну точку в 0,0
    Увы общий формат форума вышел из рамок моего любимого места , более тут не бываю.

  8. #7

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

    По умолчанию

    Цитата Сообщение от JV-Soft Посмотреть сообщение
    По координатам точек ? а зачем тогда за координатой каждой точки засылать каждый раз два байта цвета ?
    В общем думал, что понял принцип, но понял, что не понял.
    Поэтому и прошу конкретный полный пример.

    Вот возьмем

    LD hl,#4000
    LD a,#80
    ld (hl),a

    Это у нас в спековском экране поставит точку с координатами 0,0 (верхний левый угол)

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

    1 точка:
    ld hl,0
    ld (xl), hl - записать координату X (16 тактов)
    ld de,0
    ld (yl), de - записать координату Y (20 тактов)
    ld hl, 1000000000000000b - данные для рисования одной точки (10 тактов)
    ld (meteor_data), hl

    2 точка:
    ld hl,1
    ld (xl), hl - записать координату X (16 тактов)
    ld de,0
    ld (yl), de - записать координату Y (20 тактов)
    ld hl, 1000000000000000b - данные для рисования одной точки (10 тактов)
    ld (meteor_data), hl
    Последний раз редактировалось zx-kit; 29.09.2016 в 17:59.
    "L-256"

  9. #8

    Регистрация
    05.03.2013
    Адрес
    г. Канев, Украина
    Сообщений
    1,596
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    3 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    zst, а если
    ld hl,0
    ld (xl), hl - записать координату X (16 тактов)
    ld de,0
    ld (yl), de - записать координату Y (20 тактов)
    ld hl, 1000000000000000b - данные для рисования одной точки (10 тактов)
    ld (meteor_data), hl

    ld hl,xl
    ld b,0
    ld a,b
    1: ld (hl),a
    inc a
    djnz 1

    линия из 256 точек получится?

  10. #9

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

    По умолчанию

    Цитата Сообщение от Hacker VBI Посмотреть сообщение
    zst, а если

    ld hl,xl
    ld b,0
    ld a,b
    1: ld (hl),a
    inc a
    djnz 1

    линия из 256 точек получится?
    Нет, после inc a надо добавить:
    ld hl, 1000000000000000b - данные для рисования одной точки (10 тактов)
    ld (meteor_data), hl
    "L-256"

  11. #10

    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,977
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    321
    Спасибо Благодарностей получено 
    320
    Поблагодарили
    242 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    как человек, когда-то патчивший графику "элиты", не могу промолчать
    Цитата Сообщение от zst Посмотреть сообщение
    1. Вычислить координату очередной точки для ELITE-графики:
    Сложные математические вычисления (много тактов)

    2. Записать координаты точки в видеокарту:
    ld (xl), hl - записать координату X (16 тактов)
    ld (yl), de - записать координату Y (20 тактов

    3. Записать два байта для рисования одной точки:
    ld hl, 1000000000000000b - данные для рисования одной точки (10 тактов)
    ld (meteor_data), hl - рисование точки (16 тактов)
    во-1, кадр в "элите" рисуется не на экране, а в буфере (и потом чересстрочно перебрасывается в экран)
    во-2, никто в здравом уме не будет рисовать отрезки по координатам следующего пикселя
    вычисляют сразу соседний адрес (байтовая маска на Спеке - как бы часть адреса)
    именно ради ускорения и упрощения вычислений

    у меня получилось емнип около 80 тактов на пиксель в среднем для финальной отрисовки без отсечения
    это в цикле, а применив таблицы или развернув код (и без ксора) можно рисовать примерно вдвое быстрее
    (а с альтернативной раскладкой буфера или нового экрана - еще быстрее и гораздо короче)

    Цитата Сообщение от zst Посмотреть сообщение
    Два байта - это байт данных и байт маски, с помощью которых у нас будет рисоваться одна точка, а остальные 7 точек справа будут прозрачные и не закрасят слой.
    Команды Метеора оптимизированы под спрайты, а не точки.
    Рисовать будем не в стандартном экране, а выше, в новом слое графики.
    В стандартном будем рисовать как раньше.

    1 точка:
    ld hl,0
    ld (xl), hl - записать координату X (16 тактов)
    ld de,0
    ld (yl), de - записать координату Y (20 тактов)
    ld hl, 1000000000000000b - данные для рисования одной точки (10 тактов)
    ld (meteor_data), hl

    2 точка:
    ld hl,1
    ld (xl), hl - записать координату X (16 тактов)
    ld de,0
    ld (yl), de - записать координату Y (20 тактов)
    ld hl, 1000000000000000b - данные для рисования одной точки (10 тактов)
    ld (meteor_data), hl
    жуть кошмарная для "быстрой видеокарты" (c)

    а вот как эти же два пикселя можно вывести на стандартном медленном Спектруме:
    ld hl,$4000
    set 7,(hl)
    set 6,(hl)
    40 тактов!!

    самая (?) же быстрая процедура установки точки по произвольным новым координатам - только 58 тактов

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

Страница 1 из 2 12 ПоследняяПоследняя

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

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

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

Ваши права

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