То лето далекого 1997 года в маленьком сибирском городке выдалось очень жарким. Шла самая его середина, когда весь азарт длинных школьных каникул успел сойти — бегать по стройкам и купаться в речке надоело, но до нового учебного года было еще далеко.
И пока утопающий в зелени городок тихо изнывал от летней жары, мы изнывали от скуки — трем юным оболтусам, слонявщимся по его улицам было абсолютно нечем заняться. Хотя в тот год случилось много всякого интересного, рассказ пойдет про самое важное событие, серьезно повлиявшее на дальнейшую судьбу и карьеру автора.
Потому что в то жаркое лето я познакомился с демосценой.

❯ История
Слоняясь жарким летом по улицам сибирского городка, мы совершенно случайно набрели на новое для тех мест заведение — компьютерный клуб:
мрачный подвал, старые побитые PC и Doom, Duke Nukem, первый WarCraft на мониторах и «где вы были с мая по август» — такая строчка в биографии есть практически у всех представителей моего поколения.
Хотя некоторые конечно скрывают, до сих пор.
Так бы и закончилась эта история, не успев начаться, на одних только видеоиграх и потерянной молодости, но к счастью (или нет) в том клубе работал ночным администратором один интересный персонаж, назовем его Виталием.
Виталик носил косуху, патлы (неслабый вызов социуму провинциального городка 90х), любил пиво, компьютеры и хеви метал.
А еще он умел доставать всякий разный софт.
Интернета тогда еще не было, по крайней мере у такой школоты как автор, поэтому сам факт наличия залежей свежего вареза софта вызывал определенное восхищение.
Как-то раз Виталик подозвал нас к своему админскому компу и со словами «зацените пацаны что бывает на свете» запустил какую-то непонятную программу.
Все было на английском, которого никто из нас тогда не знал, по экрану бежали какие-то непонятные надписи, все мигало и переливалось.
А затем началось настоящее представление:
То что мы увидели в тот день на экране по уровню исполнения превосходило все видеоигры тех лет и даже некоторые киношные спецэффекты.
Без аппаратного ускорения, на дохлом, почти убитом железе — одной только программной логикой, мастера сцены умудрялись выдавать потрясающие воображение эффекты.
Это были времена, когда ради производительности приходилось уменьшать разрешение даже в спрайтовом Doom, а для запуска Duke Nukem был нужен как минимум первый пентиум, за который всегда была драка очередь.
А тут вращающиеся трехмерные кубы и ленты Мебиуса, на 386м!
Именно после просмотра работ демосцены поменялось мое отношение к компьютерам и программированию — я захотел делать такое же.
С тех самых лет, пока одноклассники резались по сети в очередную стрелялку или стратегию, автор резался в компиляторы и линковщики.
Да простят меня любители Amiga, но рассказ пойдет про период демосцены и работы, которые повлияли в первую очередь лично на автора. Никакой Амиги в пешей доступности у меня тогда не было, зато были 386/486 и первые пентиумы с DOS и Windows.
Поэтому показываю в работе это:
Windows 95, которая также стояла на клубных компьютерах тех лет не отличалась стабильностью, тормозила как могла и имела проблемы с совместимостью. Поэтому все игры и демо запускались строго под MS-DOS.
Так что именно DOS-окружение мы будем сейчас эмулировать.
Приготовьтесь, ибо дальше вас ждет очень мощный заряд ностальгии по тем сказочным временам.
❯ Эмулируя ностальгию
Изначальный план был посетить с тортиком и коробкой дискет логово сектантов знаменитый «Ленинградский Компьютерный Клуб», чтобы запустить и отснять все эти замечательные демо на реальном железе тех лет, коего там в рабочем состоянии весьма немало.
Но решил, что для широкой аудитории будет интереснее вариант с эмуляцией — все же клуб такой один, а своими силами достать работающий компьютер из 90х стало не так просто.
Так что эмулируем.
86Box
И поможет нам в нелегком деле эмуляции компьютерных древностей этот замечательный проект:
86Box is a low level x86 emulator that runs older operating systems and software designed for IBM PC systems and compatibles from 1981 through fairly recent system designs based on the PCI bus.
Проект очень известный и популярный среди широких масс, поэтому готовые сборки можно найти практически под любую операционную систему и окружение.
Официальные релизы выкладываются на Github, где вы найдете версии для Linux, MacOS и Windows, также 86Box присутствует в виде готового пакета практически во всех дистрибутивах линукса и *BSD.
Я использовал версию 5.3 под FreeBSD:
Кстати под FreeBSD есть дурацкий прикол с именованием пакета, заставивший вначале собрать эмулятор целиком из исходников:
название зачем-то сделали с буквой «B» в верхнем регистре, поэтому поиском по пакетам ничего не находилось.
Но не переживайте, это единственная специфика FreeBSD, упомянутая в этой статье и все остальное, описанное ниже применимо для любой ОС, на которой работает эмулятор 86Box.
❯ Виртуальное железо
Наверное сейчас открою ящик Пандоры и получу в свой адрес сотни лучей ненависти от жен, не понимающих почему их благоверный залипает в компьютере вторую неделю, месяц, год, но тем не менее:
86Box — фактически конструктор-тамагочи для любителей старого железа, поскольку поддерживает невообразимое разнообразие оборудования.
Обычно эмулируется один-два, максимум десяток различных устройств, чего вполне хватает для работы с виртуальными ОС. Но ребята из 86Box пошли дальше — эмулируются натурально сотни разнообразных железок.
Причем при выборе неправильной комбинации оборудования, 86Box ведет себя точно также как реальный компьютер 90-х:
пищит спикером, глючит и перезагружается
Впрочем смотрите сами, вот так например выглядят поддерживаемые сокеты:
А так эмулируемые материнские платы, причем наборы разные для разных сокетов:
Но это еще не все, ниже список эмулируемых.. контроллеров дисков:
Все модели (кроме универсальных) — вполне реальные, так например выглядит контроллер «Western Digital WDXT-GEN», присутствующий в списке:
Чтобы окончательно добить нежную психику читателей, показываю как выглядит набор поддерживаемых дисков:
Фактически столь богатый выбор позволяет снова поиграть в замечательную игру времен школьной молодости автора:
воткни новую железку в компьютер и посмотри что произойдет.
Только на этот раз будет без запаха сгоревшей электроники.
Но тамагочи-эмулятора для бородатых инженеров мне показалось мало, поэтому сейчас будет еще больше ностальгических слез:
показываю установку MS-DOS 6.22 — той самой последней «настоящей» версии, еще не прибитой гвоздями к Windows.
На версии 7.0, включенной в состав Windows сказка закончилась и DOS из операционной системы стал превращаться в черное окно с терминалом.
❯ Ставим MS-DOS
Разумеется давно существует куча готовых «васянских» сборок и образы загрузочных дискет с DOS самого разнообразного наполнения, взять можно например отсюда.
Но ради ностальгии решил все же описать шаги по установке с нуля, чтобы вы могли своими глазами узреть это:
Так что раздел ниже — для самых отъявленных фанатов кинематографа, остальные могут прокрутить вниз до запуска самих демо.
Упреждая возможные вопросы на тему вареза лицензионности:
На сегодняшний день все старые версии MS-DOS официально считаются «abandonware» — заброшенным ПО, дистрибутивы которого находятся в свободном доступе.
Поэтому никаких юридических последствий от «неправомерного использования» не будет.
Автор использовал оригинальную английскую версию Microsoft MS-DOS 6.22, взяв образ дискет отсюда. Необходимо скачать три IMG-файла с образами оригинальных дискет, первый из которых является загрузочным а остальные два потребуются в процессе установки.
Подготовка виртуальной машины
Запускаем эмулятор 86Box, нажимаем большую кнопку «New Machine», задаем имя и в диалоге настройки выбираем следующую конфигурацию (первая вкладка «Machine»):
На вкладке «Video» выбираем:

