:: СОДЕРЖАНИЕ НОМЕРА
:: Газетные рубрики
:: АВТОРЫ
:: Поиск
:: Поддержка проекта
Webmoney:
|
:: №11 (17.04.2002) Просмотров: 4914
Автор: Neo / Virtual Masters. Рубрика: Этюды. Номер: №11 (17.04.2002). Еще один метод вывода спрайта размером 2 на 2 знакоместа.В 10-м номере «Абзаца» я прочитал статью в разделе «Этюды» о процедуре попиксельного вывода спрайта 2x2 знакоместа. Предлагаю свой вариант - он более короткий и занимает 88 байт, в отличие от упомянутой процедуры Павла Стахова. Я не использовал альтернативные регистры, но идет работа с половинками регистра IY, кроме того все работает быстрее. Формат хранения одной линии спрайта так же изменен. Теперь он таков: байт маски, байт спрайта, байт маски байт спрайта, пустой байт маски, пустой байт спрайта. Пустой байт нужен для того, чтобы создать 8 сдвинутых вправо спрайтов с маской.HIG EQU 16 LEGHT EQU 2+1 _LGHT EQU LEGHT*HIG CRD_Y EQU 10 ;Y CRD_X EQU 7 ;X ORG #6000 LD (STEK+1),SP LD HL,SPRITE LD D,CRD_Y LD A,CRD_X LD (NEWCRD+1),A AND 7 JR Z,MIMO ;SCROLL ZANOWO PUSH HL LD E,2 ;СНАЧАЛА СКРОЛИРУЕТСЯ МАСКА SUDA PUSH HL ;ПОТОМ САМ СПРАЙТ LD B,_LGHT CIKL RR (HL) INC HL INC HL DJNZ CIKL CCF POP HL INC HL DEC E JR NZ,SUDA POP HL DEC A JR NZ,ZANOWO MIMO LD SP,HL LD YL,HIG ;GET_ADR_P NEWCRD LD A,0 RLCA RLCA RLCA XOR D AND %11000111 XOR D RLCA RLCA LD L,A LD A,D RRA SCF RRA RRA AND %01011000 XOR D AND %11111000 XOR D LD H,A ; LD E,LEGHT MASKA LD A,(HL) POP BC AND C ;БАЙТ МАСКИ OR B ;БАЙТ СПРАЙТА LD (HL),A INC L DEC E JR NZ,MASKA INC D DEC YL ;DEC LY JR NZ,NEWCRD STEK LD SP,0 RET ;END SPRITE INSERT "SPR" ;ПОДГРУЗКА СПРАЙТА От редакции: В принципе идея не плоха, но все же процедура не совсем универсальна, т.к. происходит смещение спрайта в памяти, т.е. еще раз вывести спрайт с одинаковыми координатами уже не удастся. Длина процедуры сократилась, а вот длина спрайта увеличилась. Таким обоазом, суммарная длина процедуры и спрайта получается точно такой же как и процедуры прошлого номера - 184 байта. Таким образом можно считать, что это еще один вариант вывода спрайта 2x2 с маской. Основная же задача сделать это как можно короче. По-пержнему ждем ваши варианты. Интересно, можно ли еще что-то сократить? Ссылки по теме:Печать спрайта с маской [№9]Вывода спрайта размером 2 на 2 знакоместа [№10] |