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

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

<b>Этюды</b> - Графический эффект
   А теперь - следующий  эффект.
По логике  работы  он  похож  на
предыдущий, но  выглядит  совер-
шенно по-другому. Здесь происхо-
дит  не  изменение  атрибутов, а
изменение  штриховки  знакомест.
Именно он используется в  качес-
тве Screen Saver'а в этом номере 
"РЕВЮ" (нажмите CS+S для его вы-
зова, а клавишей C  переключайте
цвета).
140.
;--------------------------;
3; (c) Иван Рощин, 1997     ;
; ЭФФЕКТ "PLASMA-2"        ;
;--------------------------;

BUF     EQU     #8000  ;Адрес буфера

;Установка атрибутов:

        LD      HL,#5800
        LD      (HL),%00101111
        LD      DE,#5801
        LD      BC,#2FF
        LDIR

;Очищаем буферную область
;(#640 байт с адреса BUF):

        LD      HL,BUF
        LD      (HL),0
        LD      DE,BUF+1
        LD      BC,#63F
        LDIR

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

M2      LD      HL,BUF+32
        LD      DE,BUF+#300+32
        LD      BC,32
        LDIR
        LD      HL,BUF+#300
        LD      DE,BUF
        LD      BC,32
        LDIR

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

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

        SRL     A
        DEC     A
        SRL     A

        LD      (IX),A
        CALL    TO_SCR
        INC     IX
        LD      A,XL
        CP   BUF+#320-((BUF+#320)/256*256)
        JP      NZ,M1
        LD      A,XH
        CP      (BUF+#320)/256
        JP      NZ,M1

;Обновили весь буфер:

        XOR     A
        IN      A,(254)
        CPL
        AND     31
        JR      Z,M2
        RET

;--------------------------------------
;Процедура TO_SCR штрихует текущее
;знакоместо.
;
;Вход: A  - значение из буфера,
;           определяющее тип штриховки
;      IX - текущий адрес в буфере

TO_SCR  AND     %00111000
        RRCA
        LD      L,A
        LD      H,0
        LD      DE,TAB-4
        ADD     HL,DE
        LD      B,H
        LD      C,L

;BC - адрес штриховки

        PUSH    IX
        POP     HL
        LD      DE,#320
        ADD     HL,DE

;HL - адрес во вспомогательном буфере,
;     где хранится прошлое значение
;     штриховки для этого знакоместа

        CP      (HL)  ;значения совпали?
        RET     Z     ;если да - выходим

        PUSH    AF
        LD      (HL),A
        LD      DE,-BUF-#340
        ADD     HL,DE

;HL - смещение в основном буфере, узнаем
;     по нему координаты знакоместа:

        LD      A,L
        AND     31
        LD      D,A    ;X
        RL      L
        RL      H
        RL      L
        RL      H
        RL      L
        RL      H
        LD      A,H
        AND     31
        LD      E,A    ;Y

        AND     #18
        OR      #40
        LD      H,A
        LD      A,E
        AND     #7
        RRA
        RRA
        RRA
        RRA
        ADD     A,D
        LD      L,A

;HL - адрес на экране

        POP     AF       ;если A=0,
        AND     A        ;просто очищаем
        JP      Z,TO_CL  ;знакоместо

        LD      D,H
        LD      E,L
        INC     D
        INC     D
        INC     D
        INC     D

;HL указывает на верхнюю линию знакоместа,
;а DE - на четыре линии ниже

        LD      A,(BC)
        LD      (HL),A
        LD      (DE),A
        INC     H
        INC     D
        INC     BC
        LD      A,(BC)
        LD      (HL),A
        LD      (DE),A
        INC     H
        INC     D
        INC     BC
        LD      A,(BC)
        LD      (HL),A
        LD      (DE),A
        INC     H
        INC     D
        INC     BC
        LD      A,(BC)
        LD      (HL),A
        LD      (DE),A
        RET

;Если нужно просто очистить знакоместо:

TO_CL   LD      (HL),A
        INC     H
        LD      (HL),A
        INC     H
        LD      (HL),A
        INC     H
        LD      (HL),A
        INC     H
        LD      (HL),A
        INC     H
        LD      (HL),A
        INC     H
        LD      (HL),A
        INC     H
        LD      (HL),A
        RET

;Таблица, определяющая различные типы
;штриховок:

TAB     DB  %01000100
        DB  %00000000
        DB  %00010001
        DB  %00000000

        DB  %01000100
        DB  %00010001
        DB  %01000100
        DB  %00010001

        DB  %01010101
        DB  %10101010
        DB  %01010101
        DB  %10101010

        DB  %11011101
        DB  %10101010
        DB  %01110111
        DB  %10101010

        DB  %01010101
        DB  %10101010
        DB  %01010101
        DB  %10101010

        DB  %01000100
        DB  %00010001
        DB  %01000100
        DB  %00010001

        DB  %01000100
        DB  %00000000
        DB  %00010001
        DB  %00000000



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

Авторская разработка - С.Зонов, А.Ларченко. О контроллере 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 года.

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


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

Похожие статьи:
Законы Мерфи - если какая-нибудь неприятность может случиться, она случается.
Лучшее - игры и газеты.
scene intro - сценовое вступление.
Не надо Ля-ля! - весьма прикольные стишки.
Scene news - WEB-страничка IS-DOS, BestView FAQ, ZXEmul 0.33.

В этот день...   20 апреля