ZX Club #08
31 мая 1998


     (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



Other articles:


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Similar articles:
Outro - The next issue will probably be in Swedish.
Rectime - "AON + CDOSmodem = bummer" and other network news.
From the authors - A newspaper in a letter Brom'a & Spectre.

В этот день...   21 November