PS4Recomp — ранний прототип статического рекомпилятора, который переводит x64-бинарники PlayStation 4 в ARM64-приложение для Apple Silicon с графикой через Metal. На ноябрь 2026 года проект уже запускает The Last Of Us Remastered и Bloodborne: Game of the Year Edition, но результат зависит от конкретной игры и полноты реализации OrbisOS.

Этот гайд поможет собрать утилиту на Mac с Apple Silicon, подготовить распакованную игру и запустить рекомпиляцию. Это не эмулятор «установил и играешь»: PS4Recomp генерирует исходники и собирает новый бинарник, поэтому ошибки на этапах анализа, Ninja-сборки и старта приложения сейчас ожидаемы.

Сначала проверьте, подходит ли вам эксперимент

PS4Recomp рассчитан на Mac с процессором Apple Silicon, а не на Intel-модели. Автор проекта выбрал статическую рекомпиляцию вместо Rosetta 2 и JIT-компиляции: утилита анализирует исполняемый файл игры и её модули, переводит инструкции AMD64 в ARM64 и затем собирает результат под macOS.

Для запуска понадобится распакованная папка игры с eboot.bin и файлами .prx. Автор предлагает извлекать содержимое пакета сторонней утилитой ps4-pkg-tools. Откуда получить игру или её дамп — ответственность пользователя; сам PS4Recomp не содержит функциональности распаковки пакетов.

Из подтверждённых автором результатов The Last Of Us Remastered запускается и работает примерно в 20 FPS на MacBook Pro M1 с 8 ГБ RAM. Bloodborne: Game of the Year Edition тоже запускается, но показывает 6–20 FPS и заметные графические артефакты. Это конкретные результаты на упомянутом железе, а не гарантия производительности на любом Mac.

ИграЧто происходит после рекомпиляцииОграничения, описанные автором
The Last Of Us RemasteredИгра запускается и работоспособнаОколо 20 FPS на MacBook Pro M1 с 8 ГБ RAM
Bloodborne: Game of the Year EditionИгра запускается и доступна для игрыПримерно 6–20 FPS и много графических глюков
Hogwarts LegacyПереводится в целевой кодПадает при инициализации ICU из-за локалей
Hollow Knight: SilksongДоходит почти до первого кадраПадает на раскрутке исключений C++

Установите инструменты до клонирования репозитория

PS4Recomp использует Go как основу рекомпилятора, а C/C++, Objective-C/C++ — для рантайма, Metal, шейдеров и macOS-частей приложения. Перед сборкой потребуются инструменты разработки Apple, Homebrew и несколько библиотек для компиляции зависимостей.

В исходной инструкции проекта команда для установки инструментов разработки указана так:

bash
xcode-select installl

Далее установите CMake, Ninja, FreeType, FFmpeg и язык Go. Эти пакеты нужны как самой сборке, так и подключаемым компонентам проекта: в частности, Ninja запускает финальную сборку сгенерированного приложения.

bash
brew install cmake ninja freetype ffmpeg

После установки зависимостей убедитесь, что вы работаете в обычной локальной папке с достаточным свободным местом. Рекомпилятор создаёт .s- и C-файлы, а затем компилирует новый бинарник, поэтому итоговая директория сборки — не временный кэш, который стоит автоматически удалять между попытками.

Соберите PS4Recomp и три встроенные зависимости

Репозиторий нужно клонировать с флагом --recursive: внутри есть сторонние компоненты, включая SPIRV-Cross, LibAtrac9 и GCN Shader Recompiler. Без рекурсивного клонирования каталоги в 3rdparty могут оказаться неполными, а команды ниже не смогут найти исходный код библиотек.

bash
git clone --recursive https://github.com/wie-project/PS4Recomp.git
cd PS4Recomp

Первой собирается SPIRV-Cross — библиотека для перевода шейдеров в Metal Shading Language. Команда компилирует перечисленные C++-файлы в объектные .o, упаковывает их в статическую библиотеку libspirv-cross.a, а затем удаляет промежуточные объекты.

bash
cd 3rdparty/spirv-cross
clang++ -O3 -std=c++17 -c spirv_cross.cpp spirv_cross_parsed_ir.cpp spirv_parser.cpp spirv_glsl.cpp spirv_msl.cpp spirv_cfg.cpp spirv_cross_c.cpp
ar rcs libspirv-cross.a *.o && rm -f *.o
cd ../..

Следом соберите LibAtrac9 — компонент для работы с аудио. Здесь используется компилятор C clang, а статическая библиотека после сборки должна лежать в каталоге 3rdparty/libatrac9.

