Игра Яндекс Практикума
Игра Яндекс Практикума
Игра Яндекс Практикума

Энтузиаст написал «Змейку», работающую без BIOS, ОС или загрузчика

Новости

Инженер-энтузиаст разработал минималистичную версию «Змейки», способную запускаться напрямую, без BIOS, операционной системы и загрузчика. Проект занимает всего 114 Б и демонстрирует возможности работы с QEMU, включая решение проблем с графическими регистрами и параметрами эмуляции

244 открытий3К показов
Энтузиаст написал «Змейку», работающую без BIOS, ОС или загрузчика

Инженер-энтузиаст поделился впечатляющим проектом, в котором он написал версию знаменитой игры «Змейка», способную запускаться напрямую, без участия BIOS, операционной системы или загрузчика.

Эта минималистичная версия игры включает в себя весь код и даже процесс инициализации оборудования, занимая всего 114 Б.

Минимальный код и уникальная реализация

Ранее разработчик уже создавал «Змейку» объёмом в 58 Б. Однако тогда он столкнулся с критикой, мол подобное возможно лишь благодаря использованию BIOS и ОС.

В ответ на это он создал доказательство концепции (POC), которое работает абсолютно автономно — без использования BIOS, загрузчика или ОС.

Проект успешно запускается через эмулятор QEMU, демонстрируя возможность работы игры исключительно на аппаратной инициализации.

Проблемы с QEMU и icount

При создании этой версии игры энтузиаст столкнулся с проблемой, связанной с параметром icount в QEMU, который регулирует скорость эмуляции.

Изначально он планировал использовать значение icount=20, однако обнаружил, что текущая версия QEMU ограничивает его до 10.

Попытки изменить это значение привели к созданию PR для увеличения предела до 30, однако разработчики QEMU отметили, что icount уже устарел и предложили использовать плагин ips.

Решение проблемы с VGA

В процессе перехода на более новую версию QEMU (9.1.0) для использования плагина ips, разработчик обнаружил, что его программа перестала выводить изображение на экран.

После долгого анализа изменений между версиями, он нашёл причину — изменение в обработке графических регистров. После корректировки кода, добавив вывод 0xFF08 на порт 0x3CE, проблема была успешно решена и игра снова заработала.

Отметим, что данный проект является примером уникальной инженерной находчивости, а также показывает, как глубокое понимание работы низкоуровневого оборудования может приводить к созданию удивительных решений.

Следите за новыми постами
Следите за новыми постами по любимым темам
244 открытий3К показов