Специалисты Kitten Labs запустили GTA: Vice City на Wi-Fi роутере TP-Link TL-WDR4900

Специалисты Kitten Labs в своём техническом блоге подробно рассказали, как они запустили GTA: Vice City на TP-Link TL-WDR4900 (это был долгий процесс с ошибками и переделками кода и железа). Wi-Fi роутер построен на базе ЦП NXP/Freescale QorIQ P1014, который представляет собой 32-разрядный процессор PowerPC e500v2 с 36-битным адресным пространством и работает в режиме big-endian.

Для запуска игры инженеры установили на сетевое устройство Debian Linux вместо OpenWrt и подключили внешний GPU AMD Radeon RX 570 (потом AMD Radeon HD 7470) через слот miniPCIe, припаявшись к линии PCIe2, ведущий от ЦП к одному из чипсетов Atheros (фактически отключив этот чипсет), чтобы иметь возможность расширить возможности штатного контроллера PCIe.

В Kitten Labs пояснили, что выбрали Debian Linux, так как там есть специальная сборка PowerPCSPE для этого типа процессоров (e500/e500v2). В системе со статически скомпилированными пользовательскими двоичными файлами QEMU и правильно настроенными обработчиками binfmt можно было использовать инструмент debootstrap Debian для создания загрузочного пользовательского пространства.

В ходе подключения видеокарты и запуска Debian Linux специалисты использовали графический драйвер amdgpu, но столкнулись с тем, что у amdgpu имеется нерешённая несовместимость с 32-битными платформами. С картой AMD Radeon HD 7470 и использованием более старого драйвера Radeon всё начало работать. Также они потратили несколько дней на исправление игры и механизма рендеринга librw, чтобы они корректно работали на этом нестандартном ПК в режиме big endian.

В Kitten Labs рассказали, что игра GTA: Vice City и движок рендеринга (по крайней мере, в декомпилированной версии) вообще не поддерживают режим big endian. Это приводит к тому, что игра пытается получить доступ к памяти с абсурдными смещениями и практически сразу же вылетает. В итоге инженеры внесли более 100 патчей в код игры, чтобы спрайты в игре не моргали, а структуры нормально загружались.

Но это особо не помогло. Тогда в Kitten Labs связались с автором порта GTA: Vice City для Wii U, так как этот проект поддерживает ЦП IBM Espresso (тоже процессор на базе PowerPC). Разработчик согласился проверить сборку с кодом игры от Kitten Labs и подготовил нужные патчи для запуска GTA: Vice City. Но это тоже не помогло, игра не запускалась без багов и графических проблем.

В Kitten Labs решили установить на роутер Linux с новым ядром и с новыми драйверами Radeon. Проблема была в том, что GCC прекратила поддержку PowerPC SPE, а сборка современного Linux 6.7 с помощью GCC 8 не работает. Однако LLVM/clang только что получил поддержку PowerPC SPE, и оказалось, что новую версию Linux можно собрать с помощью clang. После переустановки новых libglvnd, drm и mesa на новом ядре Linux рендеринг в игре стал работать нормально.

Источник: habr.com

0 0 голоса
Рейтинг новости
0
0
Подписаться
Уведомить о
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии