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



СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Рубрика X - о новинках: операция P.Р., The Puzzle, Maga Pic v1.01, Boovie, Towdie.
Ликбез - Характеристика p-n переходов при слабом токе.
Железо - Multiviewer. Описание доработочки, позволяющей мерять скорость программ по бордюру без влезания в коды - легким нажатием кнопки.
Платформенные галлюцинации - события, факты, анонсы: портирование Звездного Наследия на Gameboy, а Raver готовит английский перевод игры, готовится новый номер Deja VU и Adventurer, Kristof поругался с Himik'ом, судья Черного Ворона под General Sound и т.д.
Юмор - Почему пиво лучше, чем женщины.

В этот день...   29 марта