Microsoft розповіла про те, як працює зворотна сумісність на Xbox One

Microsoft розповіла про те, як працює зворотна сумісність на Xbox One

Зворотна сумісність з Xbox One 


 - велике технологічне досягнення в нинішньому поколінні консолей. Два з половиною роки тому Філ Спенсер (Phil Spencer) продемонстрував у Лос-Анджелесі оригінальну версію Mass Effect для Xbox 360, що працює на апаратній платформі Xbox One. Після вражаючого періоду раннього доступу програма зворотної сумісності розгорнулася в повну силу, і тепер гравцям доступні сотні проектів епохи Xbox 360 для запуску на Xbox One, є кілька поліпшених ігор з підтримкою 4K на Xbox One X.


Дещо просочувалося і раніше. Так, оригінальні виконувані файли Xbox 360 для архітектури PowerPC, схоже, розбираються в проміжний формат, а потім перекомпілюються в код, близький до x86. Також згадувалися якісь блоки апаратної сумісності, інтегровані в однокристальну систему Xbox One, щоб спростити завдання емуляції, але в цілому досі відомо було мало.

"В принципі, у нас є VGPU - графічний процесор Xbox 360, перекомпільований для x86, - і ми виконуємо весь пакет операційної системи Xbox 360 у віртуальній машині, - пояснив Білл Стіллвелл (Bill Stillwell), керівник Xbox Platform. Ми беремо кожну гру і перекомпілюємо її так, щоб вона працювала, але по суті вона запускається як і раніше в оточенні Xbox 360, і наша команда трудиться над грою в кілька етапів ".

На першому етапі команда збирає GPU-шейдери, і те, що пан Стіллвелл називає «Просвітлення (Enlightenments)» - спеціальний термін, який описує відправні точки для поліпшення процесу перекомпіляції ігор, що висуває вимоги до потужностей CPU, а не GPU. Це інформація про те, які інструкції гри призначені для прямого доступу до обладнання, точки виклику функцій і так далі.

Завдання емуляції значно полегшує той факт, що деякі аспекти апаратного дизайну Xbox 360 дійсно вбудовані в чіп Xbox One - зокрема, підтримка форматів текстур і звуку. Завдання емуляції досить непросте, враховуючи той факт, що процесор Xbox 360 використовує архітектуру PowerPC, досить далеку від x86 в Xbox One. Наприклад, розрахунки з плаваючою комою потрібно адаптувати з 40-біт інструкцій в 32-біт з потенційними наслідками для таких аспектів гри, як виявлення зіткнень, але мета Microsoft ясна - мати можливість виконувати ігровий код на своїй віртуальній Xbox 360 якомога ближче до оригінального обладнання. Так, щоб сам виконуваний проект і не зрозумів, що працює не на справжній Xbox 360: тобто незалежно від того, як емулятор перетворює дані, грі повертаються очікувані нею від консолі значення.

У Microsoft є і армія з більш ніж 100 тестувальників, які проходять ігри і збирають тисячі годин відеоданих. На підставі отриманих даних розробники налагоджують емулятор, який стає все більш досконалим з кожним новим перенесенням чергової гри.

Завдання адаптувати код, розроблений для триядерного 6-поточного 3,2-ГГц процесора PowerPC, під малопотужні низькочастотні ядра x86 досить нетривіальне. Теоретично, шість апаратних потоків Xbox 360 можна призначити на конкретні ядра процесора Xbox One, але все дещо складніше. Наприклад, у Xbox One є схожий на Windows планувальник потоків, який розподіляє навантаження, а у 360 він був фіксованим і гранично непротиворечивим. Тому при емуляції Microsoft довелося з метою сумісності переписати власний планувальник потоків: як тільки запускається логотип Xbox 360, на консолі управління потоками переводиться на рейки старої консолі.


В основі своєї зворотна сумісність з Xbox 360 майже цілком покладається на емуляцію. Вона частково спирається на спеціальні апаратні блоки і на деякий секретний інгредієнт (наприклад, Microsoft не поширюється про те, як в емуляторі реалізована підтримка векторних блоків VMX128 з Xbox 360). Однак команда Microsoft зараз знаходиться на тому етапі, що всі можливості і функції Xbox 360 актуальна консоль Xbox One може повторити програмно. І це вражає, адже в кінці ери Xbox 360 багато розробників стали куди менше спиратися на програмні стандарти на кшталт DirectX API і часто використовували доступ до обладнання на більш низькому рівні, щоб витиснути з платформи більше - все це робить перекомпіляцію коду складніше.