Дальше, вкладка «Storage controllers»:

Затем там же ниже:

На вкладке «Hard disks» нажимаем «New» и задаем следующие параметры:
На следующей вкладке «Floppy & CD-ROM drives» переключаем тип флоппи с 360К на 1.44M и включаем устройство CD-ROM с интерфейсом ATAPI:
Сохраняем настройку, запускаем эмулируемую машину и.. получаем мощный заряд ностальгии:
Жмем Del и попадаем в самое известное компьютерное меню на свете:
Что делать дальше думаю известно любому олдфагу, поэтому описание ниже специально для юных телезрителей:
Переходим в раздел «IDE HDD AUTO DETECTION» и нажимаем 1, затем выходим из раздела и нажимаем SAVE & EXIT SETUP»
Затем надо открыть раздел «BIOS FEATURES SETUP» и выставить значение поля «Boot Sequence» в A,C вместо С,A — для того чтобы первым для загрузки выбирался флоппи, а не жесткий диск:
Теперь при запуске должен обнаруживаться наш виртуальный диск под буквой С:

Теперь в меню «Media→Floppy 1→Existing image…» выбираем образ первой дискеты из установочного набора MS-DOS 6.22 и перезагружаем наш виртуальный PC:

Теперь при запуске должно появиться сообщение «Starting MS-DOS…»
Через какое-то время появится диалог установки, ключевые элементы которого дожили до наших дней и сохранились в современных версиях инсталлятора Windows:

