Все фанаты консолей от Microsoft знают, что ещё в 2015 году компания показала возможности запуска игр для Xbox 360 на Xbox One. Тогда Фил Спенсер продемонстрировал в Лос-Анджелесе оригинальную версию Mass Effect для «трёхсот шестидесятой» на Xbox One.

С тех пор сотни игр были перенесены в более современную консоль. Некоторые даже получили поддержку 4K на Xbox One X. И вот теперь стало известно, как это всё работает.

Ранее уже было известно, что исходные исполняемые файлы Xbox 360 для архитектуры PowerPC, похоже, переводятся в промежуточный формат, а затем перекомпилируются в код, близкий к x86. Также упоминались некие блоки аппаратной совместимости в чипе Xbox One, которые упрощают эмуляцию. Однако точных данных не было

Как сообщает Eurogamer, для выполнения используется виртуальная машина.

В принципе, у нас есть VGPU — графический процессор Xbox 360, перекомпилированный для x86, — и мы исполняем весь пакет операционной системы Xbox 360 в виртуальной машине. Мы берём каждую игру и перекомпилируем её так, чтобы она работала, но по сути она запускается по-прежнему в окружении Xbox 360, и наша команда трудится над игрой в несколько этапов

Билл Стиллвелл, руководитель Xbox Platform

По его словам, на первом этапе разработчики собирают GPU-шейдеры и «Просветления (Enlightenments)». Последнее – это специальный термин, который описывает исходные точки для улучшения процесса перекомпиляции игр. При этом он требует мощного процессора, а не графического ускорителя. Эти данные нужны для того, чтобы система понимала, том, какие инструкции игры предназначены для прямого доступа к оборудованию, точки вызова функций и так далее.

При этом поддержка форматов текстур и звука в виде аспектов аппаратного дизайна Xbox 360 встроена в чип Xbox One. Однако всё ж больше система полагается на эмуляцию и трансляцию одной архитектуры в другую. Если говорить максимально просто – это похоже на Wine на Linux, но ещё и с эмуляцией аппаратной архитектуры.

При этом Microsoft придерживается в отношении обратной совместимости ряда принципов. К примеру, компания не меняет код и ресурсы игры, даже если это нужно. Так, проблемы с неравномерным просчётом кадров в Halo 3 на Xbox 360 исправлены на Xbox One исключительно за счёт мощности GPU. Все улучшения осуществляются исключительно средствами эмулятора. В целом же выходит, что игры Xbox 360 работают в эмуляции лучше, чем на оригинальной консоли.

Интересно, что игры Xbox One на обновлённой платформе Xbox One X также требуют частичной эмуляции, но в результате это повышает разрешение картинки с 720p до 4K.

Когда игра визуализируется в оригинальный целевой рендер, наш виртуальный GPU Xbox 360 распознает размеры и масштабирует целевой рендер, так что мы получаем, по сути, копию ресурса с высоким разрешением, спрятанную в памяти Xbox One. Игра не знает об этом, но поскольку мы имеем дело с эмулятором, когда эта поверхность используется как текстура на экране, мы можем подменить её на версию с высоким разрешением. Используются исключительно игровые ресурсы, и поскольку мы задействует этот RAM-кеш, всё это происходит очень быстро. Это случай, когда подход скорее штучный, чем фабричный. Нам приходится проходить каждую игру и оценивать, как она меняется, особенно когда мы используем ресурсы более высокого разрешения и масштабируем конечное разрешение в 9 раз (в 3 раза по каждой оси). В итоге мы добиваемся той же самой или более высокой производительности с текстурами повышенного разрешения

Билл Стиллвелл

При этом интересно, что архитектуры Xbox One и PlayStation 4 очень похожи, так что дальнейший прогресс Microsoft в деле совместимости и улучшения старых игр на новой системе становится важной отличительной чертой именно её платформы. Тем более, что эмулируются и игры оригинальной Xbox. Японцам самое время запустить аналогичную программу.