ZXNet эхоконференция «code.zx»


тема: Программка вывода спрайта



от: Yura Nazarenko
кому: All
дата: 15 Apr 2000
Здравствуй, All! Решил кинуть для общего пользования программку вывода спрайтов. Она вряд-ли подойдет для вывода спрайтов с изменяющимися координатами, а для анимаций с фиксироваными размерами и координатами - в самый раз! Вот и сам текст с подробными ремарками. === cut ======================================================== ORG 24576 CALL ZAPTAB ;Заполнение адресов экрана ;Тестовая часть LD IX,SPEED ;IX - адрес процедуры вывода LD BC,#8020 ;BC - размеры по X и Y. X - текстовые, Y - по пикселю LD HL,#0000 ;HL - координаты по X и Y. X - текстовые, Y - по пикселю CALL ZAPVIV ;создание процедуры вывода ;вывод спрайта LD HL,0 ;адрес спрайта CALL SPEED ;вывод RET ;выход ;создание процедуры вывода спрайта ZAPVIV LD (IX),#F3 ;DI INC IX LD DE,STACK LD (IX),#ED ;LD (STACK),SP INC IX LD (IX),#73 INC IX LD (IX),E INC IX LD (IX),D INC IX LD (IX),#F9 ;LD SP,HL INC IX LD (SIZE),BC ;запомним размер и координаты LD (KOOR),HL LD A,(SIZE+1);в A рамер по Y LD B,A ;в B заносим счетчик A LD A,(KOOR+1);в A координата по Y ZAPVIV1 PUSH BC,AF ;запоминаем счетчик и координату по Y LD IY,TABLE ;в IY адрес таблицы LD B,0 ;BC = A LD C,A ADD IY,BC ;вычисляем адрес таблицы ADD IY,BC LD H,(IY) ;берем нужный адрес из таблицы LD L,(IY+1) LD A,(KOOR) ;прибавляем смещение по X SRL A ADD A,L LD L,A LD A,(SIZE) ;в A размер по X SRL A ;делим на 2 LD B,A ;в B зносим счетчик A ZAPVIV2 LD (IX),#E1 ;POP HL INC IX LD (IX),#22 ;LD (SCR_ADR),HL INC IX LD (IX),L INC IX LD (IX),H INC IX INC HL INC HL DJNZ ZAPVIV2 ;заполняем до нужного размера по X POP AF,BC ;востанавливем координату по Y и счетчик INC A ;увеличиваем координату по Y DJNZ ZAPVIV1 ;заполняем до нужного размера по Y LD DE,STACK LD (IX),#ED ;LD SP,(STACK) INC IX LD (IX),#7B INC IX LD (IX),E INC IX LD (IX),D INC IX LD (IX),#FB ;EI INC IX LD (IX),#C9 ;RET RET ;выход SIZE DS 2 ;буффер для размера KOOR DS 2 ;буффер для координат ;заполнение адресов экрана ZAPTAB LD IX,TABLE ;в IX куда заполнять LD HL,#4000 ;первая треть CALL ZAPADR LD HL,#4800 ;вторая треть CALL ZAPADR LD HL,#5000 ;третья треть ZAPADR LD C,8 ;в C количество строчек в трети LD DE,32 ;в DE смещение до следующей строчки ZAPADR1 PUSH HL ;запоминаем адрес экрана LD B,8 ;в B сколько пикселей в строчке ZAPADR2 LD (IX),H ;кладем адрес экрана в IX LD (IX+1),L INC H INC IX INC IX DJNZ ZAPADR2 ;кончились пиксели? POP HL ;да! востанавливаем адрес экрана ADD HL,DE ;прибавляем смещение до следующей строчки DEC C ;уменьшаем счетчик строчек JR NZ,ZAPADR1;строчка последняя? RET ;да! выход STACK DS 2 ;буффер для стека при выводе спрайта TABLE DS 384 ;буффер для таблицы адресов экрана SPEED ;здеся будет процедура вывода === cut ======================================================== Сабж успевает вывести 2/3 экрана за одно прерывание. А может и больше. Всего хорошего тебе, All! Yuri Nazarenko/Rezident/N-Discovery e-mail : Yura_Nazarenko.sp0251@zxnet.spb.ru

от: Aleksey Malov
кому: Yura Nazarenko
дата: 28 Apr 2000
Приветствую тебя, Yura! Sat 15 Apr 2000 в 21:29:00 Yura Nazarenko и All разговаривали на тему Программка вывода спрайта. YN> Сабж успевает вывести 2/3 экрана за одно прерывание. А может и А смысл по 4 килобайта каждый кадр хранить? Ты максимум 24 кадра в 128 килобайтах поместить сможешь. Советую посмотреть Antares'овскую дему Devition - там анимация на весь экран в real-time'е распаковывается за 1 прерывание (хотя для нормальной скорости там ее 25 раз в секунду выводят). Причем не в чанках выполнено, а в hi-resolution. Как я и предполагал, там хранились не целые кадры, а разность между ними в запакованном виде. Вся анимация в этой деме занимает в распакованном виде более 1 Mb, а сама дема на диске - 200Kb. Так что учитесь крюнчить свои проги. YN> больше. Даа! И чего ради X-Trade'овцы распинались в RAGE насчет всякой там оптимизации - все равно народ не прислушивается (или читать не умеет). Какой смысл использовать IX в декрюнчере, коли можно без него обойтись - и быстрее и меньше места занимать будет. Желаю вам здоровья, счастья и творческих узбеков. Aleksey Malov aka VIVID/Brainwave.




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Реклама - Реклама и объявления.
Послесловие - Авторы и софт...
EX ZX'Systs - тени прошлого Ковровской ZX сцены.
Реклама - Частные объявления публикуются бесплатно.
PartyZone2 - ASCii Demoparty'2001: Краткий репорт о том, как все происходило от Surv!v0r.

В этот день...   8 мая