Поскольку это виртуальная машина с единственным диском, думать особо не надо — просто жмете Enter, как в школьные годы.
Инсталлятор попросит перезагрузиться и если вы правильно выбрали в биосе последовательность A,C (см. выше), после перезагрузки запустится форматирование:

А еще через несколько скучных экранов наконец начнется установка:

В какой-то момент инсталлятор попросит вставить вторую а затем и третью дискеты:

После финальной перезагрузки вы наконец увидите ту самую «страшную черную консоль»:

Только на этот раз не в отдельном окне с крестиком в углу, а целиком на экране.
❯ История с CD-ROM
Самые крутые и красивые демо внезапно оказались большими (по тогдашним меркам) и на дискету уже не влезали, что усложнило задачу их переброски внутрь работающего эмулятора с DOS.
Но поскольку 86Box поддерживает отображение каталогов хоста в виде образа виртуального CD-ROM-диска, было решено это использовать.
Для чего было оставалось сделать только самую малость:
установить драйвер CD-ROM в MS-DOS.
На самом деле для MS-DOS давно есть даже поддержка TCP/IP и можно без особых проблем вывести старушку в интернет, но размер статьи не резиновый, поэтому опишу сей интересный процесс как-нибудь в другой раз.
Скачиваем образ дискеты с драйвером (вторая ссылка сверху), подключаем в эмуляторе через меню «Media→Floppy 1»:

Переходим на диск A: где должно быть вот такое содержимое:

Запускаем SETUP.BAT (не SETUP.EXE!):

Перезагружаем систему, теперь при запуске будет происходить инициализация драйвера и добавится новый том с буквой D: , ответственной за наш виртуальный CD-ROM:

Следующим шагом в меню «Media→CD-ROM 1» выбираем «Folder…» и указываем путь к каталогу на хосте, который будет эмулироваться для MS-DOS в виде виртуального CD-ROM:

Стоит напомнить читателям про кучу ограничений файловых систем тех лет:
длина имени, кодировки, количество вложенных каталогов, размер файлов и так далее.
Так что подключаемый каталог должен содержать только то, что вы собираетесь перебрасывать в MS-DOS, не стоит подключать домашний каталог целиком или папку «Мои документы».
Кстати подключается каталог в режиме «только для чтения», поэтому записать что-либо со стороны DOS таким способом не выйдет.
Так выглядит содержимое подключенного каталога с демками:

