PS5 has ‘unified’ memory - the CPU and the GPU both read from the same location. Normal desktop PCs have separate memory for the CPU and GPU. That’s incredibly problematic for emulation - you have to keep track of the CPU preparing drawlists and be sure to transfer them to the GPU before issuing draw calls, and conversely, you may have to copy frame buffer data back to main memory if the CPU is used for calculating tone mapping. That’s incredibly slow if you do it naively, and likely to cause crashes and corruption if you don’t have the timing right.
The reason that RPCS3 and ShadPS4 run faster than a couple of frames per second is that they’ve put huge effort into optimising this, and you still have to disable tone mapping on eg. Demon’s Souls, as it brings a game you could otherwise run at 4K/120 to a standstill.
Yes, you wouldn’t have to translate the x64 bytecode into the platform-native equivalent, although dynamic recompilers are pretty good at that. Lots of high-end emulators will include something like Clang’s LLVM and call it a day. But you still have to emulate the platform, and that’s pretty painful.
Conversely, the reason why a lot of console conversions suck, even on powerful PCs, is because they were optimised around GPU memory updates being cheap. Something like the new Doom engine, that has separate paths and doesn’t make those assumptions, runs amazingly on all platforms.
PS5 has ‘unified’ memory - the CPU and the GPU both read from the same location. Normal desktop PCs have separate memory for the CPU and GPU. That’s incredibly problematic for emulation - you have to keep track of the CPU preparing drawlists and be sure to transfer them to the GPU before issuing draw calls, and conversely, you may have to copy frame buffer data back to main memory if the CPU is used for calculating tone mapping. That’s incredibly slow if you do it naively, and likely to cause crashes and corruption if you don’t have the timing right.
The reason that RPCS3 and ShadPS4 run faster than a couple of frames per second is that they’ve put huge effort into optimising this, and you still have to disable tone mapping on eg. Demon’s Souls, as it brings a game you could otherwise run at 4K/120 to a standstill.
Yes, you wouldn’t have to translate the x64 bytecode into the platform-native equivalent, although dynamic recompilers are pretty good at that. Lots of high-end emulators will include something like Clang’s LLVM and call it a day. But you still have to emulate the platform, and that’s pretty painful.
Conversely, the reason why a lot of console conversions suck, even on powerful PCs, is because they were optimised around GPU memory updates being cheap. Something like the new Doom engine, that has separate paths and doesn’t make those assumptions, runs amazingly on all platforms.