ZX Review #11-12
26 ноября 1997

Этюды - Графический эффект "плазма 2".

<b>Этюды</b> - Графический эффект
2


   Ну и, наконец, последний  эф-
фект (использовался  как  Screen
Saver в ZX-РЕВЮ 7-10 и  ZX-FORUM
4):
140.
;--------------------------;
3; (c) Иван Рощин, 1997     ;
; ЭФФЕКТ "PLASMA-3"        ;
;--------------------------;

BUF     EQU #4000    ;адрес расположения
                     ;буфера длиной #410
                     ;байтов (мл.байт
                     ;адреса = 0!)
B_SCR   EQU BUF+#20  ;адрес первой
                     ;обновляемой строки
                     ;в буфере
B_UP    EQU BUF      ;верхняя строка
B_DOWN  EQU BUF+#320 ;нижняя строка

SSAVER  LD      HL,(RND+1)
NEW_RND LD      A,(HL)
        INC     HL
        AND     7
        CP      6
        JR      NC,NEW_RND

        AND     A
        RLCA
        RLCA
        LD      HL,TABL1
        LD      D,0
        LD      E,A
        ADD     HL,DE
        LD      DE,BUF+#400
        LD      BC,4
        LDIR

        LD      HL,TABL2
        LD      BC,12
        LDIR

;В H' заносим старший байт адреса
;палитры:

        LD      H,D
        EXX

;Переносим содержимое верхней строки
;буферной области вниз и наоборот,
;т.е. экран как бы замкнут по вертикали:

M2      LD      HL,B_SCR
        LD      DE,B_DOWN
        LD      BC,32
        LDIR

        LD      HL,B_SCR+#2E0
        LD      DE,B_UP
        LD      BC,32
        LDIR

;В цикле обновляем атрибуты в буфере:

        LD      IX,B_SCR
M1      LD      A,(IX-32)
        ADD     A,(IX-1)
        ADD     A,(IX+1)
        ADD     A,(IX+32)
        SRL     A
        SRL     A
        LD      (IX),A

;--------------------------------------
;По значению байта из буфера определяем
;его цвет и выводим на экран:

        EXX
        RRCA
        RRCA
        AND     15
        LD      L,A
        LD      A,(HL)
        EXX

        PUSH    IX
        POP     HL
        LD      DE,#5800-B_SCR
        ADD     HL,DE
        EX      AF,AF'      ;!
        LD      A,(IX-1)    ;!
        CP      (IX)        ;!
        JR      C,TO_SCR1   ;!
        CP      16          ;!
        JR      C,TO_SCR1   ;!
        DEC     HL          ;!
        LD      A,(HL)      ;!
        INC     HL          ;!
        LD      (HL),A      ;!
        JR      NO_CP       ;!

TO_SCR1 EX      AF,AF'      ;!
        LD      (HL),A
;--------------------------------------

NO_CP   INC     IX
        LD      DE,1-#5800+B_SCR-B_DOWN
        ADD     HL,DE
        LD      A,H
        OR      L
        JR      NZ,M1

;Обновили весь буфер, теперь некоторые
;байты буфера принимают случайные
;значения:

        LD      B,5
L23     PUSH    BC
        CALL    RND
        POP     BC
        DJNZ    L23

;На клавиатуре что-то нажато?

        LD      A,(23560)
        AND     A
        JR      Z,M2
        RET

;=================================
;Процедура RND изменяет случайным
;образом случ. выбранное число в
;буфере экрана (BUF..BUF+#400)

RND     LD      HL,0
        LD      A,H
        AND     #3F
        LD      H,A
        LD      D,(HL)
        INC     HL
        LD      E,(HL)
        INC     HL
        LD      A,(HL)
        XOR     D
        XOR     E
        SUB     16
        LD      B,A
        LD      A,D
        AND     3
        LD      D,A
        LD      E,B
        LD      (RND+1),HL
        LD      HL,BUF
        ADD     HL,DE
        LD      A,B
        AND     %01111111
        LD      (HL),A
        DEC     HL
        LD      (HL),A
        DEC     HL
        LD      (HL),A
        RET

;Палитра:

TABL1   DB      %00001001
        DB      %01001001
        DB      %00011011
        DB      %01011011

        DB      %00001001
        DB      %01001001
        DB      %00101101
        DB      %01101101

        DB      %00010010
        DB      %01010010
        DB      %00011011
        DB      %01011011

        DB      %00010010
        DB      %01010010
        DB      %00110110
        DB      %01110110

        DB      %00100100
        DB      %01100100
        DB      %00101101
        DB      %01101101

        DB      %00100100
        DB      %01100100
        DB      %00110110
        DB      %01110110

TABL2   DB      %00111111
        DB      %01111111
        DB      %01111111
        DB      %01111111
        DB      %01111111
        DB      %01111111
        DB      %01111111
        DB      %01111111
        DB      %01111111
        DB      %01111111
        DB      %01111111
        DB      %01111111
2
   Строки, помеченные  "!", пер-
воначально отсутствовали в  этой
программе (в таком виде она  ис-
пользовалась в ZX-РЕВЮ 7-10), но
потом они были добавлены с целью
улучшить внешний вид  эффекта  и
сделать более плавными  переходы
цветов.

           *   *   *




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

Авторская разработка - С.Зонов, А.Ларченко. О контроллере SMUC (HDD и IBM периферия).

Компьютерная новелла - Воины Звезд (по игре Shadowfire).

Новые программы - Обзор Digital Studio v1.12, Digital Studio Compiler v1.01

Новые программы - Обзор Xas редактор-ассемблер 128К (v5.05).

Новые программы - Обзор Музыкального редактора Instrument v3.01

Новые программы - Обзор программ FASTzasm и @-zasm.

Новые программы - Обзор программы No Kempston.

Профессиональный подход - Алгоритмы построения и прохождения Лабиринтов.

Смех без причины... - Материалы из юмористического журнала SpectrofUn.

Советы экспертов - Игра FEUD.

Советы экспертов - Игра Killed Until Dead.

Советы экспертов - Игра War in Middle Earth.

Форум - Конверсия цветной спектрумовской картинки на IBM. Конверсия ч/б картинки с IBM на ZX Spectrum.

Форум - О русификации игровых программ.

Форум - Программа детекта эмулятора.

Форум - Процедура "цветные полосы на бордюре". Снижение шума FDD.

Форум - Процедура перевода числа в десятичный вид. Процедура - сканер пароля.

Форум - Снятие защиты Microprotector'а.

Форум - Эмуляторы, которые мы выбираем: 'UKV Spectrum Debugger', 'Z80TRDOS'.

Читатель-читателю - Драйвер ввода в режимах последовательного и прямого доступа из файлов системы TR-DOS.

Этюды - Графический эффект "плазма 2".

Этюды - Графический эффект "плазма 2".

Этюды - Графический эффект "плазма".

Этюды - Полезные советы. Быстрая переброска экрана.

Этюды - Ремейк процедур 93 года.

Этюды - Эффект "пламя".


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

Похожие статьи:
Анкета - Предлагаемое анкетирование ставит перед собой цель выявить всех тех спектрумистов которые еще остались верными своему любимому доброму спекки.
Кодерам - Скроллер на бордюре.
Интервью - интервью с участниками ENLiGHT'97: MMA, ALK.
Почта - Интересная статья - о заковыристом втором коде в "Звездном наследии".
Шина I2C - Расскажу я вам сегодня о шине, применяемой в "ихних" телевизорах.

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