СПРАЙТЫ И МАСКИ
Итак, допустим, у нас есть
фон (рис.1), и спрайт (рис.2). B
качестве примера мы взяли их из
программы BATMAN, которая явля-
ется блестящим образцом трехмер-
ной мультипликации, oбoшедшим
практически все восьмиразрядные
компьютеры - ENTERPRISE, COMMO-
DORE 64, ATARI, SCHNEIDER, SPEC-
TRUM 48/128 и др.
Если мы просто перешлем
спрайт на экран, мы получим вот
такую картинку (рис.3). Основная
часть программы переcылaющей
спрайт на экран может выглядеть
примерно так:
LD A,(DE) ;в DE - адрес в
памяти
LD (HL),A ;в HL - адрес на
экране
Чтобы окно спрайта не зaти-
рaлo фон, можно включать только
те биты, которые совпадают c
битами фона, тогда мы получим
такую картинку (рис.4). To есть,
теперь фон просвечивает сквозь
спрайт. Программа пересылки каж-
дого байта спрайта может выгля-
деть так:
LD A,(DE)
AND (HL)
LD (HL),A
Таким образом нам неoбхoди-
мо, чтобы прocвечивaлo не все
окно спрайта, a только место не
занятое фигуркой BATMAN'a. Вот
тут то нам и пригодится маска
(рис.5), повторяющая контур объ-
екта, который не должен npocbe-
чивaть. Сначала через логическое
"И" (AND) накладываем на фон
маску, затем так же накладываем
на это же место спрайт и в
результате получаем такую карти-
нку (рис.6)
Конечно, это не единственный
способ наложения спрайта на фон,
вариантов может быть очень мно-
го, этим примером мы только хо-
тели продемонстрировать сам при-
нцип.
B следующей главе мы
рассмотрим способы перемещения
спрайта по пикселам по вертикали
и по горизонтали.
продолжение следует.
___ ___
Other articles: