Deja Vu #09
13 ноября 1999

Coding - быстрая печать спрайта 2х2 знакоместа, с точностью до знакоместа.

<b>Coding</b> - быстрая печать спрайта 2х2 знакоместа, с точностью до знакоместа.
(C) Death MoroZ
__________________________________________


   Всем привет, кто про chunky-bump'ы, а я
про быструю печать спрайта 2х2 знакоместа,
которая расчитана на фиксированное положе-
ние спрайта, например, это может быть  пе-
чать карты.
   Итак, нижеследующую процедуру необходи-
мо вызвать перед  запуском основной  прог-
раммы.
   Процедура CREAT несколько изменяет фор-
мат спрайтов, а именно: оставляя без изме-
нения первые 2 знакоместа, со вторыми про-
исходит следующее:

        до вызова:         после:
          16 17            30 31
          18 19            28 29
          20 21            26 27
          .. ..            .. ..


   Для чего это надо? А вот для чего: нап-
ример, в HL у нас задан адрес в экране,ку-
да идет печать, при печати первых 2-х зна-
комест проблем нет, но как  с  наименьшими
потерями перейти ко второй паре? Например,
можно сохранять до изменения адрес:LD A,H,
а потом востановить: LD H,A, можно исполь-
зовать стек, установив его на таблицу  ад-
ресов, но есть  способ лучше. Для перехода
к  следующим  знакоместам  просто  сделать
INC H, а затем продолжать  выводить  снизу
вверх, именно  для  этого  и предназначена
нижеприведенная процедура.


CREAT  LD      HL,адрес спрайтов+16
       LD      DE,адрес спрайтов+30
DCR    LD      B,число спрайтов
M1_    PUSH    BC,HL,DE
       LD      B,4
M2_    LD      A,(HL)
       EX      AF,AF'
       LD      A,(DE)
       LD      (HL),A
       EX      AF,AF'
       LD      (DE),A
       INC     HL
       INC     DE
       LD      A,(HL)
       EX      AF,AF'
       LD      A,(DE)
       LD      (HL),A
       EX      AF,AF'
       LD      (DE),A
       INC     HL
       DEC     DE
       DEC     DE
       DEC     DE
       DJNZ    M2_
       POP     DE
       EX      DE,HL
       LD      BC,32
       ADD     HL,BC
       EX      DE,HL
       POP     HL
       ADD     HL,BC
       POP     BC
       DJNZ    M1_
       RET


Пример процедуры вывода:

       LD     (SP_+1),SP
       LD      IX,OUTS
       LD      DE,АДРЕС В КАРТЕ
       EXX
       LD      BC,#6000;АДРЕС БУФЕРНОГО
       EXX              ;ЭКРАНА
       LD      IX,OUTS
       LD      B,ЧИСЛО СПРАЙТОВ ПО Y
LOOP   LD      HL,$+3
       !ASSM   ЧИСЛО СПРАЙТОВ ПО X
       JP      (IX)
       !CONT
;ВАША  ПРОЦЕДУРА  ПЕРЕХОДА К СЛЕД.ГОРИЗОН-
;ТАЛЬНОЙ ЛИНИИ,И ПЕРЕХОДА К СЛЕД.ПАРЕ ЗНА-
;КОМЕСТ ЭКРАНА
       DJNZ    LOOP
SP_    LD      SP,0
       RET


OUTS   LD      A,(DE)
       EXX
       ADD     A,A
       LD      L,A
       LD      H,SPR_TBL'&H;СТАРШИЙ БАЙТ
;ЗАРАНЕЕ ПОДГОТОВЛЕННОЙ ТАБЛИЦЫ АДРЕСОВ
;(ДЛЯ  СОЗДАНИЯ  СТАТИЧНОЙ АНИМАЦИИ ДОСТА-
;ТОЧНО ЛИШЬ МЕНЯТЬ ЕГО СНАЧЕНИЕ)
       LD      SP,HL
       POP     HL
       LD      SP,HL;ВЗЯЛИ АДРЕС СПРАЙТА
       LD      H,B
       LD      L,C;В HL-АДРЕС ДЛЯ ПЕЧАТИ
;
       !ASSM   3
       POP     DE
       LD      (HL),E
       INC     L
       LD      (HL),D
       INC     H
       POP     DE
       LD      (HL),D
       DEC     L
       LD      (HL),E
       INC     H
       !CONT
       POP     DE
       LD      (HL),E
       INC     L
       LD      (HL),D
       INC     H
       POP     DE
       LD      (HL),D
       DEC     L
       LD      (HL),E;НАПЕЧАТАЛИ ВЕРХНЮЮ
;                     ПОЛОВИНУ

       LD      A,#20
       ADD     A,L
       LD      L,A;ПЕРШЛИ К НИЖНЕЙ

       !ASSM   3;ПЕЧАТАЕМ НИЗ...
       POP     DE
       LD      (HL),E
       INC     L
       LD      (HL),D
       DEC     H
       POP     DE
       LD      (HL),D
       DEC     L
       LD      (HL),E
       DEC     H
       !CONT
       POP     DE
       LD      (HL),E
       INC     L
       LD      (HL),D
       DEC     H
       POP     DE
       LD      (HL),D
       DEC     L
       LD      (HL),E
       INC     C;НЕОБХОДИМЫЕ
       INC     C;КОРРЕКТИРОВКИ...
       EXX
       INC     E
       INC     HL
       INC     HL
       JP      (HL);ВЫХОД
