TS-CONF по умолчанию имеет аппаратные спрайты и тайлы которые используют 16 цветов, однако это не значит, что нет возможности использовать спрайты в 256 цветов. Для того, чтобы вывести такой спрайт, нужно воспользоватся DMA в режиме BLT1. В этом режиме перекидываются любые данные если они не равны нулю. Рисуем спрайты любыми цветами, но нулевой цвет оставляем для фона который нужно будет вырезать.
Как всегда процедура и спрайты для теста тут: SPR.TRD
Ниже привожу пример процедуры:
ORG 30000
LD HL,0; X COORDINATE
LD BC,0; Y COORDINATE
LD (XX),BC
LD D,#C0; ADDRESS SPRITE IN
MEMORY
LD E,#10; START VIDEO PAGE
CALL PERECHET; GET NUMBER PAGE
PUSH DE
POP HL
LD DE,16
SBC HL,DE
LD DE,(XX)
ADD HL,DE
PUSH HL
POP DE
LD (PAGETO),A
LD B,6; SPRITE SIZE X ABSCISSA
LD C,15; SPRITE SIZE Y ORDINATE
LD A,#C0
LD (PAGEFR),A
LD A,%10111001
LD HL,49152
CALL DMASTART
HALT
RET
PERECHET; PAGE NUMBER COUNTER
LD A,L
AND #3F
OR D
LD D,A
ADD HL,HL
ADD HL,HL
LD A,H
ADD A,E
RET
DMASTART
LD (SIZEBC),BC
LD (CLSDATA),A
LD BC,DMASADH
LD A,H
OUT (C),A
LD BC,DMASADL
LD A,L
OUT (C),A
LD BC,DMASADX
LD A,(PAGEFR)
OUT (C),A
LD BC,DMADADH
LD A,D
OUT (C),A
LD BC,DMADADL
LD A,E
OUT (C),A
LD BC,DMADADX
LD A,(PAGETO)
OUT (C),A
LD BC,DMALEN
LD HL,(SIZEBC)
LD A,H
OUT (C),A
LD BC,DMANUM
LD A,L
OUT (C),A
LD BC,DMACTR
LD A,(CLSDATA)
OUT (C),A
RET
SIZEBC DW 0
CLSDATA DB 0
PAGEFR DB 0
PAGETO DB 0
XX DW 0
Сергей, доброго времени суток. Пожалуйста свяжитесь со мной. Имеется предложение. Skorchak@ya.ru
ОтветитьУдалить