Gigascreen
Gigascreen (также Doublescreen) — программный видеорежим для ZX Spectrum, а также доработка, реализующая его аппаратно. С середины 1990-х годов часто используется в демо и играх.
Видеорежим реализуется путём переключения двух экранных областей или областей атрибутов с началом каждого телевизионного кадра. За счёт инертности зрения цвета в разных экранных областях будут суммироваться. Например, чередование жёлтого цвета в первом изображении и белого во втором, "на глаз" будет выглядеть как мерцающий ярко-жёлтый цвет, являющийся результатом суперпозиции двух цветовых компонент. Это позволяет получить из стандартной 15-цветной палитры 102 цвета и использовать до четырёх цветов в знакоместе.
Для расчета цветов гигаскрина берутся следующие предпосылки:
- "вклад" каждой из половинок экрана оценивается в 50%,
- соответствующая компонента цвета каждой из половинок равна 66% максимальной интенсивности видео для не-брайта и 100% для брайта.
Итоговая формула следующая:
C = (C0/3*2 + C0*I0/3 + C1/3*2 + C1*I1/3)/2, где
C0, C1 - соответствующий цвет (R, G, B) из экранки 0 и 1, принимающий значения 0 или 1,
I - брайт, 0 или 1.
C - результирующий цвет с интенсивностью в диапазоне 0-1, где 0 - нулевой уровень видео, 1 - максимальный.
Для ZX Spectrum 48K использование полноэкранного Gigasreen возможно за счёт обновления атрибутной части экранной области памяти. На ZX Spectrum 128K, в котором есть две экранных области, переключаемый программно изменением одного бита, достаточно раз в прерывание переключать активный экран.
Пониженное мерцание достигается переключением экранов каждую строчку, со сменой фазы каждый кадр, но при регулярной штриховке при этом получается неприятное визуальное расслоение. Компромисс — переключение экранов приблизительно каждые 2 строчки, с фазой, плавно меняющейся от кадра к кадру. При этом изображение "течёт".