I've always wondered though, why is emulation still slow when it's run on a PC which is actually faster than the original hardware? Sorry for being a dumbass...
There are two main schools of thought on emulation, three if you count the hardware stuff we have been talking about in this thread.
1) System level replication.
2) Dynamic recompilation.
Processors are very dumb devices and they all speak different languages when it comes to the binary stuff they are decoding.
Ignoring that you are running an operating system on top of your machine where say a SNES might have copied a value into a register you would have to take that value, decode it, convert it into an instruction/series of instructions to do it, do the instruction and then post the results. At the same time you would also be having to emulate the sound chips, reading the cart/disc/whatever, emulate the graphics chips, emulate any non processor stuff (if you want to copy a chunk of cart into memory then it does not have to go through the CPU, usually using something called DMA/direct memory access)......
As the original system, and code for it, all expects this to happen reasonably in step and your little single serial processor in your PC gets to do the job of several chips, probably specialist chips at that*, you end up needing more processing power to do it all in real time.
*the audio chip does audio, it can then probably do a fancy audio technique with its baked in silicon that no x86 processor would ever justifiably include in its instruction set, leaving the emulator author to figure out a way to replicate the effect with basic maths (always doable, just potentially long winded).
Dynamic recompilation makes this easier -- processors are also quite simple devices in terms of the maths they can do where my program might not be. High level languages/compilers aim to help me avoid having to think how to do my crazy maths in small steps. However it will still be rendered into small steps for the CPU to handle, a dynamic recompiler aims to see this, figure out what is actually trying to do, generate some new code and make it so the host system has something a bit more native to it to run and that can be a lot quicker. You still have the potential issues of having to handle many different chips, even more on newer systems, but such a thing is still slower than having a dedicated chip do it.
Not all games need everything to march in lock step like the original system though and not everything the original system did needs to be replicated (the original system does a sinusoidal decay for the audio, go linear and for most it will sound close enough sort of thing all while taking less resources to do). As previously covered most people just want to play a game and that means you can take a shortcut to make said game happen. Developers on old systems and new will often learn the hardware and try to wring every last drop of speed out of it* so these shortcuts can trouble some games. This sort of thing is why the "emulation will never be perfect" mindset can exist and be justifiable in some cases, at least until we have transistor or FPGA driven stuff and we all start arguing about acceptable tolerances were for the original run (consoles are supposed to be a singular platform but you still have allowable tolerances, things like the xbox even having quite different speeds in RAM so they could get it out of the door cheaply).
*this also applies to do the downsides and bugs. For instance consumer grade CRTs were not great and would have a certain amount of blur. Some used it as a crude form of anti aliasing, others even used this blur to blend textures on a wall.
http://bogost.com/games/a_television_simulator/ has some
Also have a read of
http://arstechnica.com/gaming/2011/...-3ghz-quest-to-build-a-perfect-snes-emulator/
and if you are up for it have a watch of
FPGA by the way = field programmable gate array. They are chips composed of things you can program to form computing units. Mostly they are used where fabricating a chip would be too expensive but you want something nice and custom done. However as you are quite literally making a logic device using software but rendered in hardware you can replicate existing chips perfectly if your FPGA has enough gates in it to do it.
They are an utter pain in the arse to use well but it is still doable
http://www.eevblog.com/2013/07/20/eevblog-496-what-is-an-fpga/ has more.