Pull to refresh

Comments 21

Прочитав заголовок и текст до хабраката ждал большего =( Тема сисек игр для UEFI не раскрыта.
Проделана огромная работа. Написан ремейк тетриса в 64-битном UEFI-исполнении. В результате пришло понимание, что при нынешнем состоянии дел развлекательные приложения написать для UEFI нереально. Отрицательный результат – это тоже результат. Плохо вам? :)
Но вы же об этом в статье не написали. И даже не в этом дело, просто не оправдались ожидания, обидно =/
Наши ожидания от UEFI, по правде говоря, тоже не оправдались. Сожалею.
UFO just landed and posted this here
Хотелось бы в топкие прочитать про процесс написания тетриса. Инструменты, подходы, подводные камни и т.п.
Хороший вопрос! Нужно подумать, как его осветить.
До реализации UEFI-варианта тетриса, была написана и отлажена макетная 16-битная версия под DOS, с использованием TASM 3.0 и Turbo Debugger 2.51. Затем работы были продолжены на FASM 1.69.50, который поддерживает генерацию 64-битных UEFI-приложений, ассемблирование инструкций MMX, SSE-SSE5, AVX и всех современных функциональных расширений.

Для отладки использовались собственные процедуры, обеспечивающие точку останова в программе и визуализацию дампа регистров процессора и памяти. Основные работы проведены на плате ASUS Z87-K, использовался внешний модуль UEFI Shell.
На сайте утверждается что Tetris64 — первая и единственная игра, запускаемая в среде UEFI.

Ну… в 64-битной — возможно, но вообще она не первая, далеко не первая и далеко не единственная. Некоторые производители по какой-то абсолютно не понятной мне причине тоже решили этим позаниматься.

image
Скорее всего, это тоже 64-битная реализация. 32-битная реализация UEFI на сегодня большая редкость (она обнаружена, например, в ноутбуке ASUS T100T).

Не лавры первопроходцев интересуют в этом вопросе, а свободный доступ к файлам UEFI-приложений. Если окажется, что на сайте MSI можно получить исполняемый код в виде файла с расширением efi (или даже, если его можно извлечь из тела UEFI BIOS), то придется признать, что да, Tetris64 – не первая и не единственная.

P.S. Полезно было бы указать, на какой платформе MSI обнаружена означенная игра.
Да подходит вроде бы любая материнка с этим самым click bios. Конкретно на картинке вроде бы MSI P45 Platinum, для которой этот click bios вышел позже в виде бесплатного обновления. Игры, кстати, если я не ошибаюсь запускаются (ну раньше по крайней мере) с некоего MSI Extras CD так что если хотите их выдернуть то никто вам не мешает это сделать при наличии диска.
Кстати, ClickBIOS предполагает встраивание во FlashROM кода игрового приложения (сервисные службы MSI безмерно рады, они так прямо об этом и говорят: Q:I failed in the process of re-flash the BIOS, what can I do next? Please contact the MSI office and send the board back to the repair center. :).

Tetris64 – это полноценное UEFI-приложение, которое может быть встроено во FlashROM по усмотрению разработчиков платформы (в чем мы, лично, глубоко сомневаемся), а может быть выполнено с любого подходящего внешнего запоминающего устройства: USB-флешка, жесткий диск, флопик, абак, счеты, узелки на память ))
ClickBIOS предполагает встраивание во FlashROM кода игрового приложения


К сожалению подтвердить или опровергнуть это не могу так как сам не сталкивался, но опять же повторюсь — если судить по статьям то при выборе игры оно предлагает вставить в дисковод msi extras cd чтобы загрузить выбранную игру оттуда, тобишь сами исполняемые файлы не встроенны.
UFO just landed and posted this here
Хотелось бы расставить акценты в опубликованной статье, заметив, что это не блог разработчиков тетриса и не обзор примеров программирования, а анализ потенциальных графических возможностей UEFI:

  • Как уже сказано, использовать аппаратную акселерацию графики под UEFI невозможно, так как это потребует device-specific поддержки для каждой модели видео адаптера, а драйверной инфраструктуры, унифицирующей протокол доступа к акселератору под UEFI нет.
  • С другой стороны, есть старый, простой и универсальный метод, основанный на записи центральным процессором информации в видео память, но он не обеспечивает производительность, необходимую для динамических игр.

Одним из своих достижений мы считаем разработку технологии, позволяющей существенно ускорить запись в видео память, выполняемую центральным процессором без применения видео акселератора. Метод основан на программировании регистров MTRR (Memory Type and Range Registers) и переопределении статуса диапазона доступа к видеопамяти на Write Combining (WC). Атрибут WC позволяет группировать результаты нескольких шинных циклов записи в пакеты размером до 4 килобайт для отправки по шине PCI Express. Заметим, что подавляющее большинство реализаций Legacy BIOS и UEFI firmware устанавливает для видео памяти статус Uncacheable (UC), запрещающий оптимизировать порядок выполнения шинных циклов.

Таким образом, существует компромисс между производительностью и совместимостью, которого в большинстве случаев достаточно для 2D-графики и недостаточно для 3D-графики. Всем, кому это интересно, могут ознакомится с исходным кодом ряда наших программных продуктов.
подобный доступ через MTRR специально создавался для подобного/быстрого использования,

отлично что помогло.

используется так же на Linux и Windows, как минимум для графических драйверов

отлично что разбираетесь с UEFI!
Кстати, а почему бы вам не положить исходники на github? Авось и патчи присылать активнее будут :)
Не покидает ощущение, что у больного по фамилии UEFI гангрена. Уже и ByteCode частично ампутировали, а состояние не улучшается. Сомневаемся, что в госпитале github это лечат. В любом случае, спасибо за совет!
Нам подсказывают, что уже была попытка написать Тетрис под UEFI.

Вот только он не компилируется по причине отсутствия файла #include «piece.h». После внесения исправлений программа при запуске виснет (в двумерных массивах перепутаны X и Y).
Sign up to leave a comment.

Articles