We are in 2021 and soon it will be fifteen years since the launch of PlayStation 3 and Xbox 360 to the domestic market and today we do not have a single emulator that allows us to run the games of these consoles on our PCs without performance problems, even using an Intel Next-gen Core or an AMD Zen CPU. Which is in contrast to the fact that older-generation consoles took much less time to be emulated smoothly on PCs.
What is this phenomenon due to? Are PC CPUs evolving more and more slowly? o Are there other factors that make it difficult to create an emulator for these consoles that has optimal performance?
Why can’t current CPUs emulate certain consoles well?
Video game consoles are huge black boxes in the sense that much of their hardware is undocumented, manufacturers do not need to do so due to the fact that they are not going to license the technology to third parties. This gives us a general idea of what each component does, but not exactly how it does it, and knowing this is essential for setting up an emulator.
In the case of older systems, enough reverse engineering has been done to know how they work. The vast majority have been thanks to the combination of knowledge of the architecture and analysis of the chips with patience and an electron microscope. The problem is that as the chips are more complex, the time and effort for the analysis does not compensate, so alternative solutions are sought within the emulators in the form of software mechanisms executed by the CPU (in the emulator) They perform the same task, but not in the same way as the original hardware.
It is as if we wanted to prepare the same dish, but under two different recipes, the difference is that the original console uses specialized hardware, while the emulator uses the CPU of our PC to perform the same task. It is true that most emulators today to render use what we call a wrapper, which is responsible for translating the list of the screen in the proprietary API of the console to something that the GPU of your PC can understand. The problem is that a console is not only composed of CPU and GPU and there are a series of proprietary elements in it that have to be emulated by the CPU of our PC.
If what the CPU has to emulate then becomes as complex as programmable hardware, such as whole processor cores, then the complexity increases enormously. It is not the same to emulate a fixed function unit than a whole CPU, and more with a complexity of several tens of millions of transistors.
How can a CPU emulate a console without losing performance?
One of the things that most promise for the future are embedded FPGAs or eFPGAs, which differ from conventional ones by being in an APU or SoC. Many of the emulation problems are minor things that would be solved if a hardware implementation of the original chips could be added. As we cannot take the original system and implement its chips in our PC, the closest solution is to use FPGA to simulate the original hardware. So the future of emulation goes through the combination of programmable hardware technologies, either via FPGA, CPLD or a combination of both.