:: СОДЕРЖАНИЕ НОМЕРА
:: Газетные рубрики
:: АВТОРЫ
:: Поиск
:: Поддержка проекта
Webmoney:
|
:: №10 (30.01.2002) Просмотров: 5911
Автор: Павел Стахов / Studio Stall. Рубрика: Этюды. Номер: №10 (30.01.2002). Вывода спрайта размером 2 на 2 знакоместаПредлагаю доработанную мною процедуру вывода спрайта размером 2 на 2 знакоместа. С целью уменьшения размера (теперь 120 байт против 149 у RageVorteX/#c5), да и некоторого увеличения скорости работы был изменен алгоритм сдвига и вывода спрайта, поэтому формат спрайта теперь немного изменился: сначала идет слово (два байта - младший, затем старший) маски, потом слово спрайта, и так 16 раз. Формат немного неудобен т.к. придется писать свой конвертер, но результат того стоит! И еще. Если скорость процедуры не так важна, как ее обьем, то строки, помеченные звездочкой можно заменить на;... LD C,A CALL 8880 ;... таким образом процедура сократится еще на 21 байт и составит 99 байтов! Отмечу лишь, что процедура по адресу 8880 занимается расчетом координат на экране с точностью до пикселя, на входе у нее C=X, B=Y, на выходе будет HL=адрес на экране, A=смещение в пикселях относительно начала знакоместа. ;B=Y, C=X ;A=НОМЕР СПРАЙТА SPRITE1 DI LD (WSP1+1),SP LD H,0 LD L,A ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL LD DE,S_ADR ADD HL,DE LD A,B ;* RRA ;* SCF ;* RRA ;* RRA ;* AND #5F ;* LD D,A ;* XOR C ;* AND 7 ;* XOR C ;* RRCA ;* RRCA ;* RRCA ;* LD E,A ;* LD A,B ;* XOR D ;* AND 7 ;* XOR D ;* LD D,A ;* LD A,C ;* AND 7 ;* NEG ADD A,8 LD (LSB+2),A LD SP,HL LD A,16 S15 EX AF,AF’ LD A,D CP #58 JR NC,WSP1 POP HL POP IX XOR A LSB LD BC,#00FF S_LP1 ADD HL,HL SET 0,L RL C ADD IX,IX RLA DJNZ S_LP1 LD B,A LD A,(DE) AND C OR B LD (DE),A INC E LD A,(DE) AND H OR HX LD (DE),A INC E LD A,(DE) AND L OR LX LD (DE),A DEC E DEC E INC D LD A,D AND 7 JR NZ,S14 LD A,E ADD A,#20 LD E,A JR C,S14 LD A,D SUB 8 LD D,A S14 EX AF,AF’ DEC A JR NZ,S15 WSP1 LD SP,0 EI RET S_ADR ЗАГРУЖАЕМ СПРАЙТ... Ссылки по теме:Печать спрайта с маской [№9]Еще один метод вывода спрайта размером 2 на 2 знакоместа. [№11] |