FPGA всё чаще используют, чтобы вернуть к жизни винтажные видеоигровые платформы. Мы в Beeline Cloud решили поговорить о примечательных начинаниях такого рода и подобрали несколько проектов, включая реализацию игры «Жизнь».

FPGA играет в «Жизнь»
В 1940 годах математики Станислав Улам и Джон фон Нейман работали в Лос-Аламосской национальной лаборатории, где изучали вопросы создания самовоспроизводящихся машин и разработали первую клеточно-автоматную систему. Их исследования породили десятки других научных проектов, но за пределы академии концепция вышла только в 1970-х — тогда математик Джон Конвей представил клеточно-автоматную модель, известную как игра «Жизнь». Она имитировала процессы рождения, выживания и смерти колонии клеток по определенным правилам. Игра «Жизнь» не только занятна для просмотра, к ней обращаются учёные из областей математики, биологии и даже психологии. Например, американский философ Дэниел Деннет использовал игру «Жизнь», чтобы проиллюстрировать возможную эволюцию философских конструктов — сознания и свободы воли.
А в 2020 году американский инженер Питер Хизалев, фанат винтажных ОС и любитель ретроустройств, представил реализацию «Жизни» на базе FPGA Arty A7-100T. Он использовал Chisel и Verilog, а также набор библиотек Scala, позволяющий проектировать аппаратные абстракции высокого уровня.
Как правило, программная реализация игры жизнь подразумевает последовательный обход клеток. В аппаратной же реализации общее состояние сетки вычисляется для всех клеток одновременно на каждый такт. В архитектуре Хизалева каждый модуль клетки получает входные данные трёх типов и анализирует состояние восьми ячеек вокруг неё. При этом сами клетки хранятся в двумерном массиве — где количество строк и столбцов представляет собой параметры сетки.
Многим участникам ИТ-сообщества проект напомнил университетские практические и лабораторные работы с FPGA. Хотя некоторые и отметили, что упор на Verilog в подобных проектах излишен — писать в нём абстракции затруднительно. Вместо него можно, к примеру, применять функциональные языки по типу Clash или nMigen ввиду возможностей метапрограммирования и параметризации.
Разработчик также поделился результатами запущенных игр. На этой замедленной гифке можно проследить несколько десятков последовательных трансформаций клеток. Ещё автор проекта устроил своеобразный стресс-тест с обновлением сотни миллионов ячеек в секунду. Благодаря этому эксперименту получился занимательный (хоть и крайне ресурсоёмкий для генерации) узор из огромного числа «замёрзших» поколений клеток.
Старый новый цифровой друг
Game Bub — это эмулятор известных портативных игровых консолей от японской компании, построенный на FPGA. Устройство способно воспроизводить оригинальные картриджи, модифицированные и неофициальные игры, написанные силами пользователей-энтузиастов. Развитием Game Bub вот уже на протяжении четырёх лет занимается Илай Липсиц, инженер-разработчик и любитель олдскульных игровых приставок. В прошлом он уже писал программные эмуляторы NES (на языках Go и Rust), но в случае с Game Bub решил обратиться к аппаратной реализации. Причина проста — возможность работать с уже существующей периферией и картриджами.
Первая сборка Game Bub заняла у разработчика порядка четырех месяцев. Он намеревался добиться достоверного воспроизведения существующих игровых проектов. Чтобы реализовать задумку, Липсиц выбрал open source-платформу Pynq-Z2 от AMD — в том числе благодаря поддержке программного пакета Vivado для проектирования схем. Когда первый прототип был готов, Липсиц продолжил дорабатывать Game Bub, но уже на базе FPGA XC7A100T.
Возникающие в процессе сложности несколько раз ставили автора в тупик — он даже подумывал забросить проект из-за нехватки навыков в электротехнике. Однако в 2025 году реализация все же вышла в свет. Он добавил HDMI-порт для вывода изображения на экран, а также вибромоторы. В то же время консоль стала автономной и портативной. В новой сборке питание было реализовано от аккумулятора, а не сменных батареек. Что касается графического интерфейса, за основу Липсиц взял открытый фреймворк Slint (со своим предметно-ориентированным языком). Он написал виджеты для клавишного управления и переключения между меню.

