Независимый разработчик под ником boykopovar представил проект AnyPS5, нацеленный на исполнение бинарных файлов PlayStation 5 в среде операционных систем Windows и Linux. В отличие от традиционных эмуляторов, требующих колоссальных аппаратных ресурсов для виртуализации закрытой архитектуры консоли, создаваемый инструмент представляет собой конвертер исполняемых файлов и слой совместимости. Программа берет оригинальные файлы формата ELF и адаптирует их под архитектуру современных персональных компьютеров на уровне бинарного интерфейса приложений.
В основе разработки находится специализированный релинкер, созданный исключительно средствами стандартной библиотеки C++20. Утилита осуществляет детерминированную пересборку кода, преобразуя структуры данных консоли в нативные исполняемые файлы, включая формат PE для операционной системы Windows. Программа выстраивает таблицы раскрутки стека, адаптирует обработку системных исключений и транслирует вызовы из соглашений SysV ABI в среду исполнения x86-64. Для сборки компонентов под платформу Microsoft в текущей версии задействован инструментарий MinGW-w64 GCC 15.2.0.
Параллельно ведется активное написание собственных замен системных динамических библиотек консоли формата PRX. В составе проекта уже появились реализации базовых функций ядра libkernel, стандартной библиотеки libc, подсистем управления контроллером libScePad, системных служб и даже модулей синхронизации трофеев NpTrophy2. Все нереализованные на текущий момент системные вызовы настроены на выброс информативных исключений в консоль, что позволяет детально отслеживать потребности игрового кода во время выполнения.
Графическая подсистема AnyPS5 построена на трансляции закрытых консольных команд в современные открытые стандарты. Оконный интерфейс и вывод видеоряда реализованы при помощи библиотеки SDL2, а низкоуровневые вызовы библиотек libSceAgc и libSceAgcDriver перенаправляются в графический API Vulkan. Разработчик уже отчитался об успешном прохождении теста с рендерингом треугольника через SPIR-V, кадр которого без ошибок прошел проверку драйвером и отобразился на экране.
Инструмент уже продвинулся значительно дальше синтетических тестов и сумел добраться до основного цикла рендеринга реальной коммерческой игры. Согласно описанию в репозитории проекта, тестовый бинарный файл успешно преодолевает стартовую точку входа, инициализирует модули вывода звука и видео, проходит глубокую цепочку вызовов с кадром стека около 64 КБ, а также целиком считывает необходимые шейдерные ресурсы с накопителя.
Главным препятствием на пути к полноценной картинке на экране сейчас выступает подсистема динамической трансляции шейдеров. Консоль Sony использует графическую архитектуру RDNA, чьи инструкции необходимо на лету преобразовывать в формат, доступный видеокартам персональных компьютеров. Выполнение коммерческого приложения останавливается на этапе первой отрисовки, упираясь в блок рекомпилятора шейдеров. Серия последних обновлений в репозитории как раз направлена на создание транслятора векторных, скалярных и пространственных инструкций графического чипа.
Создатель AnyPS5 обозначил жесткую позицию относительно распространения программы. Первые публичные релизы и готовые сборки не будут опубликованы до тех пор, пока хотя бы одна игра для PlayStation 5 не продемонстрирует полноценный и стабильный запуск. Проект распространяется по лицензии GPL-2.0 исключительно в исследовательских целях и не содержит в себе ключей шифрования, прошивок или защищенного авторским правом кода компании Sony.
