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 и несколько библиотек для компиляции зависимостей.
В исходной инструкции проекта команда для установки инструментов разработки указана так:
xcode-select installlДалее установите CMake, Ninja, FreeType, FFmpeg и язык Go. Эти пакеты нужны как самой сборке, так и подключаемым компонентам проекта: в частности, Ninja запускает финальную сборку сгенерированного приложения.
brew install cmake ninja freetype ffmpegПосле установки зависимостей убедитесь, что вы работаете в обычной локальной папке с достаточным свободным местом. Рекомпилятор создаёт .s- и C-файлы, а затем компилирует новый бинарник, поэтому итоговая директория сборки — не временный кэш, который стоит автоматически удалять между попытками.
Соберите PS4Recomp и три встроенные зависимости
Репозиторий нужно клонировать с флагом --recursive: внутри есть сторонние компоненты, включая SPIRV-Cross, LibAtrac9 и GCN Shader Recompiler. Без рекурсивного клонирования каталоги в 3rdparty могут оказаться неполными, а команды ниже не смогут найти исходный код библиотек.
git clone --recursive https://github.com/wie-project/PS4Recomp.git
cd PS4RecompПервой собирается SPIRV-Cross — библиотека для перевода шейдеров в Metal Shading Language. Команда компилирует перечисленные C++-файлы в объектные .o, упаковывает их в статическую библиотеку libspirv-cross.a, а затем удаляет промежуточные объекты.
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.
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 собирает библиотеку, а затем она копируется в ожидаемое место.
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 в корне репозитория.
go build -o ps4-recomp ./cmd/ps4-recompЗапустите рекомпиляцию eboot.bin в отдельную папку
Для первого запуска подготовьте путь к распакованной игре. Внутри должен быть главный исполняемый файл eboot.bin, а параметр --app-dir должен указывать на корень той же распакованной папки, где лежат ресурсы и модули игры.
Команда ниже — формат, который приводит автор. Замените значения в одинарных кавычках на свои пути, но не меняйте имена флагов: --app-dir задаёт папку игры, --copy-resources переносит ресурсы для первого .app, а -o определяет каталог результата.
./ps4-recomp 'путь/к/игре/eboot.bin' --app-dir 'путь/к/игре' --copy-resources -o 'путь/к/папке/сборки'В процессе PS4Recomp анализирует eboot.bin и все .prx-модули, определяет используемые функциями символы и зависимости. Затем инструмент строит графы, восстанавливает таблицы переходов — jumptables — и генерирует ассемблерные .s-файлы вместе с C-кодом.
На финальном этапе Ninja собирает итоговый бинарник в восемь потоков. Именно этот этап превращает статический анализ и сгенерированный код в macOS-приложение, которое можно попытаться запустить из созданной папки сборки.
Если вы уже получили .app и не очищали выходной каталог, повторите команду без копирования ресурсов. Это сократит лишнюю работу при очередной попытке рекомпиляции.
./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++ или незавершённой графической реализацией.