Разработчик «вшил» первый уровень оригинального Doom в FPGA-микросхему

Основной код занял 666 строчек.

Сильван Лефебвр (Sylvain Lefebvre), создатель программы IceSL, рассказал в своём твиттере, как ему удалось запустить Doom 1993 года — точнее, первый уровень шутера от id Software — на аппаратном уровне.

Алгоритм «вшит» напрямую в программируемую логическую схему FPGA. Он постоянно запускает карту E1M1 и автоматически проходит её, а работает всё при помощи микросхемы Altera Cyclone V и платы памяти SDRAM, без центрального процессора. Картинка отображается в разрешении 320х200 с частотой обновления в 60 Гц.

Everything is described in a language I am working on: SDRAM controller, divider, BSP traversal, texture unit, etc.
Main renderer (w/o data) is 666 lines of code (!).
A great test case, made quite a few improvements, fixed some issues, learned a lot on CycloneV + Quartus.
(2/n) https://t.co/2VFUfaut3r
Разработчик «вшил» первый уровень оригинального Doom в FPGA-микросхему
Всё описано на языке, над которым я сейчас работаю: контроллер SDRAM, разделитель, обход дерева BSP, текстуры и т.д. Основной код рендерера без самих данных занял 666 строчек кода. Отличный тестовый случай, я уже кое-что улучшил и многому научился в работе с Cyclone V и Quartus.

Алгоритм Лефебвра использует данные из самих WAD-файлов игры — нужную информацию извлекает препроцессор прямо во время компиляции кода. Разработчик признал, что ему нужно ещё многое усовершенствовать и исправить ошибки — например, неверно отображающиеся текстуры — но своей работой он доволен.

Doom was released as I was learning how to code graphics. It was, and remains, an immense inspiration and motivation boost. I spent countless hours making levels, hacking the game and hex dumps of doom.exe / doom.wad. This was a good opportunity to dive back into it!
(9/n)
Doom вышел, когда я только учился, как писать код для графики. Он как был, так и остаётся для меня большим источником вдохновения и мотивации. Я потратил несчётное количество часов на создание уровней, взлом игры и hex-дампов doom.exe и doom.wad. Рад был снова к этому вернуться!
133
38 комментариев