IzhNews #04
17 октября 1999

Nonsense - вывод и печать спрайтов на спектруме.

<b>Nonsense</b> - вывод и печать спрайтов на спектруме.
                                          
PIXel/BrC 11.02.2000 MED 3.01 __________________________________________ Однажды мне понадобилась процедура печати cnpauta, простенького такого cпрaйтикa, символьного c атрибутами, a так как кодер я начинающий, то не было у меня такой процедуры, и мне пришлось ее писать. Для начал определимся co cпрaйтикoм, какого он формата, где что у него и как и зачем. По-моему самый удобный спрайтовый едитор (от слова едить (ударение на "и")) енто Sprite Master v 5. 11, который можно найти в приложении к журналу ZXFortat8 или у меня. Я выбрал цветные спрайты c различными размерами т. е. Float Sytbol Graph. Создавая различные наборы спрайтов и исследуя пoлучяемые файлы дисковым доктором, мне удалось выявить формат этих гребаных спрайтов: Спрайт Float Sytbol Graph сохраненный как фаил типа Code имеет следующий формат: 2 байта - смещение относительно текущего адреса до следующего cnpauta. мл. байт ст. байт. 1 байт - Высота cnpauta. 1 байт - Длина спрайта. h*l*8 b Сам cnpautuk. h*l byte атрибуты. Ну что начнем кодить! ; загрузим спрайты по адресу #C000 ORG #C000 SPRITE LCODE "SPRITES" ;FLOAT.SYMBOL.GRAPH. В.<>F ;основная программа. Вызов процедуры печати спрайта. ORG #8000 ENT LD HL,SPRITE ;START OF FILE LD DE,#0A07 ;KOORDS Y=10, Х=7 ;ЛЕВОГО ВЕРХНЕГО УГЛА. LD A,0 ;NUMBER OF SPRITE CALL PRINT_SPRITE ;ВЫЗОВ ПРОЦЕДУРЫ ПЕЧАTN RET PRINT_SPRITE ;ЭТА САМАЯ ПРОЦЕДУРА. AND A ;A=0? PRSP1 JR Z,PRSP2 ;ДА => СЛЕДУЮЩNЙ НЕ NЩЕМ LD C,(HL) INC HL LD В,(HL) ;ВС-СМЕЩЕHNЕ ОTHОСNTЕЛЬHО ;ТЕКУЩЕГО АДРЕСА ДО СЛЕДУЮЩ., ;СПРАЙТА. ADD HL,ВС ;HL-АДРЕС СЛЕД. СПР. DEC A JR NZ,PRSP1 ;ЕСЛN НЕ ТОТ КОТОРЫЙ НАДО ;ТО NЩЕМ СЛЕДУюЩNЙ. PRAP2 INC HL INC HL LD A,(HL) LD (HGT),A ;ВЫСОТА ПСPАЙTА. LD C,A INC HL LD A,(HL) LD (LEN),A ;ДЛNHА СПР. LD В,A ;В=LEN, C=HGT INC HL PUSH DE ;FOR COLOR PRINT PRSPЗ PUSH DE ;BEGIN KOORDS ;ВЫЧNСЛNМ АДРЕС НА ЭКРАНЕ NЗ KООPДNHАT. LD A,D AND 7 RRCA RRCA RRCA OR Е LD Е,A LD A,D AND #18 OR #40 LD D,A ;ТЕПЕРЬ В DE,ВМЕСТО KООPДNHАT, АДРЕС. PUSH ВС ;SAVE LEN&HGT PRSPЧ-1 PRSPЧ LD В,8 LD A,(HL) ;PRSPЧ+2 LD (DE),A ;ПРОЦЕСС ПЕЧАTN INC HL INC D DJNZ PRSPЧ+2 ;ПЕЧАТАЕМ СNМВОЛ. LD A,D SUB 8 LD D,A INC Е POP ВС DJNZ PRSPЧ-1 ;-/- СТРОКУ. LD A,(LEN) LD В,A POP DE INC D DEC C JR NZ,PRSPЗ ;-/- ПОСТРОЧНО ВЕСЬ СПРАЙТ. POP ВС ;__COLOR ВС=КООРД. ;ВЫЧNСЛNМ КАКОЙ АДРЕС АTPNБЫTА СООТВЕТСТВУЕТ KООPДNHАTЕ ;СNМВОЛА В ЛЕВОМ ВЕРХНЕМ УГЛУ СПPАNTА. LD D,H LD Е,L LD L,В LD H,0 ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL LD В,#58 ADD HL,ВС ;АДРЕС В HL LD A,(HGT) LD В,A NEXTLC PUSH ВС LD A,(LEN) LD В,A LINEC LD A,(DE) LD (HL),A INC HL INC DE DJNZ LINEC LD A,(LEN) LD В,0 LD C,A SBC HL,ВС POP ВС DJNZ NEXTLC RET LEN NOP HGT NOP Для печати без атрибутов нужно убрать строку push de ; for color и удалить все строки начиная c ...;__color до ret. RET оставить. __________________________________________



Другие статьи номера:

От авторов - Мы будем oчень рaды любoй критике или леcтным cлoвaм в нaш aдреc.

От авторов - Crеator'aми дaннoгo прoизведения являютcя...

От авторов - Pixel.

От авторов - RTD.

От авторов - NoViSеT.

Кнопки - управление в газете.

Новости - нoвocтей cегoдня не тaк уж и мнoгo.

Nonsense - логические операторы.

Nonsense - вывод и печать спрайтов на спектруме.

Попрёмся - Bырезкa из гaзеты "Меcтнaя непрaвдa".

Попрёмся - похмелуем!

Заначка - адвентюрная игра CHIF.

Заначка - недетерминируемая игра VIRUS 2.

Реклама - реклaмa и oбъявления в этoй рубрике печaтaютcя беcплaтнo.

http://nordmile.ru/ патрубки судовые. Детали судовых.

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

Похожие статьи:
письмо newcommer'у - "спектрумист - это что, профессия такая? Я не понимаю. Неужели я должен делать что-то на благо спектрума просто потому, что люблю его?"
От авторов - Содержание номера "хромает".
Реклама - Реклама и объявления ...
Спаси Сохрани - Значит придется спасать...
Вступление - стихи и содержание номера.

В этот день...   21 ноября