В августе этого года разработчик запустил краудфандинговый проект по выпуску готовых моделей портативной Game Bub. А в сентябре анонсировал браузерный инструмент для обновления прошивки — как официальной, так и кастомной. Исходный код Game Bub распространяется по лицензии GPLv3, а STL-файлы, схемы и макеты печатных плат — по CC-BY-SA 4.0. Архитектура Game Bub описана на GitHub.
FPGA размером с кредитку
Проект 486Tang воспроизводит опыт работы с 486-м компьютером на компактной Tang Console FPGA совместимостью с DOS. Сама по себе разработка достаточно свежая, поскольку автор представил её в середине сентября этого года. Он портировал на FPGA ядро ao486 MiSTer, но ему пришлось внести несколько изменений — например, использовать SDRAM в качестве основной памяти. Дело в том, что MiSTer использует DDR3, но во времена 486-х стандарт DDR, очевидно, не существовал.
В своем блоге автор также поделился процессом оптимизации производительности 486Tang и решениями, которые он принял в этом ключе. Инструкции по запуску, первичной настройке и установке игр собраны в README-файле репозитория.
Что интересно, автор проекта — фанат электроники и «винтажных» устройств. Неудивительно, что он является создателем и других открытых проектов на базе FPGA. Например, NESTang, воспроизводящей опыт игры на консолях NES. Проект предлагает 720p HDMI выход с аудио, загрузку данных с MicroSD с интуитивно понятным меню.
Ретроконсоли на других платформах
В прошлом году программист и инженер Бенджамин Тодд, проживающий в Токио, представил портативную консоль Retro-Lite-CM5. Цель проекта — создать мощное устройство, способное эмулировать игры японских консолей прошлых поколений. Чтобы реализовать задумку, автор не стал брать за основу Raspberry Pi 4 и использовал более производительный вычислительный модуль RK3588s с 64-битным ARMv8-процессором.
По словам разработчика, консоль предлагает «современный игровой опыт» и оснащена встроенными модулями PCIe Wi-Fi 6 и Bluetooth 5.2, а также IPS-экраном с разрешением 720p. Из интерфейсов присутствуют DisplayPort (реализованный через USB Type-C), USB 3.0 и HDMI 2.1. В качестве операционной системы используется Armbian. Хотя пользователи могут настроить стандартное Linux-окружение или использовать опенсорсный фронтенд для просмотра и запуска игр ES-DE.
Все исходники — модели корпуса для 3D-печати, списки компонентов и файлы для производства печатных плат — опубликованы в открытом репозитории.

Другой проект по теме представил анонимный разработчик в феврале 2025 года. Он поделился прототипом портативной консоли под названием Pi-Deck-5. В основе устройства лежит Raspberry Pi 5 с портами под Ethernet и USB. Энтузиаст проектировал устройство для себя, а только потом решил поделиться наработками с сообществом, поэтому некоторые решения или не реализованы, или остаются «сырыми». В целом разработчик хотел бы упростить сборку, однако у него пока нет свободного времени. Код и список компонентов выложены на GitHub, однако автор, к сожалению, не указал лицензию. Под устройство можно подобрать разнообразный софт для эмуляции игровых платформ. Например, есть открытый дистрибутив Linux под названием Lakka — с его помощью можно превратить устройство в эмулятор классических видеоигр.
Еще один интересный проект в этой области от шведского инженера Реналдаса Зёмы называется tiny-atari-2600. Его цель — построить компьютер на одном чипе, используя открытое программное обеспечение, а также Open Source PDK. В основу дизайна легла реализация Atari 2600 на FPGA от британского разработчика Лори Гриффитса, но с модификациями — например, добавлен узел для преобразования NTSC-сигнала (15 кГц) в VGA-сигнал (30 кГц).
Beeline Cloud — secure cloud provider. Разрабатываем облачные решения, чтобы вы предоставляли клиентам лучшие сервисы.
Еще пара подборок для дополнительного чтения:
Полувековая ОС, текстовый браузер и программа-корректор — рассказываем про ретрософт с многолетней поддержкой. В подборку «вечно молодых» проектов, которые развиваются на протяжении десятков лет, вошли: текстовый браузер из 90-х, полувековая операционка и система автоматической проверки орфографии.
Занимательные исследования промпт-атак — разбираем исследования, посвященные способам обхода фильтров в LLM. Атаку проводят, например, с помощью ASCII-изображений, задавая вопросы о котах или добавив юмора в промпт.
GitOps для начинающих — от открытых материалов для чтения с примерами — к open source-инструментам по теме. Еще одна подборка, в которой мы собрали вводные статьи, гайды и open source-решения для желающих погрузиться в тему GitOps.
Экспериментальный селф-хостинг — материалы для начинающих, личный опыт, DIY-гайды и домашние лабы. Здесь вы найдете разнообразные материалы для тех, кто хотел бы начать знакомство с темой самостоятельного хостинга: от книг с базовыми терминами и концепциями до личного опыта энтузиастов, которые решают практические задачи, строят домашние лаборатории и делятся находками.