К основному контенту

ZX EVO: Выводим графику средствами DMA

ZX EVO:  Выводим графику средствами DMA

DMA (англ. direct memory access) кидает данные со скоростью 7мб/c. 

Запустить исходник процедуры в XAS можно тут.


 LTEXT "TSCONFI2"; грузим данные портов
 ORG 32768
 LCODE "src"; грузим нашу картинку
 ORG 26000
 

 LD BC,DMASADH;  указываем откуда брать нашу картинку, старший байт
 LD A,#80
 OUT (C),A
 LD BC,DMASADL;  указываем откуда брать нашу картинку, младший байт
 LD A,#00
 OUT (C),A
 LD BC,DMASADX;  с какой страницы памяти брать картинку
 LD A,#02
 OUT (C),A

 LD BC,DMADADH;  указываем куда отправляем нашу картинку, старший байт
 LD A,#40
 OUT (C),A
 LD BC,DMADADL;  указываем куда отправляем нашу картинку, младший байт
 LD A,#00
 OUT (C),A
 LD BC,DMADADX;  в какую страницу отправляем
 LD A,#05
 OUT (C),A

 LD BC,DMALEN; размер блока памяти который кидаем
 LD A,#7F
 OUT (C),A
 LD BC,DMANUM; кол-во блоков
 LD A,#1A
 OUT (C),A

 LD BC,DMACTR;  собственно кидаем картинку на экран
 LD A,%00000001
 OUT (C),A
 RET


 Размер блока может быть 512 байт, число в регистре "А" на самом деле удваивается. У меня там стоит число #7F, которое на самом деле задает блок в 256 байт. 

 Как задать выравнивание для блоков? 

 Например:  LD A,%00011001 - будет кидать данные не построчно, а квадратами, размер которых указан в в портах  DMALEN х DMANUM. Каждая последующая линия автоматически будет делать + 512 байт, что составляет одну строчку экрана при режиме 256 color. LD A,%00010001 при режиме 16 color. 

Комментарии

Отправить комментарий

Популярные сообщения из этого блога

ZXEVO: Вывод спрайта в TS-CONFIG

ZXEVO: Вывод спрайта в TS-CONFIG    Процедура вывода спрайта на ZXEVO под TSCONFIG адаптированная для отладчика XAS. Файл с портами  TSCONFI2  на диске  тут . Также на диске есть пример кода вывода спрайта SPRITE.XAS и тестовый ковер со спрайтами I.C                      LTEXT “TSCONFI2”;   подгружаем файл со списком портов                 ORG 26000 Sprite          LD   BC , SGPAGE ;   страница памяти где находятся ваши спрайты                  LD   A ,# C 0                  OUT  ( C ), A                ...

Печать спрайта в TS CONF 256 color

  TS-CONF по умолчанию имеет аппаратные спрайты и тайлы которые используют 16 цветов, однако это не значит, что нет возможности использовать спрайты в 256 цветов. Для того, чтобы вывести такой спрайт, нужно воспользоватся DMA в режиме BLT1. В этом режиме перекидываются любые данные если они не равны нулю. Рисуем спрайты любыми цветами, но нулевой цвет оставляем для фона который нужно будет вырезать. Как всегда процедура и спрайты для теста тут: SPR.TRD Ниже привожу пример процедуры:             ORG       30000              LD            HL,0; X COORDINATE            LD            BC,0; Y COORDINATE             LD            (XX),BC LD     ...

TSolitaire под TS-Conf

       Исходники к пасьянсу TSolitaire под TS-Conf можно скачать ниже по ссылке. Немного пояснений к файлам на диске: 1 - Все файлы нужно запускать в Xasme (он уже есть на диске). 2- Главный файл XASASM 1, чтобы запустить его, в Хасме жмите Shift+Caps затем L. Появится каталог в котором нужно выбрать наш файл. Жмем Shift+Caps затем A, как проассемблируется жмем R. Алилуя!!! Игра запустилась. 3 - Файл Coloda - основной массив всех карт. 4- Файд - TSCONFI2 список портов TS CONFIG. Если нужно поменять графику под другие системы, то все карты печатаются DMA как обычные спрайты (запоминаем фон, печатаем карту, двигаем ее, восстанавливаем фон). Стрелочка это аппаратный спрайт, кроме стрелки аппаратных спрайтов я не использую. Скачать: http://pmc-wagner.su/tsolitedit.trd