Настольный терминал из Fallout 3. Часть 6
Feb. 13th, 2015 06:48 pmПоскольку я делаю не статичный макет, а функциональную копию игрового терминала, мне, разумеется, нужно выводить на монитор изображение. Это не совсем тривиальная задача, как может показаться на первый взгляд, потому что мой монитор имеет интерфейс, который в современных компьютерах давно не используется. Я уж не говорю о цифровых DisplayPort, HDMI и DVI — нет, это даже не обычный аналоговый VGA. Монитор рассчитан на низкочастотный чересстрочный видеосигнал — наверное, самый архаичный из ныне используемых стандартов проводной передачи видео, существующий в практически неизменном виде с 40-х годов.
В чересстрочном телесигнале сначала передаются все нечётные строки изображения (так называемый полукадр), а затем — все чётные. А поскольку люминофор имеет остаточное свечение, предыдущий полукадр не успевает окончательно погаснуть к моменту поступления следующего, и мы видим цельное изображение.

VGA нельзя превратить в такой сигнал просто при помощи переходников, потому что в нём применяется прогрессивная развёртка, когда все строки передаются подряд, и частота строчного генератора VGA-монитора должна быть примерно вдвое выше, чем у обычного. А это означает, что мне необходима видеокарта со специализированным чересстрочным телевыходом.
С распространением цифровых видеоинтерфейсов такие карты перестали выпускать, но до конца 2000-х они были в ходу. У меня в закромах нашлись две подходящих, Nvidia GeForce4 Ti 4200 и GeForce2 MX 400. Помните ещё эти названия? На меня прямо ностальгия нахлынула.

Обратите внимание на круглые чёрные разъёмы. Это различные версии интерфейса S-Video, который изначально появился в 1979 г., а в 1987-м получил привычный нам штекер типа mini-DIN. S-Video — это компонентный видеоинтерфейс, потому он так и называется (Separate Video). В нём яркость совместно c синхросигналом (Y) и цветность совместно с цветовой синхронизацией (С) передаются по отдельным проводникам с волновым сопротивлением 75 Ом.

Распиновка у него следующая:
1 — нулевой провод яркостного сигнала (Y);
2 — нулевой провод цветового сигнала (C);
3 — яркостный сигнал (Y);
4 — цветовой сигнал (C).
Раздельная передача обеспечивает более высокое качество картинки, в моём же случае этот интерфейс удобен тем, что позволяет получить чистый яркостный сигнал, который и нужен чёрно-белому монитору.
На моей GeForce2 MX 400 стоит классический 4-контактный разъём S-Video, а на GeForce4 Ti 4200 — 7-контактный. В 7-контактном четыре основных проводника те же самые, но появляются дополнительные:

5 — нулевой провод композитного видеосигнала (V);
6 — композитный видеосигнал (V) или компонентный синий (PB);
7 — не используется.
Контакты 5–7 имеют такое назначение только в видеокартах Nvidia; для ATI или интегрированных карточек распиновка будет другой.
Ну, достаточно ликбеза, пора действовать. Первой я взял более новую видеокарту, потому что у GeForce2, насколько я помню, были проблемы с настройкой драйвера. Чтобы «добыть» нужный мне сигнал, я воспользовался имевшимся у меня переходником из комплекта какой-то видеокарты.

Причём видеокарта была от ATI, но в данном случае это не важно — главное вывести яркостный сигнал (Y).
По умолчанию видеовыход на карте отключён, так что его необходимо активировать в драйверах. Делается это не вполне очевидным способом, так что покажу на примере.
1. Открываем NVIDIA Control Panel и выбираем пункт «Несколько дисплеев — Изменение конфигурации дисплеев».

Обнаруживаем, что там нашего монитора не видно.
2. Открываем окно с дивным названием «Обнаружение отсутствия дисплея» и жмём на кнопку [Точное определение дисплея].

При этом он автоматически поставит галочку «Выполнять обнаружение телевизоров при включении». Впрочем, и после этого новых мониторов списке не появится.
3. Далее нужно закрыть NVIDIA Control Panel, щёлкнуть по её значку в трее правой кнопкой и в выпадающем меню вместо Single Display выбрать любой другой пункт, например, Clone или Dualview.

4. Только после этого в том же выпадающем меню появятся два наших монитора — подключённый по VGA (Analog) и по S-Video (TV).

После выполнения вышеописанных действий монитор наконец начал показывать картинку. Я пробовал выставлять разрешение вплоть до 1024 × 768 пикс., но лучше смотрелось всё-таки 800 × 600.

Когда уже всё, казалось бы, заработало, возникла ещё одна проблема. Видеокарта замечательно выводила картинку из оконного режима Windows, но стоило мне попытаться перейти в полноэкранный текстовый, как всё изображение с монитора пропадало! Я убил, наверное, час, пытаясь выяснить, в чём же дело, пока опытным путём не обнаружил, что переключатель Impedance на задней панели монитора нужно перевести в положение «75 Ω». При этом сигнальный провод через резистор 75 Ом замыкается на «землю».

После того, как я это сделал, оказалось, что видеокарта выводит картинку на телевыход не только под Windows, но и до её загрузки, в текстовом режиме. То есть можно вообще не использовать сложную операционную систему и запускать эмулятор из-под чистого DOS, под который он, собственно, и написан. В конечном счёте я заменил видеокарту на GeForce2 MX 400 — она низкопрофильная и легче поместится в корпус. На ней, кстати, есть композитный видеовыход, рассчитанный на обычный «тюльпан».
В результате тестовый стенд стал выглядеть так:

