|
ZX Pilot
#38
31 мая 2000 |
|
Coding - пишем необычную бегущую строку.

Привет всем! Надеюсь, я вас не сильно
"забодал" своими умными измышлиниями на
тему running lines и вообще. Если ваш кон-
кретный ответ "Да" - то немедля жмите ENT-
ER и вываливаыте из раздела (ШУТКА) в про-
тивном случае, можете принять пару Валидо-
ла, пару cigarets для успокоения нервов и
пару drinks для поднятия духа. Приступим!
Сложные.
К сложным бегущим строчкам можно причи-
слить такую штуку, как обрамление чего ли-
бо буквенной строкой. Не стоит называть
сложной, строчку из рекламной паузы в Поле
Чудес! Там господа из OUTLAND corp. вотк-
нули 4 роллера для стандартных строчек и
не хитрый пересчет со sliding'ом на углах.
Сложная строчка - это, как провило таблицы
последовательных пиксельных кординат, ко-
торые создаются путем нудного набора по
DEFB. Простейший образец сего действа:
1234567890123456
#480A┌────────────────
1│ .............
2│ ..╔══╗..╔═════
3│ .╔═╝ ║..║
4│ .║╔═══╝..║
5│ .║║.... .║
6│ ║......║
│ ╚══════╝
Позиция #480A - является точкой 0 в си-
стеме отсчета координат, соответственно
первая точка нашей строчки будет (x,y)
[2,5], следующая будет [2,4],и т.д. и т.п.
Теперича по простому пересчету создаем ст-
рочку и видим:
- пересчет сделан по знакоместам - идет
рывками;
- пересчет сделан по пикселам - буквы
наслаиваются.
А теперь как надо было делать...
Берутся пиксельные координаты по вышен-
азванной схеме, для простоты можно взять
через одну точку, и тогда вам надо будет
выводить буквы на каждую четвертую коорди-
нату в четыре этапа.
1) 1..4..7..10<─┐
2) 2..5..8..11 │cycle
3) 3..6..9..12 │
4) 4..7..10..13─┘
Вот и все! На кромках вашей строчки
(чтобы все это дело смотрелось), потребуе-
тся поставить _стандартные_ роллинги. Мож-
но сделать и не через один pix, а каждый
pix - будет чу-у-уть плавнее, но возни мн-
ого больше.
Сделаю перерыв для того, дабы "похими-
чить" с PILOT'ами... ;-)
---
Это место специально отведено, дабы VEL
&Ko могли покритиковать написанное. :о)
---
Сверх-сложные.
Дабы не лишать вас удовольствия разви-
вать данную тему, я затрону только бордюр-
ные строчки. В одной из последних (disk)
Ревюх, было рассказано о том, как запусти-
ть текст на бордюр, но следует заметить,
что там написано немалое количество бреда
сивой кобылы... :-)
Для начала нам потребуется строчка, для
этого с адреса #X000 набиваем первую pix
строчку, #X100 - вторую, etc. на #FF строк
Каждый пиксел имеет ширину в три знакомес-
та и может задаваться от #00 до #07. Так
же следует учитывать, что ширина строки 14
бордюрных пиксел:
START LD C,#FE;Порт
LD H,#X0;Старший полубайт начала
;строки.
LD E,#00;Младший полубайт начала
;строки (сдвиг).
DUP ZZ;Вывод ZZ строчек, зона пов-
;тора.
LD L,E
OUTI
OUTI
OUTI
OUTI
OUTI
OUTI
OUTI
OUTI
OUTI
OUTI
OUTI
OUTI
OUTI
OUTI
INC H
NOP
NOP
EDUP;Конец зоны повтора.
XOR A
OUT (C),#00
LD BC,#7FFE;Space pressed?
IN A,(C)
AND #01
JP NZ,#XXXX;Переход на #XXXX
RET
Думается, что дальнейшие комментарии
излишни, хотя я все же добавлю. Длина стр-
оки может быть гораздо более нежели то,
что видно на экране. Для ее полного прос-
мотра требуется плавно менять содержимое
регистра Е на входе (младший полубайт ад-
реса строки). Переход по адресу #XXXX в
конце строки, осуществляется на вашу про-
гу. Времени остается полно, и за это время
можно запустить на экран здоровенную бегу-
щую строчку, а также эквалайзеры на все
регистры. Естественно, строчку нужно скин-
уть пониже, т.к. в самом верху экрана она
окажется смятой. Сделать это можно LDIR'к-
ой с 0 в 0 адрес на длинне кратной 14 или
28. И еще, сократи количевство подпрог до
минимума, а то будет как вчера. :-)
Alex Merkulow
Sewerodwinsk
Z-Zero SYSTEMS inc.
18/II-00
Другие статьи номера:
Похожие статьи:
В этот день... 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