Энтузиаст ретро-компьютеров модифицировал VBIOS винтажной видеокарты S3 ViRGE DX (4 МБ, середина 1990-х), встроив в прошивку версию Snake — той самой змейки, в которую когда-то играли на простых телефонах. Миниатюрная игра запускается прямо при загрузке системы, а после выхода из неё компьютер продолжает старт в обычном режиме. Автор YouTube-канала Bits und Bolts завершил модификацию, взломав VBIOS и внедрив Snake 512 — открытую версию игры (репозиторий mfurga/snake-512 на GitHub), сжатую до 512 байт и написанную на ассемблере x86 для работы в реальном режиме. Материал опубликован Tom's Hardware 23 мая 2026 года в 12:30 МСК.

Snake gaming, stock photo. Источник изображения - Getty ImagesSnake gaming, stock photo. Источник изображения - Getty Images

Подготовка: динамический экран загрузки

Прежде чем взяться за внедрение Snake 512, Bits und Bolts решил сначала прокачать сам VBIOS S3 ViRGE — добавил динамический текстовый экран загрузки, отображающий фактическую тактовую частоту GPU. Эта работа опирается на предыдущие эксперименты автора, где он встроил графический сплеш-скрин, и занимает примерно первую половину видео. Только разобравшись с заставкой, техютубер переходит к главному — встраиванию игры.

Почему именно Snake 512

С отметки 10 минут 43 секунды начинается основное действие: внедрение Snake 512 в BIOS видеокарты. Эта реализация изначально создавалась так, чтобы поместиться в 512 байт загрузочного сектора диска и запускаться в реальном режиме x86 — без операционной системы и сторонних библиотек. Bits und Bolts посчитал, что независимый от ОС ассемблерный код идеально подходит для встраивания в прошивку видеокарты: нужны лишь BIOS-прерывания, доступные на любой PC-совместимой машине.

Конвертация кода через Claude Code

Просто скопировать ассемблерный исходник из GitHub и вставить его в BIOS не получится — нужен готовый машинный код в шестнадцатеричном виде, выровненный для целевого адреса. Поэтому энтузиаст обратился к Claude Code: ИИ-агент прокомментировал исходник со страницы mfurga/snake-512 и преобразовал его в шестнадцатеричный формат, пригодный для прямой инъекции в VBIOS.

Патчинг прошивки в Ghidra

Когда hex-дамп был готов, Bits und Bolts открыл прошивку S3 ViRGE в Ghidra — фреймворке для обратной разработки, изначально созданном Агентством национальной безопасности (NSA) США. Сегодня инструмент бесплатен, имеет открытый исходный код и доступен на GitHub.

Дальнейшие шаги были такими: нашёл пустой участок целевого файла сразу после экрана загрузки и вставил туда новый код. Блок потребовал патчинга — нужно было привязать его к потоку исполнения, иначе игра просто игнорировалась бы при старте. После этого пришлось пересчитать и поправить контрольную сумму прошивки — без этого BIOS отказался бы загружаться, посчитав себя повреждённым.

Как теперь выглядит загрузка

Итоговая последовательность работы модифицированного VBIOS:

  • Подаётся питание на систему.
  • Отображается модифицированный графический экран загрузки.
  • Появляется приглашение: нажать N — запустить Snake, Esc — пропустить.
  • Приглашение имеет таймаут: если пользователь ничего не нажал, загрузка продолжается автоматически.
  • По N запускается змейка.
  • По Esc система считывает и показывает реальную тактовую частоту GPU.
  • После выхода из игры или нажатия Esc загрузка ПК продолжается штатно.

Стоит учитывать оговорки: USB-клавиатуры в этой реализации Snake 512 не работают — поддерживается только PS/2-ввод через стандартные прерывания BIOS. Звука тоже нет.

Тонкая настройка: палитра VGA

Когда всё заработало как задумано, Bits und Bolts вернулся к Ghidra для тонкой настройки — редактирования цветов Snake 512. Энтузиаст заранее пометил в коде участки, где определены цвета границы поля, фона, головы змейки, её тела и других элементов. Эти значения были заменены на оттенки из палитры VGA с помощью шестнадцатеричных кодов соответствующих строк и столбцов. В финале видео, когда всё работает и раскрашено по замыслу, техютубер шутит: «Кто сказал, что ViRGE не умеет играть в игры?»

Предыдущие приключения Bits und Bolts

В прошлый раз мы писали о Bits und Bolts, когда он модифицировал VBIOS S3 ViRGE DX, чтобы отключить «pedestal bit» — из-за этого бита чёрный цвет на S3 отображался как тёмно-серый: производитель намеренно поднимал уровень чёрного, чтобы изображение не выглядело слишком мрачно на старых NTSC-мониторах с ЭЛТ. Ранее мы также сообщали о порте Doom, выпущенном в качестве полезной нагрузки Coreboot BIOS — он, разумеется, слишком велик, чтобы поместиться непосредственно внутри прошивки видеокарты, как это удалось со Snake 512.