2. "ФОНОВЫЙ" И "ПРОЗРАЧНЫЙ" ЭКРАНЫ
Не секрет, что основная проблема стандартного Спековского экрана - пресловутый
"атрибутный клэшинг" (не все же можно сделать по типу Savage и AMC, а монохромная
графика как-то немного начала надоедать в начале XXI века). Где-то этот поганый
эффект почти не раздражает (где спрайты маленькие - как у Диззей), где-то - просто
выводит из себя. Идея состоит в том, чтобы от него наконец-то избавиться путем
циничной расправы над многострадальным никому не нужным признаком FLASH и жесткой
специализации двух имеющихся у Спектрума экранов.
Над FLASH'ем уже не раз издевались пытливые синклеристы - достаточно вспомнить так
называемые "доработки" FLASH-color и BRIGHT2. Все это не было стандартизовано,
по-разному переключалось (а то и вообще не переключалось), а толку было немного.
Все-таки действовать надо осторожнее, и обязательно с оглядкой на существующий софт.
Что если второй экран сделать фоном, а основной - чем-то вроде прозрачной пленки, на
которой будут изображаться "спрайты" (так раньше мультфильмы делали). Теперь бит
FLASH будет обозначать прозрачность PAPER в данном знакоместе. На самом деле FLASH
можно оставить почти как есть, что хорошо для старых программ, а для наших целей
использовать только "бессмысленные" значения атрибута, у которых при включенном FLASH
INK=PAPER. То есть в этом случае для каждого байта графики нулевые биты - прозрачные
(отображается фон), а единичные - этот самый цвет INK=PAPER. Особый случай - когда
FLASH=1, BRIGHT=1, INK=PAPER=0 (то есть "ярко-черный" цвет) - здесь лучше считать все
знакоместо прозрачным, чтобы спрайты не стирать ручками, тратя время. А при запуске
старых программ в 99% случаев ничего и заметно не будет, даже если этот режим вообще
не выключается.
Если второй экран сделать активным (как это делается в обычном Спектруме), он так
и будет изображаться, полностью забивая первый. Если активен первый (прозрачный)
экран - что-то вроде заднего плана на всяких приставках.
Вспомним также, что признак FLASH использовался разве что в старых "48-киловых"
программах, а на втором экране и подавно оказался не нужен (лично я видел только
одну интру, где FLASH мешался на фоне multicolor'ной картинки). На втором экране
FLASH заменим на упомянутый BRIGHT2 - для плотно закрашенного ФОНА это важно.
Здесь есть нюанс - если считать, что FLASH (теперь BRIGHT2) и простой BRIGHT,
равные 0, означают пониженную яркость, а 1 - повышенную, то можно использовать
ранее невидимый "ярко-черный" цвет, но совместимость со старым софтом пострадает.
Иначе лучше считать, что BRIGHT2=1 означает, что яркость PAPER НЕ СОВПАДАЕТ с
яркостью INK, равной обычному BRIGHT.
Очень легко сделать быстрый знакоместный скролл (и вертикальный, и горизонтальный)
всем известными методами извращений со стеком - спрайты-то стирать не надо. Даешь
фреймовые скрольные игрушки на Спеке! Да и плавно тоже прокручивать будет проще.
Ограничения: спрайты продолжат красить друг друга (но, как показывает опыт, это не
страшно, лишь бы фон не красили) и все равно будут "полупрозрачные". Маску придется
все-таки на фоне печатать, что осложняет прокрутки - хотя на быстро движущемся фоне
"полупрозрачность" будет малозаметна. Если спрайт достаточно большой и движется
поатрибутно, его середину можно сделать сплошной - двухцветными атрибутами, а края
- одноцветные.
3. СОВМЕСТНОЕ ИСПОЛЬЗОВАНИЕ
Ничто (программисту) не мешает одновременно иметь и спрайтовый режим, и улучшенное
цветовое разрешение, причем визуальный эффект усилится многократно! Например,
практически отпадет необходимость печатать маску на фоне - спрайт и так уже будет
состоять из достаточно мелких деталей, чтобы нормально его раскрасить, и двигаться
гораздо плавнее. Единственная проблема, которая может возникнуть - то, что для
прокручивающегося фона объем видеобуфера важнее, чем повышенние цветовое разрешение.
Все-таки неплохо было бы включать его независимо от первого экрана.
Совместимость с 48-киловыми программами почти 100%. Всякие X-колоры/моргалки и
прочие гигаскрины как работали, так и будут работать. Если крайне редко и будут
наблюдаться мелкие глюки, так только графические, а не программные. Но главное!
Уже существующий софт (игрушки прежде всегоочень легко переделывается под новые
возможности (48-е - вообще элементарно для тех, кто ломать умеет, большинство
изначально 128-х - тоже). Я уж не говорю, что если кто-нибудь что-то новое пишет,
то очень легко сделать сразу две версии - обычную 128-ю и расширенную. Так что
без софта данные примочки, будь они реализованы в железе, точно не останутся - уж
курочить игрушки у нас в стране научились давно, почему бы и не сделать что-то
более полезное, нежели всякие интры для дисковок и cheats. Да и чего ждать-то?
Почему бы не...
ЭМУЛЯЦИЯ
...встроить поддержку вышеописанного (надеюсь, не полногобреда в эмулятор?
Глядишь, и софт появится раньше, чем железяка. Я понимаю, конечно, что матерый
спектрумист ехидно ухмыльнется на эти слова, дескать, этот софт будет не под
железо, а под конкретные глюки конкретного эмулятора. С учетверенными атрибутами
оно может и так, но если предположить, что включаться будет через один порт
уже описанным способом, то потом софт легко исправить. Хотя, конечно, невредно бы
сначала выслушать мнение товарищей железячников - как бы оно могло быть реализовано.
А вот насчет фона со спрайтами - ну какие там могут быть глюки? Прога будет просто
подразумевать, что "бессмысленные" атрибуты с включенным FLASH работают именно
таким образом, и что этот режим в момент загрузки включен (если он даже навечно
включен - большой беды не будет). Особо мнительные могут пока не трогать BRIGHT2.
Я же говорю, основная идея была - простота написания и переделки софта.
Засим заканчиваю (наконец-то!). Благодарю нашедших в себе силы дочитать до конца.
Буду очень рад увидетьть серьезные отклики и мнения профессионалов. Только ногами
сразу не бейте.![]()




очень легко переделывается под новые
Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 