При розробці емулятора важливим етапом стала Halo Reach: після виходу зворотної сумісності почали надходити повідомлення преси про те, що ця складна гра виповнюється гірше, ніж на Xbox 360. Microsoft довелося вкласти чимало сил і засобів у розробку нової процедури та інструментів тестування, виявити проблемні місця і забезпечити більш високу ефективність емуляції. Тепер навіть висококласні ігри часом виконуються краще і плавніше, ніж на оригінальній консолі. Частково це обумовлено тим, що команда ставила таку мету спочатку, розуміючи, що потужності Xbox One дозволяють витискати зі старих ігор більше.

Microsoft дотримується щодо зворотної сумісності ряду принципів. Наприклад, компанія не змінює жодного рядка коду або ресурси гри, навіть у сценаріях, де це було б недобрим. Наприклад, проблеми з нерівномірним рендерингом кадрів в Halo 3 на Xbox 360 виправлені на Xbox One, але лише за рахунок додаткової потужності GPU. Всі поліпшення здійснюються виключно засобами емулятора.

До речі, нова методика тестування допомогла поліпшити і роботу ігор Xbox One на оновленій платформі Xbox One X, яка в силу деяких архітектурних змін теж частково зажадала емуляції. Xbox One X принесла не тільки поліпшену продуктивність, але і зменшений час завантаження ресурсів, 16-кратну апаратну анізотропну фільтрацію і навіть підтримку технологи FreeSync для синхронізації частоти кадрів в іграх з частотою дисплея. На додачу вже сім ігор Xbox 360 отримали принципові поліпшення на Xbox One X на кшталт підтримки виконання в рідній роздільній здатності 4K завдяки методу Хеччі, названому на честь розробника Еріка Хеччі (Eric Heutchy), який придумав технологію.

"Коли гра візуалізується в оригінальний цільовий рендер, наш віртуальний GPU Xbox 360 розпізнає розміри і масштабує цільовий рендер, так що ми отримуємо, по суті, копію ресурсу з високою роздільною здатністю, заховану в пам'яті Xbox One, - пояснює Білл Стілвелл. - Гра не знає про це, але оскільки ми маємо справу з емулятором, коли ця поверхня використовується як текстура на екрані, ми можемо підмінити її на версію з високою роздільною здатністю. Використовуються виключно ігрові ресурси, і оскільки ми задіює цей RAM-кеш, все це відбувається дуже швидко. Це випадок, коли підхід швидше штучний, ніж фабричний. Нам доводиться проходити кожну гру і оцінювати, як вона змінюється, особливо коли ми використовуємо ресурси більш високої роздільної здатності і масштабуємо кінцеву роздільну здатність в 9 разів (в 3 рази по кожній осі). У результаті ми домагаємося тієї ж самої або більш високої продуктивності з текстурами підвищеного дозволу ". 

Часом результат поліпшень на Xbox One X виявляється вельми вражаючим. І не тільки з точки зору зростання кількості пікселів, але і в області фільтрації текстур і підвищеної деталізації моделей, як у Fallout 3 і Halo 3. В іграх Assassin's Creed для Xbox 360, які отримали поліпшення на Xbox One X, істотно поліпшені тіні (вони розраховуються з підвищеною в 9 разів деталізацією). Точно так само попередньо розраховані і поєднані з текстурами тіні в Mirror's Edges залишилися без змін, а ось динамічні отримали збільшену роздільну здатність.

Halo 3 і Mirror's Edge до того ж отримали підтримку HDR, що стало результатом роботи команди зворотної сумісності і групи просунутих технологій (Advanced Technology Group). У теорії всі ігри покоління Xbox 360, що мали 10-бітний конвеєр рендерінга (висновок раніше здійснювався завжди у 8-біт режимі), могли б отримати підтримку HDR, але це непросто. Наприклад, не всі ігри використовували 10-бітову обробку кольорів на всьому конвеєрі рендерінга. До того ж HDR-режим може дещо змінити гру візуально, і деякі розробники не згодні з цим.


Крім семи поліпшених для Xbox One X назад сумісних ігор, Microsoft обіцяє аналогічні нововведення і для деяких інших проектів. Причому поліпшення Xbox One X можна буде відключати: в такому випадку користувачі отримають гру в первозданному дозволі, але з підвищеною продуктивністю, яку може забезпечити нова консоль в режимі емуляції.

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

Image

Publish modules to the "offcanvas" position.