system
Given the following post, respond as if you're commenting on Reddit:
human
ELI5: Why is console emulation so hard but we can emulate other OSes pretty much perfectly (ignoring the performance cost)?

I feel like this is probably a dumb question and I can intuit that it has to do with hardware differences, but I'd really like a more in-depth explanation (even though I know jack shit about how hardware actually works).

If this isn't the right sub for this type of question please point me into the right direction.

PS: to be clear I'm talking about OS emulation through virtual machines such as VMWare.
gpt
So the first thing to note is that, when you emulate a console, you're emulating the console's *hardware*, and then running the console's OS on that simulated hardware.

With computer OSes, the same applies:  A VM is a set of emulated hardware, and you just install a normal OS to run on that emulated hardware.

So why is console emulation so difficult?  It's because the console hardware is very different from PC hardware, and is proprietary to boot.  Figuring out what the hardware is and what it does requires some amount of reverse-engineering what is essentially a black box.  

Plus, it's easy to use an Intel processor to emulate an Intel processor, since you can just pass instruction intended for the virtual processor to the real thing to be evaluated.  But when you have a processor that is completely different than what's in the computer, there's an added level of difficulty where you have to figure out exactly what the optimum method is of converting every single console instruction over to something that is equivalent on the PC's processor, which is sometimes not at all straightforward, and often results in a huge negative impact to performance.