LINUX.ORG.RU
ФорумTalks

2r и сочувствующим насчет таблиц знакогенератора


0

0

Тут в новости про видеодрайвер от RedHat - http://www.linux.org.ru/view-message.jsp?msgid=2679068
товарищ r упомянул использование текстового видеорежима для вывода снега.
Оказывается, в адаптере EGA такая возможность существовала,
см. INT 0x10, AX = 0x1103 (выбор активных таблиц знакогенератора)
"EGA имеет четыре таблицы, одна или две из которых могут быть активными.
Каждая таблица содержит 256 символов. Одновременно могут отображаться 512 символов;
номер используемой таблицы определяется битом D3 байта атрибутов символа."
BL =
0-1 - номер таблицы, если бит D3 = 0
2-3 - номер используемой таблицы, если бит D3 = 1
4 - только для VGA: расширение для битов D0 и D1
5 - только для VGA: расширение для битов D2 и D3
6-7 - не используется
"
Так что, за счет уменьшения количества цветов, можно выводить хорошую псевдографику.

★★★★★
Ответ на: комментарий от frame

True. Просто в том топике какой-то тупой спор возник, а я как раз раритет по видеоадаптерам перелистывал )
Еще были такие забавные вещи, как вывод бегущих цветных полос на бордюр
и аппаратный скроллинг.

pacify ★★★★★
() автор топика

вообще-то можно было и без уменьшения количества цветов. был в EGA/VGA (или только VGA? нет, вроде в обеих) такой чудный регистр, который задавал высоту символов. так вот: можно было задать высоту в один пиксел. дальше пояснять, надеюсь, не надо?

anonymous
()
Ответ на: комментарий от anonymous

Забавно. Я не додумался до единичной высоты ))
Правда, программно (за исключением цветов) такой режим почти не будет отличаться от 640x480x1bpp.

pacify ★★★★★
() автор топика
Ответ на: комментарий от pacify

угу. однако отрисовка всё же по 8 пикселов за одну запись — прикольно. я в древние времена так развлекался.

с VGA, правда, гадкость — оно ж 8-й пиксель растягивает на 9-й, причём не у всех символов. приходилось и это вырубать.

anonymous
()
Ответ на: комментарий от anonymous

Небыло на VGA никакой высоты в пиксель. Были чётко расписанные режимы, меньше 8 пикселей в высоту шрифтов не было. По-моему, только 3 размера шрифта и было всего.

AngryElf ★★★★★
()
Ответ на: комментарий от AngryElf

>Небыло на VGA никакой высоты в пиксель.

стандартных — не было. а ты слово «регистр» не заметил? высота шрифта (а следовательно, и количество строк на экране) вычислялась исходя из высоты символа. высота сивола задавалась в регистре видеоадаптера. гранулярность — пиксел.

и не доказывай мне, что такого не бывает — я в школе на VGA в режиме «один пиксел по высоте» рисовал графику. было это, правда, больше 10 лет назад, так что регистры и порты уже не помню.

//капча: barter

anonymous
()
Ответ на: комментарий от anonymous

>высота шрифта (а следовательно, и количество строк на экране) вычислялась исходя из высоты символ

это я какой-то бред написал. читать так: «количество строк на экране вычислялось исходя из высоты символа».

anonymous
()

> за счет уменьшения количества цветов, можно выводить хорошую псевдографику.

Только непонятно зачем это было делать под EGA, который и так графический, а описанное справедливо только для него. Был более переносимый способ с использованием бита яркости для выбора таблицы.

anonymous
()
Ответ на: комментарий от anonymous

а ты никогда не видел Novell DOS? с её округлыми кнопочками и мышиной стрелочкой, движущейся попиксельно в текстовом режиме?

anonymous
()
Ответ на: комментарий от anonymous

Нет, не припоминаю ничего подобного. Но курсорчик такой был и у нортон-утилитисов. И у меня в паре приблуд :о)

anonymous
()
Ответ на: комментарий от anonymous

или в них. несколько лет очень любили это дело. я таки даже морду «a-la win 3.11» в тексте малевал тогда. эх, времена были… %-)

anonymous
()
Ответ на: комментарий от anonymous

Когда стали расти как грибы библиотеки разной степени сложности для нормальной графики, это всё стало ненужным, а с виндовсом стали ненужными и они и всё стало слишком сложным что бы можно было это любить :-)

anonymous
()
Ответ на: комментарий от anonymous

скажем так: когда отрисовка более-менее сложных гуёв именно в графике перестала тормозить. стало скучно.

anonymous
()

Так этому r про игры со знакогенератором так и сказали, но он настаивал на некоем совмещенном текстово-графическом режиме.

>Так что, за счет уменьшения количества цветов, можно выводить хорошую псевдографику.

Про эту возможность я упоминал, только вроде кол-во цветов уменьшать не нужно, если задействовать бит отвечающий за мерцание.
http://www.linux.org.ru/jump-message.jsp?msgid=2679068&cid=2680353

madcore ★★★★★
()
Ответ на: комментарий от anonymous

>угу. однако отрисовка всё же по 8 пикселов за одну запись — прикольно. я в древние времена так развлекался.

Это можно было и в 16-цветном графическом режиме. В 256-цветном можно было по 4 пикселя ставить.

madcore ★★★★★
()
Ответ на: комментарий от madcore

игры с плоскостями никогда особо удобны не были. я когда писал спрайтовый движок — наигрался с этим по самое нехочу. ну и: в графике попиксельно рисовать любой дурак может, в тексте веселее. %-)

anonymous
()
Ответ на: комментарий от anonymous

>игры с плоскостями никогда особо удобны не были.

В играх как раз пофиг - обычно рисовали в памяти и потом перекидывали на экран. Даже режим 256 цветов 320х200 использовали не стандартный, а с нелинейной организацией(пиксели через 1 по 4-м плоскостям) - так были доступны страницы, скроллинг, быстрое копирование видео-видео и тп. Ну и для более нестандартных разрешений(типа 320х240 или 360х480) без этого было никак.

madcore ★★★★★
()
Ответ на: комментарий от madcore

я имел в виду «игры» как «программирование дурацких регистров».

>обычно рисовали в памяти и потом перекидывали на экран

а вот тебе фиг. ты в курсе, что скорость работы с видеопамятью EGA/VGA была как минимум на порядок меньше, чем с обычной RAM (tnx to bit planes and other shitty stuff)? перекидывание целого экрана — это хорошо для слайдшоу и никак не подходило для игр. там дико извращались, только чтобы рисовать как можно меньше.

>быстрое копирование видео-видео

было дичайшей мечтой. даже в режиме 320x200x16 копирование видеостраницы на видеостраницу в режиме 1 занимало настолько много времени, что ни о какой плавности можно было не заикаться.

чуть лучше была ситуация с X-режимами, но не сильно.

anonymous
()
Ответ на: комментарий от anonymous

note для тех, кто забыл: «режим 1» — это когда чтение байта из видеопамяти читает сразу все 4 регистра-задвижки, и запись, соответственно, все 4 пишет назад, т.о. за один цикл чтение-запись копируются все пикселы байта со всех bit planes. самый быстрый режим для копирования видеопамять-видеопамять.

anonymous
()
Ответ на: комментарий от anonymous

>а вот тебе фиг. ты в курсе, что скорость работы с видеопамятью EGA/VGA была как минимум на порядок меньше, чем с обычной RAM (tnx to bit planes and other shitty stuff)? перекидывание целого экрана — это хорошо для слайдшоу и никак не подходило для игр. там дико извращались, только чтобы рисовать как можно меньше.

Да ну? Для перекидывания буфера из памяти щелкнуть страницами надо только 4 раза. Посмотри на игрухи типа prehistoric, anorher world или haunted - у них у всех был плананарный 320х200-16цветов, и никаких слайдшоу на 286-11МГц я не видел.

>было дичайшей мечтой. даже в режиме 320x200x16 копирование видеостраницы на видеостраницу в режиме 1 занимало настолько много времени, что ни о какой плавности можно было не заикаться.

Может на 8088 было быстрее так? Всё-таки копированием одного байта сразу 8 точек. На 486 однозначно было не медленней - я когда-то замерял. Правда применению этому не много - всё должно быть выровнено на 8 пикс. Зато очень удобно заливать экран шаблоном 8х8 - заполнить регистры-защелки только 8 раз надо чтением, а так только писать

madcore ★★★★★
()
Ответ на: комментарий от madcore

> Так этому r про игры со знакогенератором так и сказали, но он настаивал на некоем совмещенном текстово-графическом режиме.

Вообще непонятно что r делает на техническом форуме. Про видеорежимы он представления не имеет, про rdbmsы недавно тоже высказывался, что всем стало понятно, что он вопросом не владеет.

anonymous
()
Ответ на: комментарий от madcore

>Да ну? Для перекидывания буфера из памяти щелкнуть страницами надо только 4 раза.

что?! это ты что такое написал? ты имел в виду «плоскостями щёлкнуть»? %-)

>Посмотри на игрухи типа prehistoric

>у них у всех был плананарный 320х200-16цветов

многие игрушки титуса — в x mode 256 colors (хотя могу наврать, да). впрочем, если ты внутрь титусов смотрел — там весьма своеобразная 2d библиотека, поторая вовсе и не копировала весь экран, а умно обновляла куски. а AW никогда плавностью не отличался, там FPS ужасен (не в последнюю очередь от того, что скрипты под амигу заточены).

>и никаких слайдшоу на 286-11МГц я не видел.

наверное, ты тогда очень медленно думал. %-) или ни разу, например, не запускал Airborne Ranger в режиме VGA 256 colors. в режиме EGA AR опять же не копировал полностью страницы из памяти.

(кстати. пошёл на олдгамес качать AR. ностальжЫ; а нет ли римейка этой чудесной игрушки? %-)

>Может на 8088 было быстрее так?

до 286-х включительно, пока шина куцая и медленная — копирование всей страницы вызывало страшные корчи. те же 320x200x16, что я выше приводил, максимум около 10 FPS давали. играбельно, но никакой плавности, одна тормознутость. это с учётом того, что спрайты компилировались в машинный код, иначе было ещё страшнее.

anonymous
()
Ответ на: комментарий от anonymous

>что?! это ты что такое написал? ты имел в виду «плоскостями щёлкнуть»? %-)

Да, про выбор плоскости для записи речь.

>многие игрушки титуса — в x mode 256 colors (хотя могу наврать, да).

Конкретно приведенные игрухи - именно 16. Даже там, где был выбор ega/vga - различия были только в палитре.

>впрочем, если ты внутрь титусов смотрел — там весьма своеобразная 2d библиотека, поторая вовсе и не копировала весь экран, а умно обновляла куски.

Ну, это правильный подход, но должны быть моменты, когда обновить надо весь экран? К тому же, в таких игрухах обычно был фиксированный фпс.

>наверное, ты тогда очень медленно думал. %-) или ни разу, например, не запускал Airborne Ranger в режиме VGA 256 colors. в режиме EGA AR опять же не копировал полностью страницы из памяти.

Не помню такой игрухи. Но тот же prehistoric1/2 - очень динамичная игруха. Ну и всякие леталки/стрелялки с постоянным скроллом - там тормозам никак нельзя было быть.

>до 286-х включительно, пока шина куцая и медленная

isa-видяху и в пентиум можно воткнуть, а вот на 286 разница в скорости между память и видео должна быть не такая радикальная

madcore ★★★★★
()
Ответ на: комментарий от madcore

>Конкретно приведенные игрухи — именно 16. Даже там, где был выбор ega/vga — различия были только в палитре.

спорить не стану — лень в архивах титусовские игры искать. вполне возможно. но по-моему, Prehistoric 2 и Titus the Fox — 256 цветов уже.

ещё они очень прикольно удивляются сейчас при запуске: «вау! ты играешь в это в 2008 году! а я её ваще в 1992 написал, вот!» %-)

>но должны быть моменты, когда обновить надо весь экран?

не так часто. wolf32 уже для 32-битных машин был. а Dangerous Dave 2, например, весь экран не обновлял. %-)

>Не помню такой игрухи.

http://www.abandonia.com/en/games/156/Airborne+Ranger.html

>у и всякие леталки/стрелялки с постоянным скроллом — там тормозам никак нельзя было быть.

именно поэтому они весь экран не обновляли. кстати, вспомни Knightmare — вот такая, примерно, максимальная скорость была бы у них, если бы обновлялась вся страница (и, по-моему, Энди там всю страницу и копировал).

>а вот на 286 разница в скорости между память и видео должна быть не такая радикальная

таки офигенная. не важно, по каким техническим причинам, но при обновлении всей страницы в 320x200x256 был виден глазом весь процесс — оно красиво дёргалось.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.