Теперь наконец можно запускать лучшие работы из золотого фонда демосцены. Лично и своими руками.
Norton Commander
Работа в голой консоли (особенно после нового Mac) может показаться не очень комфортной, поэтому даже в те далекие годы ушлые юзеры нормальные пользователи использовали специальный файловый менеджер — Norton Commander.
Из которого затем вырастут всем известные Far Manager и Midnight Commander.
Norton Commander ныне также считается заброшенным, поэтому его дистрибутивы спокойно находятся в интернете. Классическую версию 5.5 под MS-DOS можно взять тут.
Так выглядит процесс установки:
Теперь наконец переходим к самим демо.
❯ Second Reality
https://www.pouet.net/prod.php?which=63
Первое место на Assembly 1993, тут запись в виде ролика.
Из отзывов:
I'd almost call it the godfather of all demo's, revolutionary for its time.
Наверное самая знаменитая работа команды Future Crew, созданная в далеком 1993 м году, которая до сих пор находится в топе демосцены всех времен. Именно с этой работы началось мое знакомство с демосценой.
Первые кадры заставки:

Скачиваем архив и распаковываем в ту самую папку, которую мы монтировали в эмулируемую машину как виртуальный CD-ROM.
Со стороны запущенной машины с DOS должно выглядеть как-то так:

Наконец вводим заветное SECOND.EXE и.. немедленно обламываемся:
Дело в том, что в MS-DOS существовало жесткое разделение памяти по уровням, конкретно «Conventional Memory», на которую ссылается сообщение выше это первые 640Кб.
Запускаем команду mem и видим что какая-то сволочь действительно отъела память, причем из тех самых сладких первых 640Кб:

Виновник на чистой системе ровно один — драйвер CD-ROM, который мы устанавливали выше и чтобы решить проблему, необходимо сделать так чтобы он не занимал память.
Для чего надо немного поправить конфиг, конфиг для DOS да.
Вводим:
edit config.sys
Запустится знаменитый классический редактор Edit, который присутствует в операционных системах Microsoft до сих пор:
Надо привести содержимое файла к тому что показано на картинке выше, после чего перезапустить систему.
После перезапуска команда mem выдаст уже совершенно другую картинку, материализовав целых 619Кб свободной памяти:
Теперь наконец можно запускать SECOND.EXE:

Конечно можно выбрать «No sound», но тем самым потеряется половина удовольствия от просмотра демо.
Так что я очень советую зайти в раздел «Sound» в настройках эмулируемой машины и добавить звуковую карту:

Затем выставить карте вот такие настройки:

Чтобы вы понимали и осознали момент, вот так выглядел настоящий «гусь» — Gravis UltraSound:
Музыкальное сопровождение вызовет полный восторг даже у современного искушенного слушателя, что уж говорить про те годы.
После выбора звуковой карты наконец запустится сама демка и вы увидите лучшую для 93 года демонстрацию возможностей программистов.
❯ Unreal
https://www.pouet.net/prod.php?which=1274
Первое место на Assembly 1992, запись в виде ролика.
Из отзывов:
This must be the first megademo I'd ever seen on the PC... runs fine on a 386 and it's got awesome gfx, killer music for its time and it's the next best thing for future crew after Second Reality. A must have.
Вторая по известности работа знаменитых сценеров Future Crew, именно ее в запущенном виде можно увидеть на заглавной картинке к статье.
Первые кадры:

Тут все просто, выбираем «Gravis Ultrasound», прозванный в народе «гусем» и жмем Enter:

