
Комментарии 26
Только не plan, а plane. План это что-то другое.
В данном случае изображение лежит в 4 банках памяти для ускорения вывода данных в ЦАПы. И в режиме 13h в том числе. Просто железо само переключает банки на основе 2 младших битов адреса (chain-4).
Демка норм, понравилась, есть художественная составляющая.
А вот это:
А первое место выиграло демо от группы Otomata Labs, внимание: под Atari 2600 VCS. Саму эту демку можно посмотреть тут: https://www.pouet.net/prod.php?which=105918
вообще - нет. Впечатление, что "эффекты" придумывал AI с целью минимизации места. Даже если они уместили демку в 128 байт (я правильно понял?) - туфта безыдейная.
128 байт - это столько оперативки у Atari 2600. Сама демка 32кб. Ну а на счет впечатления... Тут, чтобы оценить, надо быть немножко фанатом 8-битных платформ, и хотя бы отдаленно представлять возможности платформы :)
На всякий случай, это вот такая штуковина 1977-го года:

А вы не могли бы показать демку под 2600, которая не является "туфтой безыдейной".
Меня вот впечатлило. Стильная и крутая работа для этой платформы.
Еще одним важным преимуществом Mode X/Y является возможность быстрого копирования или заполнения видеопамяти - 4 пиксела за одну байтовую операцию.
Это будет рассмотрено в следующей статье, при разборе эффектов, где эта особенность используется. Так-то это приемущество не однозначное ) Для 8-битной ISA-шины и 8086-80286 - бесспорно преимущество. Для 386-го и 16-битной ISA, или VLB или PCI - уже не так однозначно, ведь 4 пикселя за одну операцию (32-битную) можно и в обычном VGA-режиме нарисовать. Но извлечь из этого пользу все равно можно.
на оригинальном vga 32-битная запись в режиме 13h будет значительно медленнее
не знаю, что такое "оригинальный VGA" в данному случае. Но вообще-то mode-x работает медленнее сам по себе. Не важно, 32-битная запись или нет. Если сравнивать одно и тоже при включеном обычном 13h режиме vs modex, то от 20% до 50% падение скорости записи (зависит от видеокарты). Поэтому и говорю, что не однозначно. Зависит от того - что мы делаем. Залить одним цветом прямоугольник? Ну, в mode-x это быстрее, так как мы же можем и в нем 32-битной записью пользоваться, и будет уже 16 пикселей за одну операцию. Правда одного цвета.
А вот если текстурированный полигон, то...
оригинальный vga - 8 битное решение от ibm. пользоваться 16 битными или 32битными операциями в планарном режиме нельзя на любой видеоплате... ок, понял что ты имел в виду сплошной цвет, так работает.
Я поэтому и написал "Для 8-битной ISA-шины и 8086-80286 - бесспорно преимущество.".
А на счет 16-32 битными "нельзя на любой видеоплате" - это не так. Еще как можно. Я бы не писал, если бы я сам так не делал. Вы возможно путаете с конкретно механизмом латчей, например копированием VRAM to VRAM по четыре пикселя за байтовую операцию чтения/записи. Это да, латчи 8-битные. Но просто записывать в видеопамять 16/32 битной операцией можно, результат будет такой же как от последовательной побайтовой записи.
По поводу защелок - я дописал в конце, если заливать одним цветом - то работает, если разными - все зальется самым старшим байтом из 4ех. А насчет шины - не совсем так - неважно какая шина, важно что оригинальный vga - 8битный даже для 32битных ps/2, не важно какая шина, если сам адаптер - 8битный.
ну, ктож ставил 8-битную VGA-карту на 386 или 486-й? Это было бы узким местом в системе.
задай этот вопрос компании IBM:) vga появился как встроенный на материнскую плату адаптер для компьютеров ps/2 (в том числе на процессоре 386), позже вышел как внешний адаптер под isa и mca. на 386\486 вообще мало смысла использовать x-mode, есть же vbe и другие плюшки. фишка x-mode что он работает на оригинальном vga и его древних клонах.
ну, статью вы конечно полностью читать не стали :)
Нет, mode-x на 386 и 486-м был смысл использовать. И использовался. В том числе в играх. На 386-м полноэкранный скроллинг с 60 FPS софтварным методом сделать нельзя, а с mode-x и аппаратным скролом можно. Уже не говоря о скроллинге при разрешении 320х480 (или 360х480) как в Пинболах. Даже 486DX2-100Mhz не вывозит full-rate перерисовку экрана в таком разрешении. Алсо, даже Doom юзал modex.
я конечно утрировал. но все же его использовали в первую очередь из-за совместимости. аппаратный скролл вполне себе возможен и в svga режимах, но там проблемы с совместимостью, особенно в поддержке низких разрешений. Doom использовал mode Y :) по вполне очевидным причинам:)
ну, обычно modex-ом называют любой VGA-планарный режим. Просто Абраш описал режим 320х240 и назвал его mode-x, а потом кто-то сделал 320х200 и сказал, что это mode-y. Но в последствии редко кто так конкретизирует. Там тогда для каждого разрешения, которых пару десятков наберется надо букву менять?
А по каким очевидным причинам в Doom он использовался?
А почему речь вообще про Doom пошла? Был ведь wolfenstein3D, тоже в mode Y. Причины - в 13H игра была бы заметно медленнее, двойная\тройная буферизация были бы невозможны. В Doom - причины те же. mode Y выбран вместо mode X также из-за скорости - меньше пикселей. Также в Doom это позволило сделать режим низкой детализации - ускорение не только из-за того, что движку нужно считать 160 лучей вместо 320, но и в том, что пиксели двойной ширины записываются одним обращением в видеопамять... А еще в пользу mode Y против mode X - пишут, что художники работали в Deluxe Paint в режиме 13H и было бы неудобно, если бы в самой игре пропорции пикселя были бы другие.
речь про Doom пошла, потому что вы сказали, что modex для 386/486 не актуален уже был. Ну а Doom собственно только на 486-м и работал более менее сносно. Хотя некоторые и на 386-м играли.
Еще раз: говоря "mode-x" я подразумеваю любой планарный режим VGA, а уж Y, там или Q, это вопрос как мне кажется вторичный.
Так вот. Как вы правильно подметили - аппаратный бэкбуфер, как и возможность понизить детализацию удвоив или учетверив пиксели также за счет аппаратной фичи, были необходимы и Wolf3d, и Doom. Чем собственно и опровергли свое раннее утверждение о малом смысле использования x-mode на 386/486.
я же сказал, что утрировал. так-то мой первый пост был как раз в защиту фичи x-mode :) я больше имел в виду не столько 386\486, сколько svga+vbe. ну и мне кажется это все-таки разные эпохи, и wolf и doom независимо от процессора оптимизировали под оригинальный vga, поэтому планарный режим - единственный вариант. В том же Heretic через год после Doom - решили сделать уже по-другому. Лучший подход был в Duke Nukem 3D - там можно было выбрать и 13H и modeX и VBE даже для 320х200, что иногда позволяло добиться хорошего прироста.
P.S. Ты так пишешь, как будто у нас тобой какой-то серьезный спор. Я просто хотел дополнить, что запись 4 байтов за раз - тоже важная фича x-mode. все что я писал - не спора ради, а для более полной информации.
Ну, а чем не серьёзный спор? :) Вон, товарищ хочет нас на железо уровня 90-х пересадить (всерьёз) https://habr.com/ru/articles/1027184/
8-битного z-буфера, говорит, хватит на всех!
Так может и modex снова станет актуальным? :)
ок, понял что ты имел в виду сплошной цвет, так работает.
ну не обязательно сплошной. Если например в EAX будет значение 04030201h, и маска установлена в 01 (запись в нулевой план) и мы сделаем
mov A000:0, eax
то оно так и запишется, как если бы мы сделали
mov A000:0, 1 (пиксель 0)
mov A000:1, 2 (пиксель 4)
mov A000:2, 3 (пиксель 8)
mov A000:3, 4 (пиксель 12).
В статье в части blur как раз и описывается это, что буфер я копирую в видеопамять 32-битной операцией.
Remoded: разбираем демо-эффекты (часть 1)