ZX-Ревю 1996 №7-8 1995 г.

Этюды - вывод на экран спрайтов произвольной конфигурации.


  (С) Жерихов Руслан
                г. Новочебоксарск, 1996

   Операции со спрайтами.

1. Эта программа выводит на экран спрайт произвольной конфигурации, например
вот такой:

    Ъ----ї  Ъ-ї
    А--ї А--Щ і
       А------Щ

   Формат спрайта: заголовок - 1 байт - количество знакомест в спрайте;
данные спрайта - 1 байт Y координата, 2 байт X координата (координаты
относительные от левого верхнего угла спрайта). Далее 8 байт шаблон
знакоместа.
   Входные параметры: HL - адрес начала спрайта; DE - абсолютные X,Y
координаты левого верхнего угла спрайта; A - метод вывода спрайта ( с
уничтожением фона SP_PUT и с различными наложениями SP_OR, SP_XOR, SP_AND).
Если часть спрайта или весь спрайт выходит за пределы экрана, то он просто
не печатается.

SP_PUT    EQU  #00
SP_OR     EQU  #B6
SP_XOR    EQU  #AE
SP_AND    EQU  #A6
PTBL      LD   (MODE),A
          LD   A,(HL)
          INC  HL
PTBL_1    PUSH AF
          PUSH DE
          LD   A,(HL)
          ADD  A,E
          CP   #18
          JR   NC,PTBL_4
          LD   E,A
          INC  HL
          LD   A,(HL)
          ADD  A,D
          CP   32
          JR   NC,PTBL_5
          LD   D,A
          INC  HL
          PUSH HL
          LD   A,E
          AND  #18
          ADD  A,#40
          LD   H,A
          LD   A,E
          AND  7
          RRCA
          RRCA
          RRCA
          ADD  A,D
          LD   L,A
          POP  DE
          LD   B,8
PTLB_2    LD   A,(DE)
MODE      NOP
          LD   (HL),A
          INC  H
          INC  DE
          DJNZ PTBL_2
          EX   DE,HL
PTBL_3    POP  DE
          POP  AF
          DEC  A
          JR   NZ,PTBL_1
          RET
PTBL_4    INC  HL
PTBL_5    LD   DE,9
          ADD  HL,DE
          JR   PTBL_3

   Скажу сразу - идею я подсмотрел в книге фирмы "Питер" <Как написать игру на
ассемблере>.

2.  Если идея первой процедуры мною заимствованна, то вторая полностью моя.
Она предназначена для поворота спрайта вокруг своей вертикальной оси.
   На входе в HL - адрес начала спрайта.

SP_MIRROR      LD   A,(HL)
MIR_1          INC  HL
               PUSH AF
               INC  HL
               LD   A,9    ; ширина спрайта
               SUB  (HL)
               LD   (HL),A
               LD   B,8
MIR_2          INC  HL
               LD   A,(HL)
               RLA
               RR   D
               RLA
               RR   D
               RLA
               RR   D
               RLA
               RR   D
               RLA
               RR   D
               RLA
               RR   D
               RLA
               RR   D
               RLA
               RR   D
               LD   (HL),D
               DJNZ MIR_2
               POP  AF
               DEC  A
               JR   NZ,MIR_1
               RET



СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



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

Похожие статьи:
Конкурс - конкурс на лучшую музыкальную композицию.
Юмор - Matrix/Брат.
Non Possumus - Об электроудочке.
Coding - Новые 40 процедур: сдвиг атрибутов влево и вправо, вверх и вниз; сдвиг на один символ влево и вправо, вверх и вниз; сдвиг на один пиксел влево и вправо, вверх и вниз; Слияние картинок; Инвертирование экрана; Инвертирование символа вертикально и горизонтально; Вращение символа по часовой стрелке; Изменение атрибута; Смена атрибутов.
Новости с полей СинклерКлуба - я засел за написание микро-гейм-демки под условным названием "The GAME".

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