Сразу после выбора звуковой карты запустится представление.
Это также одна из первых увиденных мною демок, которая будучи запущенной на 486-м производила неизгладимое впечатление.
❯ Stars: Wonders of the World
https://www.pouet.net/prod.php?which=301
Первое место на Assembly 1995, полная запись в виде ролика.
Из отзывов:
great dzgn! ra gfx, moby msx.! .. ahh.. nooon, had the power. the demo was 1st on the charts for a 2 yrs, as i rmber :)
Как видите уровень «l33t speak» зашкаливает, поскольку это работа известного сценера NooN с такими же отбитыми фанатами — они все на этом языке разговаривают ;)
Знаменитая золотая оса:
Несмотря на весьма скромные системные требования:

все же пришлось немного увеличить общий размер памяти — до 8Мб, чтобы не выгружать резидентов:

Дальше запускаем STARS.EXE и наслаждаемся шоу.
Думаю уже на первой минуте просмотра станет понятно почему и за что работе выдали первое место.
❯ Inside
https://www.pouet.net/prod.php?which=74
Первое место на The Gathering 1996, полная запись в виде ролика.
Из отзывов:
how to define "cool"? well, this monster is really a "cool" demo! even shaft would be proud of it.
Еще одна классическая работа сценеров из группы CNCD, оставивших заметный след в виде огромного количества работ, начиная еще с Amiga.
Первые кадры:
Это демо требует более мощного железа и на 486-м запускаться отказывается:

Поэтому либо создаем новую виртуальную машину в эмуляторе, либо меняем настройку у существующей, произведя таким образом «апгрейд»:

Еще надо обновить звуковую карту, поскольку с «гусем» демо также работать отказывается. Выбираем «Sound Blaster 16» и выставляем настройки:
В обоих случаях повторять установку MS-DOS с нуля не надо, достаточно подключить созданный в прошлый раз образ диска.
Кстати примерно такой же апгрейд когда-то произошел и в реальности:
автор будучи школьником обновлял свой 486й на первый пентимум.
На лицо глубокие исторические параллели, хотя конечно из-за разных сокетов, выглядело это как замена одного системного блока на другой с перестановкой диска.
Но вернемся к демке.
С «Inside» есть еще одна существенная проблема:
тут есть отдельный конфигуратор для звуковой карты, который пишет настройку на диск.
А поскольку мы все это время запускали демки с виртуального CD-ROM — ничего сохранить конфигуратор не сможет, придется копировать каталог с демо на диск С: и запускать уже оттуда.
Также стоит удалить файл SOUND.CFG, который присутствует в оригинальном архиве с демо — на нем зачем-то поставили атрибут «только для чтения», отчего конфигуратор не может этот файл перезаписать.
Запускаем SETUP.EXE (тот самый конфигуратор) и выбираем из списка «Sound Blaster 16 driver»:

Дальше просто последовательно жмем Enter, в конце должно появиться сообщение, что конфигурация успешно сохранена:

Теперь наконец можно запускать, вводим INSIDE.EXE и наслаждаемся шедевром из 1996 года.
❯ Contrast
https://www.pouet.net/prod.php?which=72
Первое место на Saturne 1996, полная запись в виде ролика.
Из отзывов:
This demo along with Bomb/Impact Studios, changed single-handedly the PC demoscene. It was in France, same year, same party, both prods. None is better than the other, yet they are both very relevand. Constrast is an instant classic. It's worth paying attention to this production.
Да это тоже классика демосцены, работа именитой французской команды Oxygene [OXG], которая недавно отметила юбилей — 30 лет!
Не все так долго на свете живут, сколько эти парни присутствуют на сцене.
Первые кадры:

Эта работа также требует пентиум и не заработает на 486-м, поэтому используем конфигурацию, созданную для предыдущей демо (см. выше).
Запускаем CONTRAST.EXE, появится меню выбора звуковой карты, где выбираем «Sound Blaster 16»:

