ZX Forum
#04
19 ноября 1997 |
|
Экранные эффекты - гашения экрана из Zynaps.
ZYNAPS В этой программе применяется оригинальный прием гашения экра- на: он гаснет не мгновенно, а плавно. Это происходит при помо- щи манипулирования атрибутами. Процедура, реализующая такой эффект, выглядит так. 1423. 85AD 1E04 LD E,#04 85AF 0E07 LD C,#07 85B1 FB EI 85B2 0603 LD B,#03 85B4 210058 LD HL,#5800 85B7 76 HALT 85B8 76 HALT 85B9 76 HALT 85BA 76 HALT 85BB 7E LD A,(HL) 85BC A1 AND C 85BD 77 LD (HL),A 85BE 2C INC L 85BF 20FA JR NZ,#85BB 1423. 85C1 24 INC H 85C2 10F7 DJNZ #85BB 85C4 CB39 SRL C 85C6 1D DEC E 85C7 20E9 JR NZ,#85B2 85C9 C9 RET 2 Алгоритм работы процедуры следующий. Побитно выключаются, начиная со старшего и кончая младшим, все биты области атри- бутов. Вы можете замедленно про- смотреть, как все это происхо- дит, если сделаете такую замену: 1423. 85BF 20F9 JR NZ,#85BA 2 то есть включите одну последнюю команду HALT во внутренний цикл. Вы увидите, что вначале построч- но гаснут знакоместа, изображен- ные с повышенной яркостью, за- тем пропадает зеленый цвет, за- тем - красный, затем - оставший- ся синий. При этом надо учиты- вать, что само изображение - дисплейный файл - не затраги- вается, изображение остается, только становится INK 0: PAPER 0: BRIGHT 0. Вы можете убедиться в этом, если подадите, скажем, такую команду: PRINT AT 0,0;OVER 1;"32 пробела" Несколько замедлить скорость затухания можно такой заменой: 1423. 85C2 10F6 DJNZ #85BA 2 Для получения блока кодов плавного затухания можно вос- пользоваться Бейсик-программой: 1 READ ram: CLEAR ram: READ f $: READ st: READ len: FOR a=st T O st+len-1: READ b: POKE a,b: NE XT a: SAVE f$CODE st,len 10 DATA 34220,"zyn",34221,29 100 DATA 030,004,014,007,251,006,003,033, 000,088,118,118,118,118,126,161, 119,044,032,250,036,016,247,203, 057,029,032,233,201 Следующая программа демон- стрирует плавное затухание экра- на. Здесь в строке 30 происхо- дит загрузка экрана из програм- мы ZYNAPS (но это может быть лю- бая другая картинка). 10 BORDER 0: PAPER 0: INK 7: C LEAR 24999 20 LOAD "zyn"CODE 30 LOAD "zynaps $"CODE 16384 40 BEEP .1,26: BEEP .1,20: PAU SE 0 50 RANDOMIZE USR 34221
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября