Gigascreen — различия между версиями
Zxdn (обсуждение | вклад) м |
Zxdn (обсуждение | вклад) |
||
Строка 30: | Строка 30: | ||
Эффект Gigascreen часто используется в [[демо]] и играх. | Эффект Gigascreen часто используется в [[демо]] и играх. | ||
+ | |||
+ | == Пример == | ||
+ | {| | ||
+ | |[[Изображение:Gigascreen_First.gif|thumb|256px|Первое изображение]] | ||
+ | |[[Изображение:Gigascreen_Second.gif|thumb|256px|Второе изображение]] | ||
+ | |[[Изображение:Gigascreen_Result.gif|thumb|256px|Условный результат]] | ||
+ | |} | ||
[[Категория:Видеорежимы]] | [[Категория:Видеорежимы]] |
Версия 16:39, 29 мая 2008
Gigascreen (также Doublescreen) - программный видеорежим для ZX Spectrum, а также доработка, реализующая его аппаратно.
Вывод изображения на экран телевизора/монитора происходит с частотой 50 Гц. К началу развёртки привязан сигнал маскируемого прерывания. Если связать каждое чётное прерывание с одним изображанием, и в кадре, на котором пришло это прерывание, выводить это изображение, а каждое нечётное прерывание с другим, то получится эффект Gigascreen.
Суть его в следующем - инертность восприятия глазом изображения при чередовании, например, жёлтого в первом изображении и белого во втором, приведёт к тому, что "на глаз" будет заметно не чередование этих цветов, а ярко-жёлтый цвет, являющийся результатом суперпозиции двух цветовых компонент.
Это позволяет использовать вместо палитры из 15 цветов (смотрите 256x192) палитру из 83 цветов:
icol:array[0..82,0..2]of byte{r,g,b}=( (b0,b1,b2),(b0,b2,b1),(b1,b0,b2),(b1,b2,b0),(b2,b0,b1),(b2,b1,b0), (b0,b1,b3),(b0,b3,b1),(b1,b0,b3),(b1,b3,b0),(b3,b0,b1),(b3,b1,b0),{B} (b0,b2,b3),(b0,b3,b2),(b2,b0,b3),(b2,b3,b0),(b3,b0,b2),(b3,b2,b0),{B} (b0,b2,b4),(b0,b4,b2),(b2,b0,b4),(b2,b4,b0),(b4,b0,b2),(b4,b2,b0),{BB} (b1,b2,b3),(b1,b3,b2),(b2,b1,b3),(b2,b3,b1),(b3,b1,b2),(b3,b2,b1),{B} {014,124,234,034,134 нет} (b0,b0,b1),(b0,b1,b0),(b1,b0,b0),(b0,b1,b1),(b1,b0,b1),(b1,b1,b0), (b0,b0,b2),(b0,b2,b0),(b2,b0,b0),(b0,b2,b2),(b2,b0,b2),(b2,b2,b0), (b0,b0,b3),(b0,b3,b0),(b3,b0,b0),(b0,b3,b3),(b3,b0,b3),(b3,b3,b0),{B} (b0,b0,b4),(b0,b4,b0),(b4,b0,b0),(b0,b4,b4),(b4,b0,b4),(b4,b4,b0),{BB} (b1,b1,b2),(b1,b2,b1),(b2,b1,b1),(b1,b2,b2),(b2,b1,b2),(b2,b2,b1), (b1,b1,b3),(b1,b3,b1),(b3,b1,b1),(b1,b3,b3),(b3,b1,b3),(b3,b3,b1),{B} (b2,b2,b3),(b2,b3,b2),(b3,b2,b2),(b2,b3,b3),(b3,b2,b3),(b3,b3,b2),{B} (b2,b2,b4),(b2,b4,b2),(b4,b2,b2),(b2,b4,b4),(b4,b2,b4),(b4,b4,b2),{BB} {14,34 нет} (b0,b0,b0),(b1,b1,b1),(b2,b2,b2),(b3,b3,b3),(b4,b4,b4));
Для ZX Spectrum 48K использование полноэкранного Gigasreen возможно за счёт обновления атрибутной части экранной области памяти. Для ZX Spectrum 128K, в котором есть второй экран, переключаемый программно, использование Gigascreen очень просто - достаточно установить оба изображения в первую и вторую экранную область памяти, и раз в прерывание переключать активный экран с первого на второй и наоборот.
Пониженное мерцание достигается переключением экранов каждую строчку (со сменой фазы каждый кадр), но при регулярной штриховке при этом получается неприятное расслоение. Компромисс - переключение экранов приблизительно каждые 2 строчки, с фазой, плавно меняющейся от кадра к кадру. При этом изображение "течёт".
Эффект Gigascreen часто используется в демо и играх.