|
ZX Format
#06
29 июля 1997 |
|
Программистам - обмен опытом: программирование мультиколорных эффектов.

Изготовление мультиколоров music by DNK (C) MIK. VIRT GROUP. _______________________________ Эта статья является прямым логическим продолжением предыдущей, посвящённой бор- дюрным эффектам. Поэтому для наилучшего понимания нижеизложеного, советую вам прочитать предыдущую статью. Часть первая и единственная. Мультиколор можно определить, как такое представление графической информации, при котором с помощью программных средств достигается получение в одном знакоместе более, чем двух цветов. Примечание : Обратите внимание на то, что получение более чем двух цветов в пределах байта, принадлежащего знакоместу, невозможмо посредством нижеизложенной технологии. Теперь пора перейти к описанию техничес- кой стороны мультиколора. Как я уже отме- чал, принципы работы бордюрных эффектов и мультиколора схожи. Самым проблематичным представляется фиксация их по времени. Само существование мультиколора основано на том, что при построении каждой линии основного экрана ULA ( группа микросхем ответственных за вывод графики ) заново читает информацию из области атрибутов и если после построения фрагмента экрана, до начала построения следующей строки, подменить данные описывающие эти строки, то следующая строка будет построена в со- ответствии с новыми данными об атрибутах. Итак, для того, чтобы получить мультико- лор, вам необходимо произвести следующие действия : 1. Дождаться сигнала INT. 2. Выдержать паузу до момента начала построения интересующей нас области (На самом деле меньшую на время, которое вам необходимо для передачи нужной информации в область атрибутов). , 3. Подождать пока заменяемые вами атри- буты будут построены. 4. Кинуть на их место новые данные. 5. Если необходимо, выдержать паузу = время построения одной строки - время потраченое на пункты 3 и 4. 6. Бодро перейти к пункту 3. 7. Сделать что-нибудь полезное. По традиции не буду забивать вам голову пустой писаниной, а сразу перейду к при- меру. Устроим мультиколор в нулевой строке,0-5 знакоместа. ORG #8000 DI LD HL, #BE00 LD DE, #BE01 LD BC, 256 LD A, H LD (HL), #BF LDIR LD I, A LD A, #C9 ;Обработчик LD (#BFBF), A ;прерывания IM 2 ;команда RET MAIN EI HALT DI LD A, 63 ; ! LOOP1 DS 52, 0 ; ! DEC A JR NZ, LOOP1 ;Цикл ожидания построения ;бордюра, время зависит ;от типа компьютера LD HL, DATA LD A, 8 LOOP2 LD DE, #5800 LDI ;16 LDI ;16 LDI ;16 LDI ;16 LDI ;16 LDI ;16 ;переброска атрибутов LD DE, 0 ;Не значимая команда, ;необходима, что-бы потратить ;время DS 23, 0 ; ! ;Ожидании до 224 тактов (за ;столько большинство комперов ;строят строку. DEC A JR NZ, LOOP2 LD A, #7F IN A, #FE RRA JP C, MAIN IM 1 RET DATA DB...... ;Данные об атрибутах. Все временные задержки в этом примере сделаны под Scorpion. Если вы располагае- те другим типом компьютера, вам надо са- мим подобрать числа в строках, отмече- ных (!) . Фактически это все, что можно сказать по данному вопросу и я надеюсь, что вы суме- ете применить полученные знания. _______________________________
Другие статьи номера:
Похожие статьи:
В этот день... 1 января
SibNews #08,
Woot! #01,
Spectrum Magazine #01,
ACNews #25,
Psychoz #14,
ACNews #14,
Last 128 #08,
Last 128 #06,
Last 128 #05,
Last 128 #04,
Last 128 #03,
Last 128 #02,
Last 128 #09,
Last 128 #3.5,
Last 128 #8.025,
Sinclair Club #05,
Last 128 #M!R 01,
Fantadrom #01,
Buzz #20,
Last 128 #01,
DonNews #13,
Nicron #120,
Promised Land #01,
Inferno #01,
Marazm #25,
Ultimathum #01,
Marazm #21,
Hooy Mag #02,
KrNews #11,
Marazm #22,
Marazm #23,
ZX Football 2000 #01,
Codemania #01,
Always #03,
Bugs #02,
IzhNews #08,
Virtual Worlds #01,
Listok #04,
Scenergy #02,
Flash Info #18,
Marazm #16,
Marazm #17,
Zed #01,
Balagan #02,
ZX Format #08,
ZX Power #03,
Shock #01,
Impulse #02,
Deja Vu #03,
ZX Club #08,
ZX Club #06,
Numberology #01,
Marazm #13,
Marazm #12,
Marazm #14,
Gorodok #02,
Zodiac #01,
Marazm #15,
Deja Vu #07,
Marazm #11,
Deja Vu #07,
Playboy #03,
Crazy News #2,
Crazy News #4,
ZX Light #01,
Crazy News #5,
Playboy #02,
ZX News #03,
ZX Review #1-2,
Read Me #02,
Crazy News #3,
Nicron #13,
Read Me #01,
Public Spirit #01,
Faultless #06,
Faultless #05,
ZX Software #01,
Stump #04,
Speccy #07,
Возраждение #0,
Speccy #03,
On-Line #17,
Scene+ #01,
Welcome Press #01,
ZX Konig #04,
Adventurer #01,
Faultless #05,
Faultless #04,
Di Halt #01,
Faultless #01,
Playboy #01,
Crazy News #1,
Faultless #03,
Pioneer #03,
Sinclair Town #02,
ZX Magazine #01,
Eldorado #01,
ZX Magazine #02,
Spectron #01,
ZX News #01,
ZX Konig #02,
200 #W,
Welcome Press #00,
Dune #07,
Subliminal Extacy #01,
Subliminal Extacy #02,
ZX Konig #01,
Subliminal Extacy #00,
Muchomor #01,
Spectrofon #01,
ZX Revija #02,
Outlet #01,
Outlet #1-3