256x192

Материал из SpeccyWiki
Перейти к: навигация, поиск

256x192 - условное название стандартного видеорежима ZX Spectrum. Разрешение в этом видеорежиме - 256 на 192 точек. Изображение в памяти хранится как монохромное, но возможно задание двух цветов (фона и изображения) для каждого из блоков 8x8 точек.

Блок 8x8 точек принято называть знакоместом, в связи с тем, что обычно такая область связана с одним из символов. По ширине в экран умещается 32 знакоместа, по высоте - 24. В Sinclair BASIC отсчёт принято проводить сверху вниз, слева направо: самое верхнее левое знакоместо имеет координаты (x=0; y=0), самое верхнее правое - (x=31; y=0), самое нижнее левое - (x=0; y=23).

Каждая точка экрана описывается одним битом в экранной области. Восемь соседних по горизонтале точек хранятся в одном байте, при этом старший бит в байте соответствует левой точке знакоместа, младший бит - правой. Одна полная строка (256 точек) использует 32 байта экранной области. Суммарно монохромная часть занимает 6144 байт.

Атрибутная часть содержит 768 байт и определяет цвета фона и изображения для каждого из знакомест. Байт атрибутов содержит в себе следующую информацию (побитово):

  • D0..D2 - три бита цвета "чернил" (INK) - установленных бит в области монохромного изображения. Возможны следующие значения:
    • 000 - чёрный
    • 001 - синий
    • 010 - красный
    • 011 - бордовый
    • 100 - зелёный
    • 101 - бирюзовый
    • 110 - жёлтый
    • 111 - белый
  • D3..D5 - три бита цвета "фона" (PAPER). - сброшенных бит в области монохромного изображения. Цвета кодируются аналогично INK.
  • D6 - бит яркости. При включении этого бита яркость цветов в знакоместе повышается (одновременно для INK и PAPER), кроме чёрного цвета.
  • D7 - бит мерцания (FLASH). При его включении с периодичностью раз в секунду отображаемые цвета INK и PAPER меняются местами.

Использование бита яркости вместе с битами цвета INK и PAPER позволяет отображать на экране до 15 цветов (так как чёрный цвет не меняет яркость).

В памяти экран начинается с адреса #4000 (16384 десятичное)

Экранная область памяти нелинейна - она описывается черезполосно по третям. Первые 32 байта (адреса #4000-#401F) описывают верхние 256 точек экрана - вехние части знакомест (x=0..31; y=0). Следующие 32 байт (адреса #4020-#403F) описывает верхние 256 точек знакомест (x=0..31; y=1) Адреса #40E0-#40FF описывают верхние 256 точек знакомест (x=0..31; y=7). Следующие адреса (#4100-41FF)описывают вторые сверху линии точек знакомест (x=0..31; y=0..7) Полностью верхняя треть экрана описывается в указанном порядке адресами #4000-#47FF (знакоместа x=0..31; y=0..7)

Вторая (#4800-#4FFF)и третья (#5000-#57FF) треть экрана описываются таким же способом. Экран занимает не весь телевизионный растр, только центральную его часть. Остальная часть называется бордюром, возможно изменение его цвета, по схемам аналогичным INK и PAPER, только без указания яркости.

Следом идёт атрибутная область (#5800-#5AFF) - она имеет линейную структуру - слева направо и сверху вниз.

Вывод картинки на экран монитора/телевизора происходит с частотой в 50 Герц генератором видеоизображения. Вывод происходит последовательно, по ходу луча - слева направо, сверху вниз. Каждое знакоместо луч трассирует 8 раз - сверху вниз по пиксельной линии. При этом читается содержимое атрибутной и монохромной части, сливаясь они выводятся образуя пиксельную линию экрана телевизора/монитора. После первого прохода луча по знакоместу, содержимое атрибутной части может быть изменено. Это приведёт к тому, что при повторном проходе луча будет выведена полоска точек 1x8 другого, нежели в предыдущий раз, цвета. Таким образом, быстро меняя содержимое атрибутной области, можно получить знакоместо, в котором атрибутами будут задаваться цвета отдельной полоски точек 1x8. Это эффект получил название Multicolor, и часто используется в самых различных программах, например в Demo, в играх и т.д.