bash
cd 3rdparty/libatrac9
clang -O3 -c C/src/*.c
ar rcs libatrac9.a *.o && rm -f *.o
cd ../..

Последняя внешняя зависимость — GCN Shader Recompiler. По описанию автора, это вырезанный и модифицированный компонент из shadPS4, отвечающий за разбор и перевод шейдеров. CMake создаёт каталог build, Ninja собирает библиотеку, а затем она копируется в ожидаемое место.

bash
cd 3rdparty/gcn-recompiler
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
ninja -C build
cp build/libgcn_recompiler.a .
cd ../..

Когда все три библиотеки готовы, соберите основной CLI-инструмент. Результатом станет исполняемый файл ps4-recomp в корне репозитория.

bash
go build -o ps4-recomp ./cmd/ps4-recomp

Запустите рекомпиляцию eboot.bin в отдельную папку

Для первого запуска подготовьте путь к распакованной игре. Внутри должен быть главный исполняемый файл eboot.bin, а параметр --app-dir должен указывать на корень той же распакованной папки, где лежат ресурсы и модули игры.

Команда ниже — формат, который приводит автор. Замените значения в одинарных кавычках на свои пути, но не меняйте имена флагов: --app-dir задаёт папку игры, --copy-resources переносит ресурсы для первого .app, а -o определяет каталог результата.

bash
./ps4-recomp 'путь/к/игре/eboot.bin' --app-dir 'путь/к/игре' --copy-resources -o 'путь/к/папке/сборки'

В процессе PS4Recomp анализирует eboot.bin и все .prx-модули, определяет используемые функциями символы и зависимости. Затем инструмент строит графы, восстанавливает таблицы переходов — jumptables — и генерирует ассемблерные .s-файлы вместе с C-кодом.

На финальном этапе Ninja собирает итоговый бинарник в восемь потоков. Именно этот этап превращает статический анализ и сгенерированный код в macOS-приложение, которое можно попытаться запустить из созданной папки сборки.

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

bash
./ps4-recomp 'путь/к/игре/eboot.bin' --app-dir 'путь/к/игре' -o 'путь/к/папке/сборки'

Где ломается: от Unity-исключений до неполного OrbisOS

Главное ограничение PS4Recomp — покрытие системных функций и особенностей исполняемого кода ещё не завершено. Если утилита останавливается на не реализованном символе OrbisOS, это означает, что игре понадобилась системная функция PS4, для которой в рантайме проекта пока нет реализации.

Отдельный класс проблем связан с движками игр. По наблюдению автора, проекты на проприетарных и кастомных движках сейчас работают лучше, чем на универсальных. Hollow Knight: Silksong почти доходит до первого кадра, но рекомпилятор пока не умеет обрабатывать раскрутку исключений C++, что временно блокирует, по оценке автора, работу многих Unity-игр.

Hogwarts Legacy показывает другой сценарий: перевод проходит, но приложение падает на инициализации ICU. Автор связывает проблему с локалями, однако готового исправления в описании проекта нет. В таком случае повторная сборка с теми же параметрами сама по себе не гарантирует иной результат.

СимптомЧто это означает в текущем состоянии проекта
Ninja завершается ошибкойНе удалось собрать сгенерированный набор файлов в итоговый бинарник
Приложение сразу падаетРантайм или переведённый код столкнулся с неподдержанным сценарием
Стоп на символе OrbisOSНужная системная функция PS4 пока не реализована
Первый кадр не появляется у Unity-игрыВозможна проблема с обработкой исключений C++
Игра работает с артефактамиРеконструкция графики и Metal-слой ещё неполны

Что попробовать дальше

Сначала берите игру с уже описанным статусом: The Last Of Us Remastered или Bloodborne: Game of the Year Edition дадут более понятную точку отсчёта, чем полностью непроверенный тайтл. Если экспериментируете с другой игрой, сохраняйте отдельную папку вывода для каждой попытки — это упростит сравнение результатов.

Полезно также следить за тем, на каком этапе прекращается работа: анализ модулей, генерация .s и C-файлов, сборка Ninja или запуск готового приложения. Для разработчика это важнее, чем просто факт падения: так можно отличить проблему входных файлов от ограничения рекомпилятора или его рантайма.

FAQ

Что делает PS4Recomp?

PS4Recomp статически переводит x64-код PS4-игры в ARM64-код для Apple Silicon, генерирует исходные файлы и собирает macOS-приложение с графическим слоем Metal.

Можно ли запустить любую игру с PlayStation 4?

Нет. Проект находится на ранней стадии: часть игр не собирается, другие падают на старте, а некоторые останавливаются на не реализованных символах OrbisOS.

Нужна ли Rosetta 2 для работы PS4Recomp?

Автор проекта выбрал подход без Rosetta 2 и JIT. Целевой код собирается для ARM64 на Mac с Apple Silicon.

Зачем нужен --copy-resources?

Флаг нужен при первом запуске, чтобы получить .app-пакет с ресурсами игры. При следующих запусках его можно не указывать, если ресурсы уже находятся в папке сборки.

Почему после успешной компиляции игра всё равно падает?

Успешная сборка означает только, что Ninja создал бинарник. Во время запуска игра может обратиться к не реализованной функции OrbisOS, столкнуться с проблемой локалей, исключений C++ или незавершённой графической реализацией.

Источники