Андрей Смирнов
Время чтения: ~10 мин.
Просмотров: 2

RPCS3 Begins to Emulate Several Awaited AAA Exclusives. Here’s How We’ve Done It!

Команде RPCS3 удалось добиться стабильных 22-30 FPS.

Команда разработчиков RPCS3, самого известного эмулятора консоли PlayStation 3, отчиталась о проделанной ими работе. Они выпустили видео, в котором показали прогресс в эмуляции God of War 3. Впервые игра была запущена на их системе ещё летом – во втором ролике вы можете посмотреть, как она выглядела до кропотливой отладки. Последняя версия эмуляции выдаёт стабильные 22-30 FPS, а также приятную плавную картинку в заставках.Старая версия эмулятора:Также разработчики эмулятора значительно улучшили производительность следующих проектов, исправив погрешности в отрисовке текстур, шейдеров и в правильной геометрии моделей: Atelier Escha & Logy: Alchemists of the Dusk Sky, Nier: Gestalt и Nier: Replicant, Tales of Vesperia, Uncharted 2: Among Thieves и Killzone 3.

Также по теме

Также по теме

Подписчики PS Plus получат в сентябре Destiny 2 и God of War 3

Кратос добрался до ПК с помощью фанатского мода для GTA V

Топ-10 скандальной игровой рекламы

Новости smi2.ru

Table of Contents

SPU Improvements by JarvesRSX Improvements by kd-11List of known Improved GamesClosing Words

SPU Improvements by Jarves

There were two main changes to the SPU emulation that brought us to this point of allowing so many newer titles to progress past ‘Intro.’ Let’s take a quick look at both individually.

SPU Interrupt Fix

Many titles in RPCS3 ‘hang’, but in the case of the titles mentioned above, they do not actually crash, and the fps counter would still change with just a black screen. This normally would be mistaken for RPCS3 just being slow and the game taking a bit to load, but opening up the debugger in RPCS3 tells a different story. The games would loop over the same code on both the PPU side and SPU side. In this case, they are waiting on something, but what?

<center>‘The Last of Us’. More like – ‘The Last Loop That Will Ever Execute’</center>Moving the PC to address 0 of an SPU thread explains more. Most games will have just 0 (null) written there, but some actually have a branch there.

<center>This small group of branches has a big impact on what happens on the SPU</center>See, the only reason there would be code there is because the game relies on what’s called an Interrupt. Basically what happens, is, when certain conditions are detected behind the scene of the SPU, the SPU abandons the current executing code and instead jumps to location 0 and executes that code instead. So what sweeping changes were needed to support this? Well, none really, as I found out, most of the code was already in the emulator as is. In fact, the main issue was the internal check to make the jump happen in RPCS3 was wrong. A small, but welcome change nonetheless! But then I found that there was a bit more to this story after finding this.

SPU MFC Queue Stall Fix

That last statement from above is key; the emulation of the MFC in RPCS3 has only ever supported in-order executing. Up until these new titles started booting did we finally see SPU code actually request a transfer be held, or stalled, so there was never a reason to change or implement it. I’ve not only fixed the emulation of MFC so it stalled, or held, certain requests by the SPU, I also added out-of-order execution when encountering these special transfer requests. This ended up bringing a slightly more accurate MFC emulation, along with killing some random crashes in these new titles.

After these needed SPU changes were made to get games booting, kd-11 tackled some of the graphic issues in them.

RSX Improvements by kd-11

It has been an exciting month since it was decided earlier on to finally present the SPU improvements code by Jarves. While this means that more games successfully boot, it also means rpcs3 graphics back-end is exposed to games utilizing more advanced techniques and new bugs were inevitably going to get introduced.

Before, I tackled any new games that would be bootable, I decided to take a look at games that were already relatively stable that presented similar looking bugs based on early game screenshots of God of War 3. It is usually a lot easier to debug a game that boots successfully since you can make progress a lot faster if the code doesn’t randomly crash every few seconds. For this task, I decided to look into Dark Souls 2 which had multiple problems from tone-mapping to depth precision.

1. Dark Souls 2

2. God of War: HD Collection

<center>God of War I: Before vs. After</center>

3. Demon’s Souls and Vulkan ZCull

<center>Demon’s Souls: Before vs. After</center>

4. Uncharted

Testers had reportedly gotten Uncharted 1 to boot as well as its demo. There were many problems with it, including spamming the infamous “Texture upload requested but texture not found” error as well as broken HDR pipeline and misaligned screen-space effects. Luckily this one was not too difficult since most of the work was already done when investigating Dark Souls 2. A few texture cache fixes later and the game was graphically okay, with the exception of broken shadows, but that could wait since there were more pressing issues.

5. Ratchet & Clank

Ratchet & Clank HD I, II, III and IV games were also booting with the SPU fixes, but there was a minor problem where there was no display output. To be more accurate, sampled clamped edge artifacts were all over the screen meaning that a texture was accessed outside its boundary in the vertical axis. The issue came down to a bad interpretation of the s1 data type when inserted via immediate commands. Another issue was missing loading screens which were fixed by aligning data writes in the float3 format to 16 bytes (essentially float4 configuration).

