Запуск DOOM на собственном CPU: как энтузиаст создал процессор с нуля и портировал культовую игру
Две недели назад сообщество разработчиков вновь убедилось в справедливости поговорки: DOOM можно запустить на чём угодно. На этот раз игру портировали на процессор, спроектированный с нуля одним энтузиастом. Проект, опубликованный на Habr, вызвал огромный резонанс — видео с демонстрацией набрало нес

Две недели назад сообщество разработчиков вновь убедилось в справедливости поговорки: DOOM можно запустить на чём угодно. На этот раз игру портировали на процессор, спроектированный с нуля одним энтузиастом. Проект, опубликованный на Habr, вызвал огромный резонанс — видео с демонстрацией набрало несколько миллионов просмотров. Разработчик не просто адаптировал исходный код, а создал собственную архитектуру CPU на уровне логических вентилей, подключил периферию и развернул всё на FPGA для исполнения в реальном времени. До этого на машине запускали лишь простые программы вроде Pong и множества Мандельброта. Теперь же удалось запустить полноценную коммерческую игру, что стало важной вехой для проекта.
Как создавался собственный CPU Разработчик начал с проектирования процессора на уровне отдельных логических элементов. В отличие от готовых микроконтроллеров или FPGA-ядер, здесь каждый вентиль был спроектирован вручную. CPU получил собственный набор инструкций, регистры и систему памяти. Для демонстрации возможностей сначала запускали Pong — классическую аркадную игру, затем визуализацию множества Мандельброта. Эти программы не требовали высокой производительности и служили тестом базовой функциональности. Однако DOOM — это шутер от первого лица с трёхмерной графикой, сложной логикой и звуком. Для его запуска потребовалось не только адаптировать код, но и оптимизировать архитектуру процессора под задачи игры.
Предыстория и контекст DOOM, выпущенный id Software в 1993 году, считается революцией в жанре шутеров. Его исходный код был открыт в 1997 году, что породило бесчисленные порты на самые неожиданные устройства: от калькуляторов и принтеров до цифровых рамок и даже бактерий (в симуляции). Каждый новый порт — это вызов инженерной мысли. Запуск на собственном CPU отличается тем, что разработчик не использовал готовое «железо», а создал его сам. Это демонстрирует глубокое понимание как аппаратного, так и программного обеспечения. Проект также показывает, что даже современные игровые движки можно адаптировать под экстремально ограниченные ресурсы, если правильно спроектировать архитектуру.
Какие трудности возникли при портировании DOOM на кастомный процессор? Главная проблема — производительность. DOOM требует определённой частоты кадров и объёма памяти. Собственный CPU работал на значительно более низкой частоте, чем современные процессоры. Разработчику пришлось переписать критичные участки кода на ассемблере, оптимизировать рендеринг и управление памятью. Также потребовалось подключить внешнюю периферию: дисплей, клавиатуру и аудиовыход. В результате игра запустилась, но с заметными тормозами — как признаётся автор, «тормозной». Тем не менее, это полностью играбельная версия, что доказывает принципиальную возможность запуска сложных игр на кастомном «железе».
Технические подробности реализации Архитектура CPU была спроектирована на языке описания аппаратуры (HDL) и реализована на FPGA. Тактовая частота процессора не раскрывается, но, судя по производительности, она составляет единицы мегагерц. Память — статическая, объёмом несколько десятков килобайт. Для вывода графики использовался простой VGA-контроллер. Исходный код DOOM (версия Linux) был портирован с минимальными изменениями в логике, но с переписыванием низкоуровневых функций. Интересно, что разработчик не использовал готовое ядро soft-CPU (например, RISC-V), а создал собственный набор инструкций, что делает проект уникальным. Сравнение с другими портами: на микроконтроллерах DOOM работает быстрее, но там используются готовые Cortex-M с частотой сотни мегагерц. Здесь же — полностью ручная работа, что ценно с точки зрения обучения и инженерии.
Кого затронет этот проект В первую очередь — сообщество разработчиков FPGA и энтузиастов ретро-гейминга. Проект вдохновляет на создание собственных CPU и демонстрирует, что сложные игры можно запускать на самодельном «железе». Для индустрии это скорее академический интерес, но он подчёркивает важность открытого кода и модульности. Российские разработчики могут использовать этот опыт для создания образовательных курсов по цифровой логике и архитектуре компьютеров. Также проект показывает, что даже старые игры могут служить отличным тест-бенчем для новых аппаратных решений.
Что будет дальше Разработчик планирует оптимизировать CPU для более плавной работы DOOM и, возможно, запустить другие игры той эпохи, например, Wolfenstein 3D или Quake. Также идёт работа над улучшением инструментария для компиляции кода под собственную архитектуру. В перспективе проект может перерасти в платформу для обучения или даже в коммерческое ядро для встраиваемых систем. Судя по реакции сообщества, интерес к теме высок, и можно ожидать новых видео и статей с подробностями архитектуры.
Итог Запуск DOOM на собственном CPU — это впечатляющий инженерный подвиг, который доказывает, что границы возможного определяются только фантазией и упорством. Проект объединяет аппаратное и программное творчество, напоминая, что даже в эпоху мощных готовых решений есть место для создания чего-то с нуля. Следить за развитием этого проекта стоит всем, кто интересуется цифровой логикой, ретро-геймингом и DIY-электроникой.