Стандартную графику нельзя скопировать с помощью DMA. Надо прочитать байт пикселов, байт атрибутов, преобразовать цвета 8 точек в формат: 1 байт на точку. Возможно потребуется преобразование с помощью палитры ULA+. Потом готовые 8 точек записать в буфер экрана.
Напоминаю, в буфере экрана у нас будет результат всех графических операций:
Стандартная графика и/или фон, построенный из карты тайлов, сверху несколько спрайтов, может быть сверху еще передний слой тайлов, возможно линии. Так вот эту картинку надо вывести на экран телевизора или монитора. У них обычно разные частоты точек, строк и кадров.
Буфер VGA представляет из себя 32 регистра по 8 битов. Предназначен для согласования процессов чтения из буфера экрана по 16 точек и вывод в ЦАП VGA с другой частотой по одной точке.
Последний раз редактировалось zx-kit; 25.07.2015 в 14:12.
"L-256"
Последний раз редактировалось zx-kit; 25.07.2015 в 14:33.
"L-256"
Дма пока и не планировалось использовать. У Z80 и видеокарты общая память. Оба имеют к ней доступ. Может потом потребуется для копирования картинки после загрузки в другую область памяти. А так планировался блиттер для копирования спрайтов в область экрана.
Если будет возможность - лучше сразу грузить в нужную страницу ОЗУ, подключив ее в нужное окно 16К, как в ATM/ZX-EVO.
"L-256"
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
тогда сразу в топку затеи
Интересно, у TS-Conf общая память не особо и мешает.
И как блиттер будет планироваться? копирование побайтно или попиксельно? Или, может, с четными адресами?
отм пусть сразу идет лесом. Лучше бы адрес конкретной видеостраницы работал, а не по страницам.
Хотя возможно ДМА или блиттер без учета прозрачного цвета может понадобиться при загрузке спрайтов с носителя. Спрайты обычно рисуют в одной картинке. Тип так:
Чтобы обеспечить доступ к каждому спрайту при загрузке картинку нужно будет скопировать в определенное место SDRAM емкостью 8 мегабайт. После загрузки и копирования Z80 должен будет вычислить адрес каждого спрайта для последующего быстрого поиска. При загрузке нужно будет создать специальную таблицу с параметрами спрайтов. В ней каждый спрайт имеет номер, адрес начала в SDRAM, ширину, высоту, возможно дополнительные параметры. Возможно потребуется большой файл со спрайтами разделить на отдельные спрайты и скопировать в нужное место SDRAM. В результате будет таблица, по которой легко можно будет найти по номеру адрес спрайта и его размеры. После этого программа сможет работать со спрайтами на более высоком уровне без указания адреса и размеров.
Логика игры определяет, где разместить требуемые объекты. Каждый объект имеет имя или номер, текущее направление / угол поворота, фазу. Потом специальная подпрограмма должна определить номер спрайта. Видеокарта в командном файле читает информацию - координаты печати, номер спрайта, возможно номер палитры, цвет клана и т.п. Потом она по номеру спрайта находит в таблице его размеры и адрес в буфере спрайтов. После этого есть все данные для копирования.
---------- Post added at 17:21 ---------- Previous post was at 17:14 ----------
Копирование спрайтов аналогично TSconf, но не в реальном режиме времени (так как это сложно) и не ограничено количеством 85 и размерами 64х64. Насколько хватит времени и объема памяти - выбирает программист. Копирование таких же как в TSconf спрайтов происходит в буфер экрана поверх тайлов и других спрайтов.
В TSconf наверно тоже можно включать в любое окно любую страницу SDRAM. Какие видеостраницы ? Все адресное пространство Z80 64К и SDRAM 8М разделено на окна и страницы соответственно размером по 16 К. Ко всем имеют доступ Z80 и видеокарта. Есть буфер спрайтов, тайлов, экрана. Буферов экрана может быть несколько. Буферы размером больше 64 К. К ним обычно доступ не нужен. Только при загрузке тайлов и спрайтов с носителя. Там придется через окна 16 К. Хотя..
Последний раз редактировалось zx-kit; 25.07.2015 в 15:51.
"L-256"
Ну, в топку ваши проекты. Много умных слов и ничего на деле.
zst, собрал для Speccy2010 (EP2C8Q208C8) и ReVerSE-U16 (EP4CE22E22C7). Для Speccy2010 PLL не генерит 126МГц, пришлось выставить 125.0МГц, VGA 25.0МГц.
Попробуй, должно вывести на экран палитру 24bpp 16Мцветов с наложенным текстовым слоем 80x30, режим 640х480@60Hz 24bpp как на фото:
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)