ratchet1_thisisfine.jpg

<center>Ratchet & Clank I, II, III HD games and Ratchet: Deadlocked/Gladiator rendered Intros, Menus and Ingame like this</center>

6. God of War 3

<center>God of War 3 Demo: Before and After first batch of fixes</center>

List of known Improved Games

Note: This is far from being a complete list of improved games. There are surely many other games that also improved from the aforementioned changes. Obviously, there’s no way for us to test even half of the huge library that is the PS3’s. It’s up to you to retest your games and find out if and how they improved.

God of War I & II

gow2.jpg

<center>God of War II</center>

God of War III

<center>Interpreter vs. Fixed Recompiler</center>Next, kd-11 started looking into the graphical bugs. As described in kd-11’s RSX writeup above, this game uncovered many RSX related emulation bugs. As of now, work into debugging those is still ongoing, but some progress has already been made.gow3_soon.jpg

<center>Here is a preview of the work-in-progress fixes that are currently being worked on (as of this post’s release). God of War 3 when? Soon!</center>

God of War: Ascension

There’s still a weird looking bug with clipping on this one. Nevertheless, it also now goes Ingame!

Uncharted 1

Uncharted 1 now goes Ingame! Performance is not ideal yet, but progress on graphics has been done already as described by kd-11 in his above writeup.

uncharted1_1.jpg

Uncharted 2

Uncharted 2 previously crashed after the loading icon (spinning dagger). Now it shows intro and a few videos, and will crash after playing them.

uncharted2.jpg

Uncharted 3

Uncharted 3 Beta now shows title screen, Uncharted 3 Demo shows menus and Uncharted 3 (Disc) shows the Naughty Dog intro screen, but unfortunately none go Ingame yet.

uncharted3.jpg

Ratchet & Clank I, II, III, IV (Deadlocked/Gladiator)

<center>Ratchet and Clank: I, II, III, IV (Deadlocked/Gladiator)</center>

Ratchet & Clank: Tools of Destruction

Ratchet & Clank: ToD now shows a couple of Intro screens before freezing.ratchetToD.png

LittleBigPlanet II

LittleBigPlanet II now goes Ingame, although for now it needs existing save data utility from a console (dev_hdd0/game/BCUS98245_USER1) in order to work.

lbp2_1.jpg

LittleBigPlanet III

LittleBigPlanet III also goes Ingame, also needing existing save data utility from a console (dev_hdd0/game/BCUS98362_USER1).

lbp3_1.jpg

WipEout HD

WipEout HD now goes past menus and goes Ingame, ready to race! Though do note it may be unstable, but despite that, the framerate is quite good.

wipeout.jpg

inFamous 1

As most of you figured out from our progress report.. Yes, the last screenshot that was on it was inFamous 1. This game now boots and goes Ingame as well, however as stated in the video the full game gets stuck during the tutorial section and you can’t control your character. To get around this you can either load a save or play the demo version. Graphics are sadly heavily broken right now.

inFamous1_1.jpg

inFamous 2

And just like inFamous 1, inFamous 2 now boots to get ingame you need to play the demo version, as it currently requires the SPU interpreter option and doesn’t work with ASMJIT performance is lower than Infamous 1. Graphics are broken just like its predecessor.

Playstation All-Stars Battle Royale

Playstation All-Stars now goes Ingame while also rendering correct graphics. Sadly, the game is unstable with Vulkan and performance isn’t the best.

Heavenly Sword

Albeit a bit unstable at times, Heavenly Sword goes Ingame with good graphics.

Gran Turismo HD Concept

This title now also goes Ingame, and you can play through races. Graphics look good, but as of now they occasionally flicker. It also runs a bit slow, as one would expect.

Gran Turismo 5 Prologue

Gran Turismo 5 Prologue now goes to Menu, unfortunately with broken graphics.

Gran Turismo 5

Gran Turismo 5 now shows the copyright screen.

Gran Turismo 6

Gran Turismo 6 now shows… something.

The Last of Us

Yet another step towards getting the big boi to run in RPCS3. The Last of Us now goes further than the initial loading screen to display the Health Disclaimer and play some audio before dying.

Killzone 3

Killzone 3, which previously showed only a black screen, now shows Intro screens.

Motorstorm RC

Motorstorm RC now goes Ingame with a few graphical bugs.

Closing Words

<center>Also, come check out our YouTube channel and Discord to stay up-to-date with any big news.

This blog post was written by Ani, ssshadow, Jarves and kd-11.

Используемые источники:

  • https://gmbox.ru/materials/39213-na-emulyatore-ps3-zapustili-rabochuyu-versiyu-god-of-war-3
  • https://rpcs3.net/blog/2017/12/01/rpcs3-begins-to-emulate-several-awaited-aaa-exclusives/

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации