Gigascreen — различия между версиями

Материал из SpeccyWiki
Перейти к: навигация, поиск
Строка 1: Строка 1:
''Gigascreen'' (или так же ''Doublescreen'') - это особый режим вывода изображения на телевизор/монитор, к которому подключен [[ZX-Spectrum]].
+
''Gigascreen'' (или так же ''Doublescreen'') - это особый режим вывода изображения на телевизор/монитор, к которому подключен [[ZX Spectrum]], а также аппаратная доработка, делающая это автоматически.
  
Вывод изображения на экран телевизора/монитора происходит с частотой 50 Гц с приходом сигнала маскируемого прерывания.
+
Вывод изображения на экран телевизора/монитора происходит с частотой 50 Гц. К началу развёртки привязан сигнала маскируемого прерывания.
Если связать каждое чётное прерывание с одним изображанием, и во время прихода этого прерывания выводить это изображение, а каждое нечётное прерывание с другим (и тоже во время прихода нечётного выводить его), то получится эффект ''Gigascreen''.
+
Если связать каждое чётное прерывание с одним изображанием, и в кадре, на котором пришло это прерывание, выводить это изображение, а каждое нечётное прерывание с другим, то получится эффект ''Gigascreen''.
  
 
Суть его в следующем - инертность восприятия глазом изображения при чередовании, например, жёлтого в первом изображении и белого во втором, приведёт к тому, что "на глаз" будет заметно не чередование этих цветов, а ярко-жёлтый цвет, являющийся результатом суперпозиции двух цветовых компонент.
 
Суть его в следующем - инертность восприятия глазом изображения при чередовании, например, жёлтого в первом изображении и белого во втором, приведёт к тому, что "на глаз" будет заметно не чередование этих цветов, а ярко-жёлтый цвет, являющийся результатом суперпозиции двух цветовых компонент.
  
Это позволяет использовать вместо палитры из 15 цветов (смотрите [[256x192]]) палитру из 61 цвета.
+
Это позволяет использовать вместо палитры из 15 цветов (смотрите [[256x192]]) палитру из 83 цветов:
  
Для [[ZX-Spectrum48]] использование полноэкранного Gigasreen возможно за счёт обновления атрибутной части экранной области памяти. Для [[ZX-Spectrum128]], в котором есть второй экран, переключаемый программно, использование Gigascreen очень просто - достаточно установить оба изображения в первую и вторую экранную область памяти, и раз в прерывание переключать активный экран с первого на второй и наоборот.
+
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));
  
Эффект Gigascreen часто используется в [[DEMO]], в играх.
+
Для [[ZX Spectrum]] 48K использование полноэкранного Gigasreen возможно за счёт обновления атрибутной части экранной области памяти. Для [[ZX Spectrum]] 128K, в котором есть второй экран, переключаемый программно, использование Gigascreen очень просто - достаточно установить оба изображения в первую и вторую экранную область памяти, и раз в прерывание переключать активный экран с первого на второй и наоборот.
 +
 
 +
Пониженное мерцание достигается переключением экранов каждую строчку (со сменой фазы каждый кадр), но при регулярной штриховке при этом получается неприятное расслоение. Компромисс - переключение экранов приблизительно каждые 2 строчки, с фазой, плавно меняющейся от кадра к кадру. При этом изображение "течёт".
 +
 
 +
Эффект Gigascreen часто используется в [[демо]] и играх.
  
 
[[Категория:Видеорежимы]]
 
[[Категория:Видеорежимы]]

Версия 08:51, 9 октября 2007

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 часто используется в демо и играх.