|
ZX Club
#08
31 мая 1998 |
|
Soft Group - chunky to planar conversion конвертор.

(C) Saruman / Dementia corp. C2P конвертор Привет, народ! С вами снова я,Saruman. Как мне помнится, в прошлый раз я расска- зывал о методах быстрого вывода графики через стек; а сегодня у нас еще один мощ- ный метод: chunky to planar conversion. Объясню поподробнее, в чем состоит смысл данного алгоритма. Если вы внимательнее приглядитесь к последним демкам, то навер- няка заметите, что во многих эффектах для имитации 16-цветового режима используются текстуры. Т.е., элементарной единицей изображения становится не пиксел, а квад- рат со стороной, например, 4 пиксела. Та- ким образом, в одном знакоместе мы получа- ем 4 элемента, каждый из которых при помо- щи текстур "окрашивается" в один из 16 цветов. При в памяти это, естественно, хранится в виде "байт на элемент"(chunky data), а при выводе на экран необходимо преобразовывать данные в стандартный (planar) вид. Для достижения максимально быстрого вывода и служит данный алгоритм. Замечание: хочу предупредить, что этот метод был разработан не мной. Я сам узнал о нем из файлов Explodera. Каждый байт chunky datы имеет вид: 1000 0101 Здесь младшие 4 бита - это цвет (смеще- ние от начала палитры), а старшие 4 бита - - базовый адрес палитры. Но!!! ведь коман- ды работы со стеком могут читать из памяти сразу по 2 байта!!! Поэтому палитра будет иметь такой вид: #8080 00 01 02 03 04 .. .. 0D 0E 0F #8180 10 11 12 13 14 .. .. 1D 1E 1F . . . . . . . #8F80 F0 F1 F2 F3 F4 .. .. FD FE FF Слева указан адрес, считываемый из chunky datы, т.е. младший байт - цвет пер- вого из выводимых элементов, старший байт- - цвет второго. Справа указаны номера текстур, выводимых при данной комбинации цветов, причем в текстуре, естественно, изображены сразу 2 элемента. Т.е. первый ряд - все текстуры со вторым цветом 0, второй ряд - со вторым цветом 1 и т.д. Итого у нас получается 16*16=256 текстур. Ну а теперь, разобравшись с форматом хранения данных, можно приступать и к на- писанию процедуры вывода. Для работы требуются: SP = адрес chunky datы; DE = адрес на экране, куда выводить; B = старший байт адреса,с которого хра- нятся текстуры. POP HL ;читаем chunky daty LD C,(HL) ;читаем адрес текстуры LD A,(BC) ;выводим LD (DE),A INC B INC D LD A,(BC) ; спрайт LD (DE),A INC B INC D LD A,(BC) ; на LD (DE),A INC B INC D LD A,(BC) ; экран LD (DE),A INC E POP HL ;читаем chunky daty LD C,(HL) ;читаем адрес текстуры LD A,(BC) ;выводим LD (DE),A DEC B DEC D LD A,(BC) ; спрайт LD (DE),A DEC B DEC D LD A,(BC) ; на LD (DE),A DEC B DEC D LD A,(BC) ; экран LD (DE),A INC E Ну вот и все. Разбирайтесь в моей писа- нине и - let`s start da demomakin`! (Раз- врат попрошу не пропагандировать ;-) ред.) А будут какие вопросы, пожелания или предложения - звоните по телефону 54-01-70 в Барнауле, конечно ;-)) и спрашивайте Олега - если он будет дома, то ответит всем! Bye,people! C Ya l8r!!! _______________________________________End
Другие статьи номера:
Похожие статьи:
В этот день... 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