------------------------------------------




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

Апперативчик - вступление от авторов.

Апперативчик - Об управлении в Deja Vu.

Апперативчик - Халява №2: о пиратах и взломанных версиях журнала.

Апперативчик - Dejavu Info: Как приобрести журнал Deja Vu.

Тема - Swap: "От письма до бандероли" как найти в своем городе Спектрумистов.

Тема - Тусовка: CSP'99 - интервью со Slack Den.

Тема - Тусовка: CSP'99 - интервью с main coder'ом молодой Новосибирской группы AREASoft

Тема - Тусовка: CSP'99 - интервью с одним из издателей электронного журнала Deja Vu' Daniel/Playgear Co./Binary Dimension.

Тема - Тусовка: CSP'99 - интервью с одним из участников Рыбинской группы Cav/Auryn.

Тема - Тусовка: CSP'99 - интервью с отцом группы Playgear классным дядькой Ze Pagan.

Тема - Тусовка: CSP'99 - интервью с main coder'ом Flash и по совместительству одним из основателей группы - Alex Rider.

Тема - Тусовка: CSP'99 - опрос, как прошла party в двух словах, общие впечатления.

Тема - Тусовка: Сказание о том, как проходило Crazy Siberian Party 1999.

Капля припоя - HD диски: Доработка контроллера дисковода для работы с HD-дисками.

Капля припоя - Решение пpоблемы 1.2Мб дисковода.

Капля припоя - увеличение объема ОЗУ до 1024к на SPECCY варианта Таганрог 128К!

Капля припоя - схема программатора для микросхем постоянных запоминающих устройств (ПЗУ).

Капля припоя - о матричных принтерах.

Капля припоя - ISA-Spectrum: плата вставляемая в ISA слот IBM, являющееся частью или полным компьютером ZX-Spectrum.

Software - Демосцена: Обзор'инг демозов: 63 bit III, Jam, Anamnesis, 7 Up, 63 bit IV, DemoDyin, Napalm, Crapmo 2, Bunch of Arce, Devotion, WorkStop, Energy, Yes.

Software - Обзор Игр: MIST: Monstrland Part Two, Bomb Lakes, Marbles, KluXer, 4x4 Puzzle, Солдатики, Кораблики.

Software - Gun Commander: руководство пользователя.

Coding - coding для чайников: цивилизованный выход в TR-DOS.

Coding - coding для чайников: Подробно об одном из способов опроса клавиатуры.

Coding - coding для чайников: как устроен "Boot" изнутри.

Coding - coding для чайников: доработка MINI BOOT V3.0.

Coding - процедура печати 42 символа в строке (с трабутами), процедура быстрой печать спрайта с точностью до пикселя.

Coding - быстрай печать 64 символов в строке.

Coding - Конверсия числа со стека калькулятора в символьную строку.

Coding - быстрая печать спрайта 2х2 знакоместа, с точностью до знакоместа.

Coding - Hrust Library свободноpаспpостpаняемая библиотека пpоцедуp, с помощью котоpых можно упаковывать и pаспаковывать pазличные данные.

Coding - Обработка ошибок TR-DOS при работе через #3D13.

Coding - набор процедур для построения пользовательского интерфейса.

Coding - пишим вирус невидимку для TR-DOS.

Another world - Иллюзия безопасности: Страшные сказки о безопасности Windows и Internet (часть первая).

Доска почета - 3 метода отличить pеальный ZX Spectrum от эмулятоpов.

Доска почета - устав национального Фонда Спектрума (HФСП).

Доска почета - Резервы: попытка представить совершенный ZX Spectrum.

Доска почета - Накипело: "А жив ли еще Speccy, курилка?" Размышления в слух.

Доска почета - Ща скажу №1: оптимизация процедур, анонс журнала и новой аркадной игрушки.

Доска почета - Ща скажу №1: разборки Serg'a и Playgear, Взлом телефонных карт, анонс Crazy Siberian Party '2000.

Доска почета - Краткая история кемеровской группы Digital Life Group.

Семь и 1/2 - Студенческая мифология.

Семь и 1/2 - День дурака 2 (окончание).

Семь и 1/2 - Сказочки для детей.

Семь и 1/2 - Особенности национального рулеза или чисто Сибирский проект (повесть о Crazy Siberian Party 1999).

Пробы пера - воспоминания: новелла по игре "Черный Ворон".

Пробы пера - рассказ "Элексир Зверя".

Пробы пера - "Last Warrior".

Реклама - текстовая реклама и обьявления.

Реклама - графическая реклама и обьявления.


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

Похожие статьи:
Lammer'S Page - Что вам не нравится.
Разное - Модели Амиги.
Реклама - D.J.Crack вcе еще ищет Музыкaнтoв.
Игрушки - JACK NIPPER IN COCONUT CAPERS (PART 2).
Форум - вопросы и ответы по играм: Jungle Warrior, Buratino, Streaker, Paris Dakar, Bloodwych, Hero Quest, Apollo, Cliff Hanger, Cyber Hordes, Paradise Valley, Star Drive, Laser Platoon, Movie, Where Time Stood Still, The Sceptre, Carrier Command и т.д.

В этот день...   19 апреля