Следующий пост будет интересным — я расскажу вам про работу над эмулятором терминала и про то, что он в итоге сможет делать.
Продолжение: Настольный терминал из Fallout 3. Часть 7
Начало: Настольный терминал из Fallout 3. Анонс
В чересстрочном телесигнале сначала передаются все нечётные строки изображения (так называемый полукадр), а затем — все чётные. А поскольку люминофор имеет остаточное свечение, предыдущий полукадр не успевает окончательно погаснуть к моменту поступления следующего, и мы видим цельное изображение.

VGA нельзя превратить в такой сигнал просто при помощи переходников, потому что в нём применяется прогрессивная развёртка, когда все строки передаются подряд, и частота строчного генератора VGA-монитора должна быть примерно вдвое выше, чем у обычного. А это означает, что мне необходима видеокарта со специализированным чересстрочным телевыходом.
С распространением цифровых видеоинтерфейсов такие карты перестали выпускать, но до конца 2000-х они были в ходу. У меня в закромах нашлись две подходящих, Nvidia GeForce4 Ti 4200 и GeForce2 MX 400. Помните ещё эти названия? На меня прямо ностальгия нахлынула.

Обратите внимание на круглые чёрные разъёмы. Это различные версии интерфейса S-Video, который изначально появился в 1979 г., а в 1987-м получил привычный нам штекер типа mini-DIN. S-Video — это компонентный видеоинтерфейс, потому он так и называется (Separate Video). В нём яркость совместно c синхросигналом (Y) и цветность совместно с цветовой синхронизацией (С) передаются по отдельным проводникам с волновым сопротивлением 75 Ом.

Распиновка у него следующая:
1 — нулевой провод яркостного сигнала (Y);
2 — нулевой провод цветового сигнала (C);
3 — яркостный сигнал (Y);
4 — цветовой сигнал (C).
Раздельная передача обеспечивает более высокое качество картинки, в моём же случае этот интерфейс удобен тем, что позволяет получить чистый яркостный сигнал, который и нужен чёрно-белому монитору.
На моей GeForce2 MX 400 стоит классический 4-контактный разъём S-Video, а на GeForce4 Ti 4200 — 7-контактный. В 7-контактном четыре основных проводника те же самые, но появляются дополнительные:

5 — нулевой провод композитного видеосигнала (V);
6 — композитный видеосигнал (V) или компонентный синий (PB);
7 — не используется.
Контакты 5–7 имеют такое назначение только в видеокартах Nvidia; для ATI или интегрированных карточек распиновка будет другой.
Ну, достаточно ликбеза, пора действовать. Первой я взял более новую видеокарту, потому что у GeForce2, насколько я помню, были проблемы с настройкой драйвера. Чтобы «добыть» нужный мне сигнал, я воспользовался имевшимся у меня переходником из комплекта какой-то видеокарты.

Причём видеокарта была от ATI, но в данном случае это не важно — главное вывести яркостный сигнал (Y).
По умолчанию видеовыход на карте отключён, так что его необходимо активировать в драйверах. Делается это не вполне очевидным способом, так что покажу на примере.
1. Открываем NVIDIA Control Panel и выбираем пункт «Несколько дисплеев — Изменение конфигурации дисплеев».

Обнаруживаем, что там нашего монитора не видно.
2. Открываем окно с дивным названием «Обнаружение отсутствия дисплея» и жмём на кнопку [Точное определение дисплея].

При этом он автоматически поставит галочку «Выполнять обнаружение телевизоров при включении». Впрочем, и после этого новых мониторов списке не появится.
3. Далее нужно закрыть NVIDIA Control Panel, щёлкнуть по её значку в трее правой кнопкой и в выпадающем меню вместо Single Display выбрать любой другой пункт, например, Clone или Dualview.

4. Только после этого в том же выпадающем меню появятся два наших монитора — подключённый по VGA (Analog) и по S-Video (TV).

После выполнения вышеописанных действий монитор наконец начал показывать картинку. Я пробовал выставлять разрешение вплоть до 1024 × 768 пикс., но лучше смотрелось всё-таки 800 × 600.

Когда уже всё, казалось бы, заработало, возникла ещё одна проблема. Видеокарта замечательно выводила картинку из оконного режима Windows, но стоило мне попытаться перейти в полноэкранный текстовый, как всё изображение с монитора пропадало! Я убил, наверное, час, пытаясь выяснить, в чём же дело, пока опытным путём не обнаружил, что переключатель Impedance на задней панели монитора нужно перевести в положение «75 Ω». При этом сигнальный провод через резистор 75 Ом замыкается на «землю».

После того, как я это сделал, оказалось, что видеокарта выводит картинку на телевыход не только под Windows, но и до её загрузки, в текстовом режиме. То есть можно вообще не использовать сложную операционную систему и запускать эмулятор из-под чистого DOS, под который он, собственно, и написан. В конечном счёте я заменил видеокарту на GeForce2 MX 400 — она низкопрофильная и легче поместится в корпус. На ней, кстати, есть композитный видеовыход, рассчитанный на обычный «тюльпан».
В результате тестовый стенд стал выглядеть так:

Следующий пост будет интересным — я расскажу вам про работу над эмулятором терминала и про то, что он в итоге сможет делать.
Продолжение: Настольный терминал из Fallout 3. Часть 7
Начало: Настольный терминал из Fallout 3. Анонс