Amiga News #01
31 августа 1997

   Я рад, что вы решили заглянуть в
этот раздел. Я конечно не RST 7 или
IMP, но думаю эта статья будет
полезна...
  В этом номере расскажу о таком про-
стом эффекте, как сжатие спрайта или
его растягивании (например, как это
вы могли наблюдать в  INTRO  нашего
журнала). Похожий эффект вы могли
наблюдать в intro ZX-FORMAT'а.
    Не знаю, как сделали XL-DESIGN, в
их профессионализме никто не сомне-
вается, а как хаккер я никуда не год-
ный,( ну облом мене лезть разбирать
чей-то код) я решил подумать над этим
сам. И знаете, не так уж это сложно !
   Взял, да написал нечто, для пробы.
-------------------------------------
        ld hl,30000 ; адрес спрайта
        ld de,#4000 ; адрес в экране
        ld b,80  ; высота спрайта
        xor a    ; так надо !!
vio     add a,64 ; коэф.уменьш./увел.
                 ; выс=(нач.выс)*коэф
                 ; коэф=n/256
                 ; n=64
*       jp c,cont; на вывод тек.лин.
        push de
        ld de,16 ; ширина  спрайта
*       add hl,de; пропустить линию
                 ; спрайта,
                 ; так как уменьш.
        pop de   ; т.е. ф.С=0
*       djnz vio ; т.е С=0,А=nn
                 ; 0,nn
*       ret
cont    push de: ld c,h
        ldi:ldi:ldi:ldi  ; переброс
        ldi:ldi:ldi:ldi  ; линии
        ldi:ldi:ldi:ldi  ; спрайта
        ldi:ldi:ldi:ldi  ; из буфера

        pop de
        ex af,af'   ; сохр. счетчик
        call scline ; след.лин.в экр.
        ex af,af'   ; восст. счетчика
        djnz vio    ; продолж. вывод
        ret      ; УРА!! вываливаемся

scline  inc d: ld a,d: and 7
        ret nz
        ld a,e: add a,32: ld e,a
        ret c
        ld a,d: sub 8: ld d,a
        ret

-------------------------------------
  Эта процедура выведет ваш спрайт
уменьшенный в соответствии с подо-
браным кооэфициентом.
  Конечно, можно заставить работать
ее на увеличение, надо только заме-
нить строки помеченные (*),
соответственно:
       jp c,cont->jp nc,cont
       add hl,de->sbc hl,de
       djnz vio ->убрать
            ret ->убрать
-------------------------------------
  Может, я поставил непонятные ком-
ментарии, тогда я обьясню очень
просто всю ее работу:
  эта процедура является обычной, я
бы сказал простейшей, выводилкой
спрайта. Только в ней добавлен один
нюанс: строки выводятся только тогда,
когда регистр А переполнен и соответ-
ственно флаг С=1, т.е. установлен.
Выходит что строки НЕ ВЫВОДЯТСЯ в
определенной последовательности.
Или наоборот дублируются по той же
закономерности. Закономерность эта
задается в самом начале, в регистре А
Дальше, на протяжении всей программы,
он складывается сам с собой.
   Получается интересная и нужная
штука. Это чем-то напоминает работу
с дробными числами. А этот прикол
можно очень лихо применять.
  На этом принципе реализован цело-
численный алгоритм  Брезенхейма для
быстрого рисования линии от точки
до точки, рисование окружности.
   Не думаю, что эта процедура при-
годна для использования в ваших про-
гах, можно написать процедуру быстрее
и универсальней. Важен сам принцип,
как она работает. А дальше можно его
использовать при решении других
задач, нужна только фантазия.

   Профессиональный секрет:
Чтобы лучше фантазировалось, советую
иметь при себе пару бутылочек пива
-PRESIDENT- CHERNIGOV 17% .

-------------------------------------
Для первой статьи, думаю, достаточно.
-------------------------------------

В следующем номере я или BER расска-
жем чего-нибудь поинтересней и по-
современней. Чо-нибудь расскажет BER
о загрузке с бешеной скоростью или
с музыкой, я рассажу о крутом приме-
нении SINUS'а, что-нибудь об алгорит-
мах Брезенхейма, всяких выкрутасах с
графикой и т.д.
  Я думаю, что эта рубрика будет
полезна всем: и ламерам, и начинающим
кодерам.
_____________________________________
                             VIOLATOR



Other articles:


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

Similar articles:
News - new acquisitions of magazines and games for the ZX Spectrum: Deja Vu 7, ZX Format 8, Black Raven, Stalker, Mirror, Monster Land.
Network News - File-ekhi.

В этот день...   21 November