There is no such thing as a perfect emulator .. even if it does run at 100% full speed. Emulation by its very nature is inaccurate. And the thing that's always the furthest off is sound.
I don't agree that emulation by its very nature is inaccurate. I believe that emulators are only inaccurate when they fail in the emulation task in some capacity.
If a specific piece of hardware has ALL the capability of another piece of inferior hardware then a 100% emulation is definitely possible.
Your comment about sound: I can see that a 44.1Khz+ emulation of an analog sound chip could never be truly accurate because by nature an analogue synth chip does not output a sample, but an emulator would, so because a high resolution sample is only a
representation of the original wave it is an approximation rather than a true 100% emulation. However, if the original sound hardware was a DAC sample-playing technology, perfect emulation can be achieved on a machine capable of playing samples at the same sample rate or faster.
As for CPUs: If a software emulated processor moves bytes around in memory just like its hardware counterpart and takes the exact same number of emulated clock ticks to achieve this, and if it executes interrupts at the exact same timeframe as its hardware counterpart - how is this in any way inaccurate by nature? I don't think it is.
I believe the only reason some emulated CPUs used in some GP2X emulators are considerred inaccurate is because they are known not to duplicate the entire hardware functionality of the chip in question. This is down to bugs or known ommissions in the feature set - nothing to do with the very nature of emulation.
If what you claim was true, there would be no software CPUs that perfectly emulated their hardware counterparts on any platform - but obviously there are.
I would say that emulation can't be completely accurate when it comes to the entire EXPERIENCE. Let me give you an example.
We start with a PC, an NES emu, and a Super Mario Brothers 3 rom. Boot her up, play with the keyboard. The actual emulation is perfect. Every bit of sound is exact, every pixel perfectly placed, it's exactly as it should be.
But, you didn't play NES games with the keyboard. You need a gamepad. So, you go buy a common USB gamepad.
Still, it doesn't feel quite right. You go online and get one of those cool USB gamepads that are built out of NES controllers. The controller feels perfect, the game looks right, it's wonderful!
But...You didn't play your NES sitting in an office chair in front of a moniter, you played it on the couch in front of your TV.
So, relocate. We play it on an HTPC, sitting on the couch. It's wonderful, the game's playing, the controller works right...
But, still, there's that underlying OS, and the way you select the rom, and it just doesn't feel right.
Okay, easily fixed. We set up a front-end it boots into.
Still, it's not right, and the HTPC doesn't look anything like an NES.
So we switch to an NES PC. We even take an NES' controller plug and port, and wire it up so they work as USB ports and you can plug the NES controller in just like the old days.
Still, you don't put anything in...
Okay. We start taking the disc of roms out, have the disc drive open out of the cart door, and it's just GREAT.
But you don't put discs into an NES, you put carts.
You get what I'm saying? By the time you have something that's perfect, you're just holding an NES and some carts.
Of course, I might have COMPLETELY missed the point.