Классика демосцены запускается в браузере — через перекомпиляцию в WebAssembly

· Технологии
Проект demoscene-recomp берёт оригинальный DOS-код легендарных демо начала 1990-х и команда за командой превращает его в WebAssembly, сохраняя точный тайминг тактов.

cover.svg

Энтузиаст собрал проект, который позволяет запускать прямо в браузере знаменитые демки эпохи DOS — без эмулятора в привычном смысле. Вместо того чтобы «проигрывать» старую программу поверх виртуальной машины, автор пошёл путём статической перекомпиляции: оригинальный код переводится в современный формат инструкция за инструкцией.

Как это устроено

Сначала демка прогоняется на эмуляторе x86, который фиксирует каждый блок кода, реально исполненный процессором за всё время работы. Эта запись переводится в язык C — те же самые инструкции, одна к одной, с точным потактовым таймингом эмулируемой машины. Затем C компилируется в WebAssembly вместе с моделями железа, к которому обращается демка: таймера, видеокарты VGA и звуковой платы Sound Blaster.

Результат сверяется с эмулятором событие за событием — каждое прерывание, каждое обращение к порту, каждый кадр происходят в тот же момент эмулируемого времени. Собственные загрузчики, музыкальные плееры и эффекты демок работают ровно так, как в 1992 и 1993 годах; смоделировано только аппаратное окружение.

Что можно посмотреть

В коллекции — Unreal и Second Reality от Future Crew, Crystal Dream II от Triton и Stars: Wonders of the World от группы NoooN. Все они в своё время были выпущены для демосцены бесплатно. Оригинальные файлы релизов подаются без изменений — именно в том виде, в каком демки читают их во время запуска.

Есть одна тонкость: демки работали на VGA с частотой 70 Гц, поэтому плавнее всего они выглядят на мониторе с 70 Гц — либо 140 Гц и выше. Посещения считаются анонимно, без IP-адресов, трекинговых cookie и идентификаторов.


Источник: Hacker News

Комментарии

Войдите, чтобы комментировать.

  • Пока нет комментариев.