Сейчас виртуальными машинами и эмуляторами уже никого не удивишь — пользователи macOS знакомы с Parallels Desktop, на Windows достаточно популярен VMware, ну а любителей олдскульных игр уже не один год радуют эмуляторы PCSX и PCSX2 (соответственно PlayStation 1 и 2), PPSSPP (PlayStation Portable) и даже DOSBox — для запуска игр под DOS. Но, пожалуй, большая часть эмуляторов дают возможность поиграть в игры или для платформ, разменявшим второй десяток лет, или для достаточно слабых консолей типа PSP. И если посмотреть на PlayStation 3, то ей уже больше десятка лет, а ее железо давно уже не кажется мощным, однако на данный момент существует только один ее эмулятор — RPCS3, и, забегая вперед, работает он не самым лучшим образом.
Начнем с процессора консоли, который являлся победой и болью одновременно. Победой это было в том плане, что аж в 2006 году он имел 8 потоков с частотой до 3.2 ГГц (и это в то время, когда на рынок только-только вышли двухядерные Core 2 Duo), что давало крайне внушительную производительность в 218 GFLOPS. Много это или мало? К примеру, «вечный» 4-ядерный i7-2600K — топовый десктопный процессор 2011 года — выдает около 250 GFLOPS, а 6-ядерный i7-8700K прошлого года — порядка 720 (разумеется, я беру одинарную точность, ибо именно ее для внушительности использует Sony). То есть, иными словами, десктопные процессоры лишь спустя 5 лет смогли догнать консольного «монстра».
Вторая «беда» этого CPU — его архитектура: он имел один процессорный элемент на основе архитектуры POWER (как в старых Mac) и 8 вспомогательных («синергических») процессорных элементов (SPE — Synergistic Processor Element). Писать под него было крайне сложно, из-за чего первые игры под PS3 не использовали и половины его потенциала, и лишь спустя несколько лет разработчики приспособились и стали выдавать такие шедевры, как первый Uncharted.
Процессор PlayStation 3 изнутри.
Разумеется, чтобы запускать игры для PS3 на ПК этот процессор нужно эмулировать, и если мы посмотрим на современные десктопные CPU, то они конечно «могут» в аппаратную виртуализацию — к примеру, существуют VT-x и VT-d. Более того — ее зачатки появились еще во времена Pentium 4, и с тех пор она очень неплохо развилась, позволяя терять «всего» 40-70% производительности в зависимости от задачи. Но вот загвоздка — современные x64 процессоры хорошо запускают лишь x86-64 ОС типа Windows, Linux или macOS, а процессор в PS3, как мы помним, основан на архитектуре POWER. И именно из-за этого даже крайне хорошо написанный эмулятор будет терять 80-90% производительности, поэтому если учесть, что наш десктопный процессор сможет тратить все 100% ресурсов на эмулятор (что, конечно же, не так), он должен быть в 5-10 раз быстрее CPU в PS3 — иными словами, производительности даже топового i7-8700K не хватит раза эдак в два.
К счастью, с другими компонентами все лучше: так, консоль имеет 256 МБ оперативной памяти XDR, которая по скорости ближе всего к DDR2 — сейчас даже в умные часы зачастую ставят больше, не говоря уже про смартфоны и ПК, так что тут никаких проблем не будет.
Это же относится и к графике — консоль опирается на графический процессор RSX, который, в свою очередь, основан на достаточно известном в то время чипе G70: к примеру, на нем же базировалась топовая на тот момент видеокарта Nvidia 7800 GTX. С учетом того, что сейчас такой уровень производительности без проблем выдаст любая видеокарта от Nvidia, да и объем в 256 МБ видеопамяти также кажется смешным — с этим опять проблем быть не должно: да, даже если при эмуляции производительность упадет в 10 раз, что вряд ли, ибо видеочипы Nvidia являются обратно совместимыми, поэтому «научить» современный GPU работать с графическим API PS3 — LibCGM — не так и трудно, что подтверждается почти полным отсутствием артефактов в эмулируемых играх — все еще видеокарты уровня GTX 950 вполне должно хватить — а это, согласитесь, далеко не топовая графика.
Единственная загвоздка была в том, что LibCGM — библиотека низкоуровневая, а тот же OpenGL работает через «прокладку» в виде системы. Решение проблемы было найдено в виде API Vulkan, которое является достаточно гибким и позволяет разработчикам приложений писать шейдеры не только на языке GLSL, но и на любом другом, что позволило поднять производительность при использовании LibCGM с современными видеокартами в 3-4 раза — это моментом сделало достаточно много сложных 3D-игр из библиотеки PS3 хотя бы условно «играбельными».
Что касается звука или дисковой подсистемы, то тут проблем не было вообще: еще древние Pentium в бородатые 90-ые умели воспроизводить звук своими силами, так что для современных CPU это не проблема. Ну а что касается диска, то к ним PS3 была вообще не требовательна.
Какой можно сделать вывод из всего вышенаписанного? Единственное, во что упрется эмулятор — это в «слабый» процессор, а что касается графики, то в общем и целом можно безболезненно поднять разрешение рендеринга в несколько раз, и производительности GPU все равно хватит.
Тестовая система включала в себя процессор i7-8700K на частоте в 4.8 ГГц, видеокарту Nvidia GTX 1080 Ti и 16 ГБ DDR4 — конфиг, который без проблем потянет любую современную игру даже в 4K как минимум на высоких настройках графики. Посмотрим, справится ли он с эмуляцией консоли десятилетней давности?
Первое, с чем гарантированно придется столкнуться — это далеко не самое удобное управление с клавиатуры и мыши:
Несколько поколдовав, можно сделать какой-то аналог управления в первых Doom, когда для игры не нужна была мышь: на WASD ходить, и на стрелки двигать прицел. Неудобно? В общем-то да, но не забываем, что на консолях есть автоприцеливание, так что при желании привыкнуть можно, ну а в гонках и казуальных играх проблем быть не должно. Разумеется, при желании можно подключить геймпад, и тогда проблем не будет вообще.
Начнем наш тест с первого Uncharted, запущенного в разрешении 720p и с разрешением рендеринга в 200% — то есть видеокарта должна готовить картинку в 2K, что должно сделать графику приятнее. И в первой же сцене битвы на катере FPS колеблется от 12 до 25, графических артефактов нет вовсе:
Как и следовало ожидать, большая часть потоков процессора серьезно нагружены, а видеокарта прохлаждается, будучи нагруженной едва ли на 20%. Что касается производительности, то ее можно назвать условно «играбельной»: все же управление чисто с клавиатуры или геймпада несколько заторможенное, плюс есть автоприцеливание и низкие уровни сложности, так что как минимум в первой локации проблем с боем не возникло, да и особого дискомфорта от производительности тоже не было.
Увы — с Uncharted 2 все было сильно хуже: во-первых графические артефакты при загрузке:
Во-вторых, FPS был в районе 10-12 кадров, и вот с ним было играть уже тяжело (но уж хотя бы артефактов нет):
Что касается нагрузки, то тут все также: процессор нагружен на 80-85%, видеокарта около 30% — увы, теория о том, что процессора не хватит, подтверждается.
Какие можно сделать выводы? Эмулятор серьезно развивается: я хотел рассказать о нем еще год назад, но 3-4 FPS в первом Uncharted с графическими артефактами, думаю, не то, что многие ожидали бы увидеть. Сейчас можно без проблем поиграть в 2D и 2.5D игры, и при некотором упорстве — в некоторые 3D-проекты. Но все остальное, увы, не столь утешительно: многие скажут, что за несколько тысяч рублей на различных торговых площадках можно купить прошитую PS3 и без всяких проблем играть в любые игры для нее, и будут правы. Для тех, кто не хочет ее покупать — есть сервис PS Now, позволяющий стримить на ПК достаточно большое количество игр для PS3 (правда, тут потребуется наличие геймпада Dualshock 4). Пожалуй, единственный плюс эмулятора в сравнении с оригиналом — это возможность играть с лучшей графикой и сглаживанием: при желании можно и 4К получить, причем топовой видеокарты для этого не нужно. Но, увы, пока все упирается в процессор, так что ждем более мощных CPU и лучшей оптимизации.