|
ZX Element
#02
06 июня 1998 |
|
Прогаммистам - переброска SCR за INT.

Технология вывода полноэкранного изображения без атрибутов за прерывание (С) Mythos Несколько лет назад перед кодерами Спе- ктрума встала проблема вывода полноэкран- ного изображения за int. О ее решении я ничего не слышал, и сейчас попробую прове- сти краткий анализ нескольких методов и рассказать о сабже :) Начну я с известных всем методов LDIR, LDI. Команда LDIR кидает байт за 21 такт Кинуть весь экран успеем только за 21*6911+16=145147, да немножко не успеваем Командами LDI кидаем байт за 16 тактов Экран кинуть сможем за 16*6912=110592 т без атрибутов 16*6144=98304 т, тормозим и тут, да и память жалко. Далее есть способ, так называемый "вы- вода через стек". Способ быстрый, но не самый лучший. Максимальный эффект при ис- пользовании кроме основных регистров и альтернативные. Стеком кинем байт за 13.5 тактов Экран кидаем за 13.5*6912=93312 т без атрибутов 13.5*6144=82944 т Неуспеваем и здесь. Если копнуть еще глубже то можно найти еще несколько оригинальных способов, о ко- торых я тольком не знаю, к сожалению. А сейчас самый, на мой взгляд, эффекти- вный способ. Сразу скажу, что байт кидаем за 10.5 тактов Экран соответственно за 10.5*6912=72576 т По моему даже Пентагон, не успеет без атрибутов 10.5*6144=64512 т А здесь успевает наверное любой компьютер. Суть метода в том, что ваша картинка будет распределена в программе. Пишем код: LD SP,#5В00 LD HL,#223A;ВАША ГРАФИКА, АТРИБУТЫ PUSH HL LD HL,#3AB3;ЕЩЕ ГРАФИКА PUSH HL ... Ну и таких строчек надо не мало. В ито- ге ваш экран будет занимать, ровно в два раза больше памяти. В чем еще прелесть данного метода: если вы заметили, вы можете выводить картинку храня ее одновремменно в жатом состоянии. Объясняю: если в картинке идут подряд бай- ты, скажем, #аЬOЗ,#аЬOЗ... можно будет на- писать в программе: LD HL,#AB03 PUSH HL PUSH HL ... При этом скорость вывода изображения повышается! Если хочется выводить спрайты в такой экран, то если подумать можно запросто на- писать процедуру вывода спрайта или может даже точки или линии. Но в этом случае не должно быть компресии. Ну вот вроде и все о чем я хотел пове- дать. Признаться, я даже и не думал писать об етом, думая что уже все известно, но когда я начинал рассказывать, на меня смо- трели с большими глазами и говорили что это круто. ------------------------------------------
Другие статьи номера:
Похожие статьи:
В этот день... 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