ZX Forum
#04
19 ноября 1997 |
|
Экранные эффекты - плавное "затухание" экрана из Сommando Tracer.
Рассмотрим теперь еще одну интересную процедуру, позаим- ствованную из программы COMANDO TRACER. Она похожа на плавное "затухание" экрана из программы "ZYNAPS", но только предназна- чена не для всего экрана, а для заданного прямоугольного окна экрана. Листинг процедуры: 1420. DB5B 210509 LD HL,#0905 DB5E CD92DB CALL #DB92 DB61 CDA4DB CALL #DBA4 DB64 3E08 LD A,#08 DB66 08 EX AF,AF' DB67 E5 PUSH HL DB68 0604 LD B,#04 DB6A CDAEDB CALL #DBAE DB6D 0E06 LD C,#06 DB6F 0616 LD B,#16 DB71 7E LD A,(HL) DB72 E607 AND #07 DB74 CA78DB JP Z,#DB78 DB77 3D DEC A DB78 77 LD (HL),A DB79 2C INC L DB7A 10F5 DJNZ #DB71 DB7C 7D LD A,L DB7D C60A ADD A,#0A DB7F 6F LD L,A DB80 D284DB JP NC,#DB84 DB83 24 INC H DB84 0D DEC C DB85 C26FDB JP NZ,#DB6F DB88 E1 POP HL DB89 08 EX AF,AF' DB8A 3D DEC A DB8B F266DB JP P,#DB66 DB8E C9 RET ------------------------------ DB92 C5 PUSH BC DB93 7C LD A,H DB94 47 LD B,A DB95 E618 AND #18 DB97 F640 OR #40 DB99 67 LD H,A DB9A 78 LD A,B DB9B 0F RRCA DB9C 0F RRCA DB9D 0F RRCA DB9E E6E0 AND #E0 DBA0 B5 OR L DBA1 6F LD L,A DBA2 C1 POP BC DBA3 C9 RET ------------------------------ DBA4 7C LD A,H DBA5 0F RRCA DBA6 0F RRCA DBA7 0F RRCA DBA8 E603 AND #03 DBAA C658 ADD A,#58 DBAC 67 LD H,A DBAD C9 RET ------------------------------ DBAE 76 HALT DBAF 10FD DJNZ #DBAE DBB1 C9 RET 2 Процедура выполняет в задан- ном прямоугольном окне плавное выключение цвета INK от белого до черного, при этом PAPER будет черным. Перед запуском процедуры дол- жны быть заданы следующие исход- ные данные. В команде по адресу DB5BH в регистре HL должны быть заданы координаты в знакоместах левого верхнего угла очищаемого окна, а именно, в H - строка; в L - колонка. В команде по адре- су DB6DH в регистре C задается высота окна в строках. В коман- де по адресу DB6FH в регистре B задается ширина окна в знакомес- тах. Кроме этого, в команде по адресу DB7DH в качестве числово- го параметра должно быть задано число, равное 32 минус ширина окна в знакоместах. То есть для нашего примера, при ширине окна 22 знакоместа (в регистре B бы- ло задано 16H), числовой пара- метр в команде по адресу DB7DH должен быть равен 10 (0A). Постоянная времени процедуры очистки окна может регулировать- ся в широких пределах при помо- щи изменения числового парамет- ра в команде по адресу DB68H. Здесь в регистр В заносится па- раметр цикла задержки (подпрог- рамма DBAEH). Для получения блока кодов "затухания окна" можно восполь- зоваться Бейсик-программой: 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 56154,"tr3",56155,87 100 DATA 033,005,009,205,146,219,205,164, 219,062,008,008,229,006,004,205, 174,219,014,006,006,022,126,230, 007,202,120,219,061,119,044,016 110 DATA 245,125,198,010,111,210,132,219, 036,013,194,111,219,225,008,061, 242,102,219,201,000,000,000,197, 124,071,230,024,246,064,103,120 120 DATA 015,015,015,230,224,181,111,193, 201,124,015,015,015,230,003,198, 088,103,201,118,016,253,201 Ниже приведена Бейсик-прог- рамма, демонстрирующая "затуха- ние окна". Здесь в строке 30 на экран может быть загружена лю- бая картинка-заставка. 10 BORDER 0: PAPER 0: INK 7: C LEAR 56154 20 LOAD "tr3"CODE 30 LOAD "tracer $"CODE 16384 40 BEEP .1,26: BEEP .1,20: PAU SE 0 50 RANDOMIZE USR 56155 На этом заканчиваем разборку программы COMANDO TRACER.
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября