ZX Review
#11-12
26 ноября 1997 |
|
Этюды - Графический эффект "плазма 2".
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), но потом они были добавлены с целью улучшить внешний вид эффекта и сделать более плавными переходы цветов. * * *
Другие статьи номера:
Похожие статьи:
В этот день... 10 октября