# PS4Recomp на Mac: как собрать рекомпилятор PS4-игр и запустить первый .app
Каноническая страница: https://plainews.ru/posts/ps4recomp-apple-silicon-guide
Опубликовано: 2026-11-03T07:01:58.971Z

Пошагово собираем PS4Recomp на Apple Silicon, запускаем рекомпиляцию eboot.bin и разбираемся, почему игра может не стартовать.
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 не содержит функциональности распаковки пакетов.

> **Важно.** Проект находится на ранней стадии. Утилита может завершиться с ошибкой при сборке, собрать приложение с падением на старте или остановиться на не реализованном символе OrbisOS — системного API PlayStation 4.

Из подтверждённых автором результатов 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-файлы, а затем компилирует новый бинарник, поэтому итоговая директория сборки — не временный кэш, который стоит автоматически удалять между попытками.

> **К сведению.** Автор отдельно предупреждает: на первом запуске нужен флаг `--copy-resources`, чтобы сформировать `.app`-пакет. На последующих запусках он не требуется, если ресурсы уже были скопированы.

## Соберите 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++ или незавершённой графической реализацией.

## Источники

- Habr AI: Прототип статического рекомпилятора PS4 на Apple Silicon — PS4Recomp
