МАСКИ Что касается масок, то тут трудно было бы озаглавить эту статью "Такие РАЗНЫЕ маски", поскольку на фронте масок все спокойно и стандартизировано. Для начала давайте разберем- ся в том, что же такое маска. Посмотрите на спрайт из игры 3D BATMAN; Вы можете заметить, что перед образом самого человечка находится некоторый рисунок, на котором вместо человечка изобра- жен его силуэт. Зачем он нужен? Все очень просто - при печати спрайта на экран прямым копиро- ванием (LD A,(данные); LD (эк- ран),A или по-другому) мы унич- тожаем фон, который находился за спрайтом, в результате чего вок- руг спрайта образуются уродли- вые пустоты, что портит общее впечатление от игры. Вот здесь- то и выходит на первый план мас- ка. Центральный процессор имеет в своем арсенале такую логичес- кую команду, как AND. Что проис- ходит с экраном, если маску на- ложить на экран при помощи этой команды: байт экрана 11111111 байт маски 11100111 -------- результат 11100111 Как видите, на экране появи- лось пространство с выключенны- ми пикселями. Кто-то уже, навер- ное, догадался: действительно, если наложить на экран маску перед тем, как печатать сам спрайт, на экране получится пус- тое место - размером со спрайт. Если теперь напечатать на экран спрайт не прямым копированием, а объединить экран и спрайт по OR, то спрайт впишется в очищенное маской окно, и фон, который на- ходится рядом со спрайтом, не будет испорчен. Как создать маску. После то- го, как ваш спрайт готов, ему надобно создать маску, а сде- лать это очень просто. Создание маски можно разбить на 3 этапа: Сначала мы инвертируем нари- сованный спрайт (выключаем вклю- ченные биты и включаем выключен- ные), второй этап - стираем все внутри силуэта, и, наконец, тре- тий этап - мы расширяем внутрен- нее пространство маски на 1 пик- сель. Это нужно для того, чтобы спрайт при печати не сливался с фоном, а отделялся от него поло- ской толщиной в один пиксель. Ну вот, о маске вроде бы все. Скажу лишь, что в памяти маску хранят в том же виде, в ка- ком хранится соответствующий ей спрайт.