The way I see it, the "level" of emulation used does not necessarily indicate the level of accuracy. Often the two are correlated, but they don't have to be.byuu wrote:... you want to continue with the high-level emulation? No, the individual instructions of the chip need to be figured out precisely, and emulated using pure software. No video cards, no pixel shaders, pure math. But speed is obviously a major problem here.
The DSPs on SNES carts are black boxes. They have input, output, and some unknown internal state. The SNES game can not directly read what this internal state is. This doesn't mean that emulating it in a way that would provide consistent results with what an SNES would under any circumstances requires emulating this internal state at the opcode level of its processor.
Knowing the low level details may give you a better insight at properly modeling the timing information to make the emulation correct. But that doesn't mean that it can't be determined through other means. This is especially true if the timing is rather flat and deterministic, rather than relying on existing state (ie, taking N cycles for each function). My guess would be that not enough has been done to measure the timing of the chips from the SNES's perspective, or else I doubt there would be noticeable errors.
If you require that emulation be done at a lower level than it is done at, arbitrarily, then who is to say that the level you require is low enough? Should it not be done at the microcode, gate, transistor level, molecular, atomic, sub-atomic levels?
I find it rather curious that you often remark on preserving hardware over software. I have to wonder, does emulation really preserve hardware? Surely the instruction set, timing, interaction details that an emulator preserves are mere (relatively) high level consequences of low level circuitry. A gate or transistor level schematic would be closer, but an exact copy of the a piece of hardware could never be made, as if they were exact copies of each other to begin with. I think we both realize that none of this is very important.
Over the years there have been countless designs of digital circuitry, and a majority of these will be forgotten in due time. For all practical purposes almost no one will care. If preserving hardware is the true goal of emulation then I ask why the hardware is worth preserving any more than the circuitry in my watch. Game hardware is a means to an end, to allow us to run software that has been written for it. This is why we are comfortable with using emulators, which do not resemble the original hardware in any way. I believe that what you wish to preserve is the ability to run the software, and this means any software that ever has been or will be ran on it, with no discernible variation from the way it would run on original.
It's no real secret that I'm unhappy about the trend of obsession with accuracy in emulators, when many of the people demanding this don't actually understand what it is they're demanding. I think that part of this is an attempt for people to distance themselves from those who pirate software (of course, "preserving" a platform still means that there's an intention software for it will be obtained, for free, one day in the future). Another part is perfectionism, as well as mob mentality (why it's basically taboo to think NESticle isn't an abomination, regardless of whether or not you were around when it was by far the best NES emulator, and a milestone one at that).
I do agree that the N64 emulation scene isn't really what it could be, but the same goes for a number of platforms. Not everything can have reverse engineering efforts like NES (or even SNES), and I wish some people would realize this. I personally would be thrilled if more testing was done with PC-Engine, so I didn't have to get people to run test code just to grasp at some numbers.
In theory low level emulation of N64's RSP may never be needed to run all software written for N64 100% accurately. It's just probably easier to do this than to reverse engineer all of the custom microcodes and model the timing exactly. Of course this wouldn't hold for any homebrew author that does his/her own microcode in the future, but let's be realistic here. N64 homebrew never was exactly thriving, and it doesn't look like it has much of a future.
(I'm just tired of people calling an emulator worthless when it isn't up to their gold standard of "accuracy")