Переносим игры с Xbox 360 в нативный C++ с помощью ReXGlue

09 авг 2026
857
115
26
5 дней

ReXGlue banner

Эмуляция консолей уровня Xbox 360 всегда упиралась в высокую прожорливость процессоров. Восьмипоточный PowerPC Xenon требовал мощного железа просто для того, чтобы транслировать инструкции на лету. В проекте Xenia разработчики проделали огромную работу, но даже на современных ПК нагрузка на CPU остаётся ощутимой.

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

Именно этим и занимается проект ReXGlue.

В чём идея статической рекомпиляции

Когда эмулятор работает в реальном времени, он постоянно тратит ресурсы на расшифровку команд PowerPC, управление регистрами и симуляцию архитектуры консоли. Статический рекомпилятор берет бинарник загодя, разбирает его инструкции и генерирует эквивалентный C++ код.

Реклама

Дальше в дело вступает стандартный компилятор вроде Clang или MSVC. Он оптимизирует полученный код под конкретный процессор, используя все доступные инструкции x86-64 или ARM64. На выходе получается обычное нативное приложение.

При таком подходе накладные расходы на трансляцию команд исчезают. Игра задействует мощности ПК напрямую, требуя гораздо меньше ресурсов.

Из чего состоит ReXGlue

Создатели проекта честно указывают, что базируются на исследованиях команды Xenia и разработчиках инструментов XenonRecomp и rexdex.

Архитектуру ReXGlue можно разделить на две составляющие:

  • Инструмент анализа, который читает бинарники Xbox 360 и генерирует функции C++.
  • Райнтайм-библиотека (SDK), берет на себя вызовы системных функций консоли, работу с памятью и вводом-выводом.

Репозиторий rexglue-sdk содержит как раз рантайм и обвязку для сборки. Сам исходный код написан на C и C++.

Проект поддерживает сборку под Windows (amd64) и Linux (amd64, arm64). Наличие версии под ARM64 особенно интересно. Это дает возможность запускать рекомпилированные игры на портативных консолях и одноплатных компьютерах без потерь в кадровой частоте.

Реальное состояние и ограничения

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

Статическая рекомпиляция в целом полна нюансов. В бинарниках часто встречаются косвенные переходы или упакованные данные. Автоматический транслятор не всегда самостоятельно определят границы функций без подсказок. Из-за этого процесс переноса требует создания специфичных конфигураций под каждую игру.

Сейчас у репозитория около 750 звёзд. Сообщество формируется вокруг дискорд-сервера и раздела с релизами на GitHub, где авторы выкладывают ночные сборки.

Кому подойдёт инструмент

Запустить любую игру с Xbox 360 за пару минут через этот инструмент пока не получится. Но проект однозначно заинтересует:

  • Реверс-инженерам и исследователям, изучающим структуру исполняемых файлов PowerPC.
  • Разработчикам трансляторов и компиляторов, ищущим практические примеры генерации кода из одного ISA в другой.

Подробные инструкции по работе с CLI и конфигурационными файлами можно найти в вики репозитория, а сам исходный код доступен на GitHub в репозитории rexglue/rexglue-sdk.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.