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

User Tag List

Страница 36 из 71 ПерваяПервая ... 323334353637383940 ... ПоследняяПоследняя
Показано с 351 по 360 из 703

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

  1. #351

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

    По умолчанию

    Написал на Verilog и протестировал в Icarus-Verilog (спасибо авторам сайта Marsohod) модуль развертки VGA.



















    Из картинок можно убедиться, что:

    1. Счетчик pixel clock считает от 0 до 4, т.е. делит на 5, а 126 / 5 = 25.2 MHz.
    2. Гашение до строчного синхроимпульса (Front porch) от 784 до 799, т.е. 16 пикселов.
    3. Строчный синхроимпульс (Sync pulse) от 0 до 95, т.е. 96 пикселов.
    4. Гашение после строчного синхроимпульса (Back porch) от 96 до 143, т.е. 48 пикселов.
    5. Счетчик пикселов в строке считает от 0 до 799, т.е. в строке (Whole line) 800 пикселов.
    6. Гашение до кадрового синхроимпульса (Front porch) от 515 до 524, т.е. 10 строк.
    7. Кадровый синхроимпульс (Sync pulse) от 0 до 1, т.е. 2 строки.
    8. Гашение после кадрового синхроимпульса (Back porch) от 2 до 34, т.е. 33 строки.
    9. Счетчик строк в кадре считает от 0 до 524, т.е. в кадре (Whole frame) 525 строк.
    10. Начало кадрового синхроимпульса (спад от 1 до 0) совпадает с началом строчного синхроимпульса.

    Вложения Вложения
    Последний раз редактировалось zx-kit; 07.08.2015 в 21:12.
    "L-256"

  2. #352

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

    По умолчанию

    Режим графики NO CLASH (без блиттера).

    Новый режим должен обеспечивать новые возможности с минимальными доработками в играх. Для этого нужно обеспечить выбор параметров:

    1. Атрибуты - стандартные / новые (отдельная яркость INK и PAPER)
    2. Начало экрана - стандартное (4000) / новое (0000)
    3. Адресация экрана - стандартная / новая (линейная)

    Для введения режима графики NO_CLASH в игры можно использовать стандартные параметры. Подпрограмму печати тайлов фона оставляем без изменений. Подпрограмму печати движущихся объектов модернизируем:

    В начале подпрограммы включаем режим поочередого выбора области маски и пикселов верхнего слоя. Запись первого байта в адрес пикселов производит запись в область маски верхнего слоя экрана. Запись второго байта в адрес пикселов производит запись в область пикселов верхнего слоя экрана и т.д. Запись в адрес атрибутов приводит к записи в область атрибутов верхнего слоя экрана. В конце подпрограммы выключаем режим переключения. После этого запись в адреса пикселов и атрибутов приводит к записи в области пискелов и атрибутов нижнего стандартного слоя экрана.

    Для вывода спрайта с маской в режиме NO_CLASH надо загрузить в аккумулятор байт маски и записать в адрес пикселов. Затем загрузить байт спрайта и записать по этому же адресу в адрес пикселов. И так далее - байт маски, байт спайта. Потом на каждые 8 байтов спрайта записать один байт атрибутов. В итоге спрайты будут двигаться поверх фона без клешинга. И это без особых переделок графики и программ.

    Для новых игры можно установить новые параметры режима. Это упростит и ускорит вывод на экран.

    Режим NO_CLASH можно реализовать в большинстве клонов на FPGA, включая Speccy2010, ReVerSE, ZX-Evo.
    Надо выбрать адреса портов и значения чисел для управления новым режимом.
    Последний раз редактировалось zx-kit; 08.08.2015 в 10:41.
    "L-256"

  3. #353

    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  4. #354

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

    По умолчанию

    Цитата Сообщение от denpopov Посмотреть сообщение
    интересно - как?
    забить лукапы с адресами?
    Если экран начинается с $0000 - экономим на прибавлении адреса $4000 при вычислении адреса байта пикселов и атрибутов.

    Если адресация линейная - нет деления на секторы - экономим время при вычислении адреса по координатам.

    Адрес HL в области пикселов по координатам X,Y клетки можно определить так: H=X, L=Y*8 (сдвиг влево три раза).
    Адрес HL в области атрибутов по координатам X,Y клетки можно определить так: H=X, L=Y+192 (OR $00C0).

    Подробнее описано тут.
    Последний раз редактировалось zx-kit; 08.08.2015 в 11:53.
    "L-256"

  5. #355

    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от zst Посмотреть сообщение
    Адрес HL в области пикселов по координатам X,Y клетки можно определить так: H=X, L=Y*8 (сдвиг влево три раза)
    у кого плохо с устным счетом и сколько байт отводится на линию? 8?

  6. #356

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

    По умолчанию

    Цитата Сообщение от denpopov Посмотреть сообщение
    у кого плохо с устным счетом и сколько байт отводится на линию? 8?
    Если координаты заданы в клетках или знакоместах (8 * 8 точек), то L = Y * 8. Если координаты заданы в точках, то L = Y.

    В горизонтальной линии также 32 байта. У них одинаковый L (младший байт адреса).
    Последний раз редактировалось zx-kit; 08.08.2015 в 12:13.
    "L-256"

  7. #357

    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    так сколько видеопамять места займет?

  8. #358

    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    1,104
    Спасибо Благодарностей отдано 
    1,339
    Спасибо Благодарностей получено 
    323
    Поблагодарили
    152 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    zst,
    Цитата Сообщение от zst Посмотреть сообщение
    3. Адресация экрана - стандартная / новая (линейная)
    Тут я вижу 2 варианта, что случится при переключении линейности:
    1. Картинка на экране "замиксуется"
    2. Процессор будет адресовать видеопамять по другому, а картинка сохранится.

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

  9. #359

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

    По умолчанию

    Цитата Сообщение от denpopov Посмотреть сообщение
    так сколько видеопамять места займет?
    При линейной адресации вместе с атрибутами 8 килобайт из стандартной памяти, это если с адреса 4000. Если с адреса 0, то используется дополнительная память видеокарты сверх стандартных 48 или 128 К. Для режима NO_CLASH верхний слой тоже в дополнительной сверх памяти.
    "L-256"

  10. #360

    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от zst Посмотреть сообщение
    При линейной адресации вместе с атрибутами 8 килобайт из стандартной памяти, это если с адреса 4000. Если с адреса 0, то используется дополнительная память видеокарты сверх стандартных 48 или 128 К. Для режима NO_CLASH верхний слой тоже в дополнительной сверх памяти.
    Как у амстрада.

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

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

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

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

Ваши права

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