Сразу после выбора карты запустится демо, которое очень рекомендую досмотреть до конца — авторы приберегли самые крутые эффекты на конец представления.
Не забывайте утирать слезы восторга при просмотре, поскольку на 1996й год сопоставимая графика была лишь в Голливуде.
❯ Сцена мертва?
Существует распространенное мнение, что «демосцена мертва», «ее лучшие годы давно прошли» и новых эпических работ больше не будет.
Ну что ж, мнение вполне обоснованное, тем более что автор и сам его разделял, пока не увидел это.
Area 5150 by CRTC & Hornet
https://www.pouet.net/prod.php?which=91938
Работа 2022(!) года, занявшая первое место на Evoke 2022 и очень быстро вставшая на один уровень с золотой классикой демосцены, рядом с «Second Reality» и «Crystal Dream 2»:

Только вдумайтесь в эти требования:
IBM PC, CGA, 4.77 MHz 8088, hard drive
Все это на сегодняшний день какой-то невероятный винтаж, железо из 1981 года (старше автора), CGA-монитор с 16 цветами выглядел как-то так:
И вот на таком музейном экспонате авторы умудрились закодировать это, причем относительно недавно — в 2022м году:
Из отзывов:
crazy good!
lot of content with surreal quality for the platform limitations wow!!
incredible (Did...did someone already dare to tell them there's EGA nowadays?)
Jesus Bitshifting Christ, this isn't even funny anymore.
Fantastic!!! You have done the impossible!
Cамый частый вопрос к создателям (помимо обвинений в колдовстве) был «как такое вообще возможно». Автор точно также недоумевает и несмотря на весь свой опыт — не имеет ни малейшего представления как это вообще работает.
Теперь о плохом и печальном:
чтобы запустить демо, придется серьезно напрячься — эмулировать PC XT и запустить внутри MS-DOS 3.20.
Скромно молчу о варианте с запуском на реальном железе, поскольку сие будет совсем уж большой проблемой для современного обывателя.
Собираем виртуальную машину со следующими настройками:
На этот раз никаких CD-ROM и контроллеров дисков, только флоппи, только хардкор:

Не забываем выставить тип монитора как CGA:

Включаем оба дисковода, первый оставляем с форматом 360к — с него будет загружаться MS-DOS, у второго выставляем формат 720к:

720к нужен по той простой причине, что демо довольно жирное и на 360к не помещается.
А более современный 1.44M старый MS-DOS еще не поддерживал — в качестве исторической справки.
Образ MS-DOS 3.20 можно скачать тут, автор использовал версию для компьютеров Olivetti, про которые тоже стоит как-нибудь рассказать.
Следующий головоломный этап — пробросить демо на эмулируемый компьютер 1981 года.
С этой задачей поможет пакет GNU Mtools, про который уже как-то рассказывал. Пакет весьма известный, поэтому скорее всего будет доступен и в вашей системе под одним и тем же названием mtools.
Скачиваем архив с демо и распаковываем, затем создаем новый пустой образ дискеты на 720Кб:
mformat -f 720 -C -i ./floppy.img
Копируем внутрь образа все файлы демки (их довольно много):
mcopy -i floppy.img ./area/* ::
Дальше запускаем виртуальный PC XT и с помощью меню «Media» вставляем в первый дисковод загрузочный образ MS-DOS 3.20, а во второй — только что созданный образ с демо:

Переходим на диск B: и наконец запускаем этот шедевр:

Дабы избежать ненужного негатива, сразу предупреждаю, что некоторые эффекты работают в эмуляторе 86Box неправильно:
Sorry we broke all your emulators again!
В частности будет заметно глючить программная рефлексия — отражения на воде, ближе к концу представления.
Чтобы в полной мере насладиться этой уникальной работой, стоит использовать более специализированный эмулятор MartyPC, специально созданный для максимально точной эмуляции компьютера PC XT.
Но это уже другая история, поэтому расскажу в следующий раз.
Автор: alex0x08
