Speccy #02
31 октября 1995

Программирование - Универсальная программа ввода/вывода спрайтов.

<b>Программирование</b> - Универсальная программа ввода/вывода спрайтов.
╒══════════════════════════════╕
│░░░░░░ ПРОГРАММИРОВАНИЕ ░░░░░░│
╘══════════════════════════════╛

Предлагаем вашему вниманию прог-
рамму присланную нам Котовым А.В
из города Рыбинска.

 Котов А.В.
───────────

 Универсальная      подпрограмма
      ввода/вывода спрайта

 Данная   прцедура   работает  с
файлами     формата    редактора
спрайтов  "SPRITE EDITOR 2". Для
тех у  кого его нет сообщаю, что
формат файла у данного редактора
таков:

 Если    файл    создавался    с
выключенными   опциями   Mask  и
Color,   т.е.   содержит  только
информацию о графике, то вначале
идут  8 строк первого знакоместа
спрайта  потом  8  второго и так
далее.

 
 Данные в  подпрограмку  переда-
ются  через  IX регистр, в  него
записывается адрес таблицы пара-
метров.

  Формат таблицы:

 IX  + 0 X - координата X вывода
на  экран  (в  знакоместах )
     + 1 Y - координата Y вывода
на экран (в   знакоместах  )
     + 2 Xраз-   размер  спрайта
по горизонтали в знакоместах
     + 3 Yраз- размер спрайта по
вертикали в знакоместах
     + 4  n  -  номер спрайта  к
выводу   (меньше действительного
на 1) для таблиц спрайтов.
     + 5  \
     + 6  /  размер  спрайта   в
             байтах.


* SPBUF  DEFW 0 ; здесь  адрес
        ;начала таблицы спрайтов

sprite DI
       LD   B,(IX+4)   ;получили
                  ;номер спрайта
       LD   A,B
       CP   #0
       JR   Z,sl2   ;точка входа
                ;для первого или
                  ;единственного
                       ; спрайта
       LD   E,(IX+5)
       LD   D,(IX+6)   ;загрузка
                        ;размера
                        ;спрайта
       LD   HL,(spbuf)    ;адрес
                    ;спрайта или
                       ; таблица
                       ;спрайтов
 sl1   ADD  HL,DE
       DJNZ sl1
 sl2   LD  B,(IX+3) ;размер по Y
       LD   D,(IX+0)
       LD   E,(IX+1) ;координаты
                         ;вывода
                        ;спрайта
       PUSH HL
       CALL GET_ADR_S
       POP  DE
 sl3   PUSH BC
       LD   B,8 ;начало цикла по
                     ;знакоместу
 sl4   PUSH BC
       PUSH HL
       CALL Outspr   ;прорисовка
                   ;одной строки
                        ;спрайта
       POP  HL
       INC  H
       POP  BC
       DJNZ sl4
       DEC  H      ;коррекция HL
       CALL next_b   ;переход на
                      ;следующую
                     ;символьную
                         ;строку
                    ;и коррекция
                   ;при переходе
                  ;через границу
                   ;трети экрана

       POP  BC
       DJNZ sl3
       EI
       RET


;данная  процедура позволяет как
;вывести спрайт  на  экран так и
;взять   его    с   экрана.Вывод
;возможен прямой  по XOR, OR,AND
;нужно только  заменить  команду
;NOP на ту, которую вам нужно.

  Outspr:
       LD   B,(IX+2)     ;длинна
                         ;строки
outsp1 LD   A,(DE)
       NOP
       LD   (HL),A
       INC  DE
       INC  HL
       DJNZ outsp1
       RET
next_b INC  H
       LD   A,H
       AND  #7
       RET  NZ
       LD   A,1
       ADD  A,#30
       LD   1,A
       RET  C
       LD   A,H
       SUB  8
       LD   H,A
       RET
* Set_Adr_S   ;данная процедура
         ;находит экранный адрес
                 ;по знакоместам
        ; /координаты в DE,адрес
        ;возвращается в HL (взя-
        ;то из книги "Приклодная
            ;графика" Инфорком)/
       LD   A,E
       AND  #18
       OR   #40
       LD   H,A
       LD   A,E
       AND  #07
       OR   A
       RRA
       RRA
       RRA
       RRA
       ADD  A,D
       LD   L,A
       RET
 

 Соломонов Антон  из  Челябинска
задает вопрос, связанный  с  ис-
пользованием принтера.

У меня компьютер "Sсorpion 256"
Version 2.4d. При  подключении к
нему через интерфейс  Centroniсs
принтера  "Seikosha", при подаче
команды на печать LPRINT  с  уп-
равляющими кодами CHR$ 15 в тек-
стовом режиме выдает  совершенно
не то, что нужно...
 В графическом режиме при сбросе
картинки  с  экрана  на  принтер
вместо картины, также печатаются
буквы...

 Для  ответа  на  такие  вопросы
необходимо обладать  полной  ин-
формацией. Как известно, для то-
го чтобы принтер работал, требу-
ется выполнить два условия:
1. Правильно сделать подключение
   (аппаратная часть).
2.Установить программу поддержки
  принтера (программная часть).

 В фирменном ZX-Spectrum'e в ПЗУ
находится программа, которая ра-
ботает только с принтером специ-
ально созданным для этого компь-
ютера. Если к компьютеру подклю-
чен какой-либо другой принтер,то
для его работы  требуется  прог-
рамма  (драйвер)  поддерживающая
данный тип принтера. К сожалению
большинство   программ  содержат
драйвера   Epson  -  совместимых
принтеров.
 
 Для того, чтобы ваш принтер за-
работал  необходимо  приобрести,
либо  написать   драйвер   этого
принтера, а также установить его
в графические и текстовые редак-
торы.
 Пиобрести такую программу можно
на радиорынке. Если таковой  там
не окажется, то обратитесь в НПО
"УРАЛАВТ" (см.рекламу).
 Просьба к читателям журнала:
В связи с тем, что  очень  много
пользователей обращаются с  воп-
росами,  связанными  с  ремонтом
компьютеров, подключением каких-
- либо  внешних устройств, напи-
санием  программ  поддетжки,  то
пусть тот, кто  может  и  желает
сделать такие виды  работ,  даст
рекламу в нашем журнале. 

         *     *     *



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

Авторская программа - Презентация системных программ : Bestseller from Stars, Visual layer Demo.

Игроскоп - Вопросы по прохождению игр : Hobbit, Last Raider , Звездное наследие. Описание игр : Crystal Kingdom Dizzy 7 и Robocop 2.

Комиксы, мультролики - Компьютерный комикс "Чудо шляпа" с участием утенка Дональда.

Музобоз - Описание двух конкурсных работ : Axis of Evil, Faces-I.

Новелла - Фантастическая новелла по мотивам игры "Laser Sqadron" из серии "Лазерная эскадрилья галактики".

От редакции - О журнале "SPECCY".

Программирование - Универсальная программа ввода/вывода спрайтов.

Реклама - Реклама и объявления.

Тусовка - Высказывания поклонников ZX-Spectrum.


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

Похожие статьи:
Фантазия - компьютерная новелла по игре "Captain Blood".
Аэробика - хронология российского спектрума: 1995-2002 года (версия от Himik's ZxZ/PoS-WT).
Наставления - Когда берешь чужую грудь, Не забывай ее вернуть...
Фантастика - Фантастическая повесть "Лед и пламя" (продолжение).
Открытые письма Nemo №8.3

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